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/

SQLite Manager

Un billet sur l’utilisation de l’outil de base de données SQLite et ici particulièrement le module SQLiteManager intégrable à Firefox , nous verrons dans au moins un autre article les quelques tables de la base de données Domoticz à connaitre.

Rappels

Vous le savez la base de données de Domoticz utilise la base de données SQLite pour stocker les données.

Très populaire, ce système de base de donnée est fait pour être embarqué au sein d’un logiciel.

Firefox, Chrome, Skype et donc Domoticz l’utilisent nativement.

Pourquoi utiliser SQLiteManager

Les besoins sont divers, cela peut aller de la simple extraction de données pour mise en forme dans un tableur, la supression de valeurs, à la réparation d’erreurs que l’on voit parfois passer dans le log de Domoticz.

On peut aussi utiliser la ligne de commande pour effectuer des actions en lieu et place de l’interface graphique pour des extractions régulières ou une sauvegarde via crontab par exemple.

Mais avouons que l’interface graphique est quand même plus facile pour des actions ponctuelles.

Le module

  • Pour Firefox :

https://addons.mozilla.org/fr/firefox/addon/sqlite-manager/

  • Pour Chrome depuis le webstore :

https://chrome.google.com/webstore/detail/sqlite-database-browser-b/jlpbdkmaomigeneadlamehkfchdmojgg

  • Sinon un soft pour Windows et Mac :

http://www.sqlabs.com/sqlitemanager.php

  • Il existe d’autres outils tels que :

http://sqlitebrowser.org/

 

Une fois installé cet outil permettra donc d’aller « bidouiller » vos données de SQLite.

Toutefois :

Attention Achtung Warning Attenzione внимание

Je vous déconseille (interdit ?) de bidouiller la base de Domoticz en direct live pendant qu’il bosse, arrêtez Domoticz, copiez la base sous un autre nom (domoticz.save par exemple) , bidouillez vos trucs , relancez Domoticz et voyez ce qu’il en est avant de supprimer domoticz.save. Dans le pire des cas recopiez à l’inverse domoticz.save vers domoticz.db.

N’oubliez pas : JAMAIS sur une base en cours d’utilisation.

Pour vous familiariser avec ces outils sans semer la panique, recopiez donc le fichier domoticz.db de /home/pi/domoticz sur la machine ou vous avez installé le module, comme cela vous préservez la base de Domoticz encore quelques instants 🙂

Utilisation

La connexion à la base

Un fois installé ce module prend place dans les outils de votre navigateur.

Au lancement il faut donc aller se connecter à une base de données en utilisant l’icône appropriée (1), changer le type de fichier (2) et parcourir les dossiers à la recherche de notre base de données (3)

sqllite_Domoticz_1

L’ouverture de la base montre à gauche les tables de la base de données et à droite divers outils

sqllite_Domoticz_2Lire la suite

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

Un éditeur de scripts Lua intégré à Domoticz

Les contributeurs au développement de Domoticz nous font commencer l’année avec une belle évolution; à savoir : un éditeur de scripts Lua intégré directement à Domoticz ainsi que la conservation de ces nouveaux scripts Lua dans la base de données de Domoticz.

La version V2.4025 apporte ces modifications.

L’éditeur de scripts

L’éditeur de scripts autrefois destiné aux scripts Blockly vient donc d’évoluer en apportant un éditeur Lua intégré.

Maintenant lors de la création d’un script nous aurons le choix entre la création d’un Blockly ou d’un Lua

ed_lua

On accède à l’éditeur via « Réglages »/ »Plus d’options »/ »Evénements ».

 

Le sélecteur permet de choisir le type de script Lua ou Blockly et d’affecter une catégorie entre Device, security, time,variables , ces type correspondent au types d’événements déclencheurs de scripts Lua dans Domoticz . c.f la référence aux noms usuels des scripts Lua : script_devices, script_security, script_time et script_uservariable

Un autre type nommé « All » déclenche le script en question dès que N’IMPORTE LEQUEL DES EVENEMENTS SE PRODUIT (toutes les minutes, au changement d’une variable, à une mise à jour d’un périphérique, au changement d’état du panel de sécu), donc en fait en permanence ou quasiment.

  • Lors de la rédaction de nos scripts Lua une  liste de sélection de mots apparait dés lors que vous tapez quelque chose, (auto-complétion) vous y retrouverez les noms de vos matériels Domoticz , les mots clés Lua, vos fonctions…

 

ide_lua2

  • Il supporte le drag& drop de texte.
  • Le masquage/déroulement de fonctions par les flèches à droite des numéro de ligne, dont le repliement est marqué par un indicateur violet tout à droite.ide_lua32
  • Les lignes sont numérotées et en bout de ligne un marqueur rouge error indiquera que la ligne en cours n’a pas une syntaxe correcte.
  • Sous Firefox, mais pas sous Chrome, le clic droit permet de changer le thème de fond et d’inactiver l’auto-complétion.
  • Plein de raccourcis clavier existent, la liste complète ici https://github.com/ajaxorg/ace/wiki/Default-Keyboard-Shortcut  (merci Vil1Driver)

Ces scripts sont dorénavant conservés dans  la base de données de Domoticz (table EventMaster)

N.B Vos anciens scripts Lua (ceux de /domoticz/scripts/lua) NE sont pas concernés, ils ne sont pas éditables ici, ni conservés dans la base de données.

Recopiez les ici par des copier/coller si besoin.

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

Les périphériques USB, les Raspberry et Domoticz

Question récurrente du débutant sur Raspberry et Domoticz, la déclaration et l’utilisation des ports USB sur le Raspberry et leur utilisation au sein de Domoticz.

Car, un peu comme dans Windows, les ports USB affectés à un USB peuvent changer ou tout du moins on aime bien savoir que le rfxcom est USB10 et le z-wave USB11, voyons donc cette méthode dite des « persistent USB »

L’article d’origine ici https://www.domoticz.com/wiki/PersistentUSBDevices

L’exemple ci dessous est celui de la connexion d’ un stick Z-Wave Aeon Labs Serie 2

z-stick z-wave

z-stick z-wave

Installation

Je ne vais pas réinventer la roue, mais passer en revue les trucs incontournables pour la mise en place.

J’ai déjà un module Rfxcom sur le USB, on peut le constater avec un

sudo udevadm info --query=all --name=ttyUSB0

qui affiche plein d’infos et entre autre une ligne ID_VENDOR=RFXCOM dont on se servira par la suite, ou toute autre ligne qui ne se répète qu’une fois sur tous vos USB pourra servir (ID_SERIAL_SHORT est pas mal aussi).

Estimant que le Z-stick devrait être en USB1,  un

sudo udevadm info --query=all --name=ttyUSB1

me donne

P: /devices/platform/bcm2708_usb/usb1/1-1/1-1.3/1-1.3:1.0/ttyUSB1/tty/ttyUSB1
N: ttyUSB1
S: serial/by-id/usb-Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0001-if00-port0
S: serial/by-path/platform-bcm2708_usb-usb-0:1.3:1.0-port0
E: DEVLINKS=/dev/serial/by-id/usb-Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0001-if00-port0 /dev/serial/by-path/platform-bcm2708_usb-usb-0:1.3:1.0-port0
E: DEVNAME=/dev/ttyUSB1
E: DEVPATH=/devices/platform/bcm2708_usb/usb1/1-1/1-1.3/1-1.3:1.0/ttyUSB1/tty/ttyUSB1
E: ID_BUS=usb
E: ID_MODEL=CP2102_USB_to_UART_Bridge_Controller
E: ID_MODEL_ENC=CP2102x20USBx20tox20UARTx20Bridgex20Controller
E: ID_MODEL_FROM_DATABASE=CP210x UART Bridge / myAVR mySmartUSB light
E: ID_MODEL_ID=ea60
E: ID_PATH=platform-bcm2708_usb-usb-0:1.3:1.0
E: ID_PATH_TAG=platform-bcm2708_usb-usb-0_1_3_1_0
E: ID_REVISION=0100
E: ID_SERIAL=Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0001
E: ID_SERIAL_SHORT=0001
E: ID_TYPE=generic
E: ID_USB_DRIVER=cp210x
E: ID_USB_INTERFACES=:ff0000:
E: ID_USB_INTERFACE_NUM=00
E: ID_VENDOR=Silicon_Labs
E: ID_VENDOR_ENC=Siliconx20Labs
E: ID_VENDOR_FROM_DATABASE=Cygnal Integrated Products, Inc.
E: ID_VENDOR_ID=10c4
E: MAJOR=188
E: MINOR=1
E: SUBSYSTEM=tty
E: UDEV_LOG=3
E: USEC_INITIALIZED=139369208365

En effet la ligne ID_Vendor_Enc affiche Silicons Labs, c’est donc bien le Z-Stick AEON qui est sur USB1.

Fixons définitivement cette affectation dans le Raspberry  sur un port USB de notre choix: USB11 par exemple.

ATTENTION :

Il est déconseillé de garder USB01,USB02 dans Domoticz à cause des zéros préliminaires et il faut préférer des notations à 2 chiffres sans 0 préliminaires 10,11…(c.f. le wiki de Domoticz (http://www.domoticz.com/wiki/PersistentUSBDevices)

Je nommerai USB11 mon stick Z-Wave.

On fait un

sudo lsusb -v | more

Notez ou copiez les lignes, (avancez par appui sur la touche espace) et trouvez

  • idVendor
  • idProduct
  • iSerial (éventuellement)
idVendor 0x10c4 Cygnal Integrated Products, Inc.
idProduct 0xea60 CP210x UART Bridge / myAVR mySmartUSB light

Ici j’ai  idVendor=10c4 et IdProduct=ea60

Pour cela installons des USB persistants et afin d’éviter que les ports USB changent à chaque fois (comme dans Windows) , on fixe dans un fichier les liens entre le nom du périphérique et le port USB que l’on veut toujours utiliser.

On configure  donc  le fichier /etc/udev/rules.d/99-usb-serial.rules

sudo nano /etc/udev/rules.d/99-usb-serial.rules
SUBSYSTEM=="tty", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", SYMLINK+="ttyUSB11" 
SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="ef1c", SYMLINK+="ttyUSB15"

On reconnait les ID_VENDOR notés plus haut.

Un reboot.

Paramétrage Domoticz

Repassez dans la config Domoticz à « Configuration/Matériel »

Ajoutez un matériel Open-Zwave-USB et affectez le selon votre config du fichier 99-usb-serial.rules

Config_usb_Domoticz

Config_usb_Domoticz

Idem pour le RfxCom à lier au USB10

Et voila, maintenant vous devez avoir un périphérique USB définitivement lié à votre Domoticz, elle est pas belle la vie !

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

LMS/Squeezebox et Domoticz

Depuis quelques versions Domoticz supporte les squeezebox Logitech MediaServer (LMS).

Squeezebox : Qu’est ce ? diront certains.

 

Il s’agit un logiciel serveur de musique (déployé dans le cas qui nous intéresse ici sur un Raspberry) et qui est chargé de diffuser de la musique sur d’autres équipements hard comme ceux ci (plus fabriqués de nos jours)

Résultat de recherche d'images pour "logitech media player" Résultat de recherche d'images pour "logitech media player"

 

ou soft nommés players ou platines en français.

 

Retrouvez le détail ici http://www.maison-et-domotique.com/4904-test-solution-squeezebox-pour-du-multiroom-facile/

Pour faire court on peut trouver de nombreux packages squeezebox à cette adresse http://www.max2play.com/en/max2play-image/

Ces packages m’ont paru gratuits contrairement à d’autres trouvés ça et la.

et des instructions ici http://wiki.slimdevices.com/index.php/SqueezePlug

Une fois installé ces solutions arrivent toutes avec un Logitech Media Server (le serveur) qui  inclut des webradios, la diffusion de podcasts, des bibliothèques musicales …Lire la suite

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