Les tables Domoticz

sqlite

Nous avions vu précédemment l’utilisation d’un outil de gestion de base de donnée SQLite

Cette fois ci explorons la base de données Domoticz à la découverte de ses tables, colonnes, liens entre tables…

Bien entendu cette liste n’est pas exhaustive.

La première table à observer est DeviceStatus

DeviceStatus

Cette table contient la liste des périphériques du menu « Dispositifs »

Je ne vais détailler ici que les champs qui me semblent importants :

Nom Rôle
Id C’est le fameux Idx Domoticz
Name Le nom que vous avez donné à ce matériel
Used 1 si il est utilisé, 0 sinon
BatteryLevel Le niveau de batterie
nValue la nValue (souvent 0) voir API JSON
sValue Les sValue, les valeurs reçues séparées par un ; Voir API JSON
LastUpdate La dernière fois que l’on à vu ce matériel AAAA-MM-JJ HH:MM:SS (2016-01-12 08:04:49)

On y retrouve aussi, le delta de correction de température, le flag de protection ….

Cette table est importante dans la mesure ou elle contient toutes les caractéristiques de nos périphériques tels que les Noms, la date de dernière mise à jour.

Toutes les autres tables ,sont des tables des mesures et ne contiennent que des Idx et les valeurs brutes mesurées ainsi que la date (simplification inside), le mon du matériel n’y figure pas par exemple.

Ce qui signifie que si nous voulons afficher le nom du matériel nous devrons toujours aller le chercher dans la table DeviceStatus par l’intermédiaire de son Idx.

En SQL il s’agit de faire une jointure entre deux tables liées entres elles par un point commun ici le Idx nommé Id dans la table DeviceStatus ( 🙄 )

L’instruction à utiliser est soit un WHERE soit JOIN ON. J’utiliserai ici JOIN ON qui me semble plus compréhensible.

Exemple :

SELECT Name, Value3,Date FROM Multimeter JOIN DeviceStatus ON Multimeter.DeviceRowId=DeviceStatus.id order by Date

Explication : Je vais chercher Value3, Date dans la table Multimeter et je JOIN la table DeviceStatus pour aller chercher ce qui est dedans à savoir Name par intermédiaire du DeviceRowId de Multimeter qui est le même que le id  de la table DeviceStatus.

Remarquez que on va chercher la colonne DeviceRowId dans la table Multimeter par un nom_de_la_table.nom_de_la_colonne (Multimeter.DeviceRowID) de même pur Id de DeviceStatus.

Cette requête produit le même résultat de sortie.

SELECT Name, Value3,Date FROM Multimeter, DeviceStatus where DeviceRowId=DeviceStatus.id

N.B Les requêtes SQL sont sensibles à la casse des caractères.

 Quelques autres tables

Lire la suite

Pour toute question technique concernant cet article, veuillez utiliser les forum situés à https://easydomoticz.com/forum/