[Tuto] SDM220-Modbus / Compteur électrique Instantané/total

Vous avez créé un script LUA dont vous êtes fier, un .sh génial, un programme Python hors du commun, un Tuto, c'est ici que vous pouvez les partager.
lipon67
Messages : 3
Inscription : 03 juin 2016, 00:16

[Tuto] SDM220-Modbus / Compteur électrique Instantané/total

Message par lipon67 »

Bonjour à tous,
Pour planter le décor, j'utilise la solution Domoticz avec la configuration suivante :
- Raspberry Pi B (celui à 24GPIO et seulement 2 ports USB)
- RFLink Nodo pour la partie radio 433Mhz
- des sondes de températures de ce type et de celui-là
- mes volets roulants filaires sont équipés de relais double canaux 5V High level et sont pilotés par un Arduino Mega2560 avec Shield ethernet - sous domoticz ça se traduit par des DummysSwitch qui appelent un script en bash pour solliciter l'arduino. 2 relais : 1 dirige la phase vers l'interrupteur classique ou vers le 2ème relais, qui lui fait monter/descendre, ainsi je peux toujours jouer avec mes interrupteurs muraux - point négatif : pas de retour d'état.
- Un autre arduino (ATMEGA328 5v 16Mhz) et une sonde ultrasonique JSN-SR04T m'indique la hauteur de vide dans ma cuve à fioul, la trigonométrie me permet d'en déduire le volume de fioul encore présent.


Ma dernière action consiste à monitorer ma consommation électrique (chauffage fioul mais radiateur à inertie sèche en appoint, chauffe eau, plaque de cuisson, four,...). Ayant encore un compteur électrique ancienne génération (roue mécanique), j'ai ajouté à mon tableau un SDM220-Modbus pour pas très cher.
J'y ai joint un module USB-RS485 et j'ai fouiné un peu sur le net.

Branchements courant faible : 3 fils (GND/ A / B)
Installing SDM120c

Code : Tout sélectionner

sudo apt-get install libmodbus5 libmodbus-dev git
git clone https://github.com/gianfrdp/SDM120C.git
cd SDM120C
make clean && make
sudo make install
cd .. 
Petit exemple d'utilisation (-P N était nécessaire pour permettre la lecture des valeurs chez moi, sans quoi NOK) :

Code : Tout sélectionner

sdm120c -P N /dev/ttyUSB0 -2 -t -v -c -p
Dans Domoticz, on utilise un Dummy Electricité (Instant+Compteur) donc les options "-p -t" nous serviront et le scripting nous oriente vers cette commande :

Code : Tout sélectionner

sdm120c -P N /dev/ttyUSB0 -p -t -q
Dans mon cas, j'ai choisi de placer MES scripts dans /home/pi/domoticz/scripts/user/ afin de facilement les sauvegarder et retrouver MES petits.
Dans notre cas : /home/pi/domoticz/scripts/user/sdm220.sh

Code : Tout sélectionner

SERVER="http://127.0.0.1:8080"   #server location
IDX=1974          #id of your device
VALUES=NOK #Defines the error value
while [ "$VALUES" = "NOK" ] #repeats reading while getting an error "NOK"
do
        VALUES=`/usr/local/bin/SDM120C/sdm120c /dev/ttyUSB0 -P N -p -t -q` #p=power / t=total / q=short output
done
POWER=`echo $VALUES | cut -d ' ' -f1`
TOTAL=`echo $VALUES | cut -d ' ' -f2`
curl -s {$SERVER"/json.htm?type=command&param=udevice&idx="$IDX"&nvalue=0&svalue="$POWER";"$TOTAL""}  #send values to domoticz
Sachant que Domoticz journalise toutes les 5 minutes, on va confier la tâche à un ami : crontab

Code : Tout sélectionner

crontab -e
*/5 * * * * /home/pi/domoticz/scripts/user/sdm220.sh >/dev/null 2>&1
Répondre