Voila mon premier test de matériel, le contrôleur Damoclès 1208.
Mon but : ajouter des entrées sorties à mon serveur domoticz, notamment des entrées compteurs pour l’eau chaude et l’eau froide, mais aussi le gaz.
une description sommaire du produit indique les protocoles supportés.
Le Damocles 1208 permet de contrôler à distance à travers le réseau et son interface Web 12 Entrées et 8 sorties numériques.
Les Entrées et Sorties peuvent aussi être contrôlées en IP par des protocoles M2M tels que SNMP, Modbus/TCP, XML over HTTP.
Quand un changement d’état sur une entrée est détecté, le Damocles envoie un email avec un message préconfiguré ou un trap SNMP.
Domoticz acceptant le SNMP, et ne connaissant pas celui-ci, me voila parti à sa découverte.
Le Damoclès dispose d’un logiciel de configuration disponible via le cd fourni pour modifier les paramètres de connexion avant sa première utilisation mais aussi d’un web permettant sa configuration complète.
Un fois configuré et avant de penser au script permettant de remonter les index dans domoticz il nous faut d’abord créer les compteurs virtuels correspondants.
j’ai donc créé un compteur eau froide (Idx 154), un eau chaude (Idx 155) et un gaz (Idx 155).
J’ai aussi crée un interrupteur virtuel afin de si le Damoclès n’est pas déconnecté (Idx 150)
Le damoclès est fourni avec une table OID directement disponible via l’interface web. Elle ressemble à ceci :
Damocles family SNMP OID description
—————————————————————————————-Damocles Device Values:
——————————————————-
.1.3.6.1.2.1.1.1.0 Device description (string)
.1.3.6.1.2.1.1.5.0 Device name (string)Dry Contact Inputs
——————————————————-
.1.3.6.1.4.1.21796.3.4.1.1.2.1 Dry Contact Input 1 state (integer, 0=Off, 1=On)
.1.3.6.1.4.1.21796.3.4.1.1.2.3 Dry Contact Input 3 state (integer, 0=Off, 1=On).1.3.6.1.4.1.21796.3.4.1.1.3.1 Dry Contact Input 1 name (R/W string)
.1.3.6.1.4.1.21796.3.4.1.1.4.1 Dry Contact Input 1 Alarm state (integer).1.3.6.1.4.1.21796.3.4.1.1.6.1 Dry Contact Input 1 counter (R/W non negative integer)
Relay Outputs
——————————————————-
.1.3.6.1.4.1.21796.3.4.2.1.2.1 Relay Output 1 state (R/W integer, 1=Off, 2=On)
.1.3.6.1.4.1.21796.3.4.2.1.2.2 Relay Output 2 state (R/W integer, 1=Off, 2=On).1.3.6.1.4.1.21796.3.4.2.1.3.1 Relay Output 1 name (R/W string)
En m’inspirant de ce que j’ai pu trouver sur le net, j’ai donc construit mon premier script bash
#!/bin/bash
# Settings
DAMOCLES_IP= »192.168.2.220″ # Addresse IP damocles
PASSWORD= »private » # communauté SNMP
DOMO_IP= »192.168.2.224″ # Addresse IP Domoticz
DOMO_PORT= »8080″ # Port DomoticzDAMOCLES_IDX= »150″ # DAMOCLES Switch IDX
DAMOCLES_CPT_1_IDX= »154″ # DAMOCLES HD1 Temp IDX
DAMOCLES_CPT_2_IDX= »155″ # DAMOCLES HD2 Temp IDX
DAMOCLES_CPT_3_IDX= »156″ # DAMOCLES HD1 Temp IDX# Check si le DAMOCLES est online
PINGTIME=`ping -c 1 -q $DAMOCLES_IP | awk -F »/ » ‘{print $5}’ | xargs`
echo $PINGTIME
if expr « $PINGTIME » ‘>’ 0
then
echo « DAMOCLES ON »
# Send data
curl -s -i -H « Accept: application/json » « http://$DOMO_IP:$DOMO_PORT/json.htm?type=command¶m=switchlight&idx=$DAMOCLES_IDX&switchcmd=On »# Compteur 1
CPT_1=`snmpget -c $PASSWORD -v1 -O qv $DAMOCLES_IP .1.3.6.1.4.1.21796.3.4.1.1.6.1`# Send data
curl -s -i -H « Accept: application/json » « http://$DOMO_IP:$DOMO_PORT/json.htm?type=command¶m=udevice&idx=$DAMOCLES_CPT_1_IDX&nvalue=0&svalue=$CPT_1 »# Compteur 2
CPT_2=`snmpget -c $PASSWORD -v1 -O qv $DAMOCLES_IP .1.3.6.1.4.1.21796.3.4.1.1.6.2`
# Send data
curl -s -i -H « Accept: application/json » « http://$DOMO_IP:$DOMO_PORT/json.htm?type=command¶m=udevice&idx=$DAMOCLES_CPT_2_IDX&nvalue=0&svalue=$CPT_2 »# Compteur 3
CPT_3=`snmpget -c $PASSWORD -v1 -O qv $DAMOCLES_IP .1.3.6.1.4.1.21796.3.4.1.1.6.3`
# Send data
curl -s -i -H « Accept: application/json » « http://$DOMO_IP:$DOMO_PORT/json.htm?type=command¶m=udevice&idx=$DAMOCLES_CPT_3_IDX&nvalue=0&svalue=$CPT_3 »else
echo « DAMOCLES OFF »
# Send data
curl -s -i -H « Accept: application/json » « http://$DOMO_IP:$DOMO_PORT/json.htm?type=command¶m=switchlight&idx=$DAMOCLES_IDX&switchcmd=Off »fi
Après avoir déclaré les IP du Damoclès et de Domoticz, les differents idx des compteurs et switch virtuels on vérifie avec la disponibilité online du Damoclès
PINGTIME=`ping -c 1 -q $DAMOCLES_IP | awk -F »/ » ‘{print $5}’ | xargs`
Si le résultat est supérieur à 0 le Damoclès est « online ». On peut donc ensuite interroger les index de mes 3 compteurs ou l’état de l’une des douze entrées via la commande snmpget.
Puis, pour chacune des entrées, on transmet l’index, via l’API Json, à Domoticz.
on nomme son fichier, pour moi ce sera compteurs avec l’extension .sh => compteurs.sh
il ne reste plus qu’à uploader ce fichier dans le répertoire scripts de Domoticz via wincsp, modifier son chmod et créer un cron pour le lancer périodiquement.
on ouvre la console :
pour modifier les permissions du fichier :
chmod +x /home/pi/domoticz/scripts/compteurs.sh
on lance ensuite la commande :
crontab -e
et on ajoute à la fin du fichier :
*/2 * * * * sudo /home/pi/domoticz/scripts/sh/compteurs.sh
ce qui lancera le script toutes les 2 minutes
je me suis très fortement inspiré de l’article WIKI NAS Monitoring pour tout cela
un bemol important pour ce qui s’agit du Damoclès, il perd l’index des compteurs lors d’une coupure de courant, les index reviennent donc à zéro.
Ce modèle ne comprend pas non plus d’entrée sonde.
[homepage]https://www.hw-group.com/device/damocles2-1208[/homepage]