Dans cet article, nous allons voir comment intégrer les données d’un appareil Shelly (Modele exat Shelly Plus S) dans Domoticz en utilisant un simple script ksh personnalisé. Ce script permettra de récupérer des données telles que la puissance, la tension, le courant, et la température d’un appareil Shelly et de les envoyer à Domoticz pour une automatisation et un suivi efficaces de votre environnement domotique.
Prérequis
- Un appareil Shelly configuré et connecté à votre réseau local.
- Domoticz installé et accessible.
- jq et bc, deux outils de ligne de commande pour l’analyse JSON et les calculs basiques.
Étape 1 : Creer les devices virtuel dans domoitcz :
Personnelement je n’utilise que 2 compteurs :
Récupérer l’IDX de Votre Appareil dans Domoticz
L’IDX est un identifiant unique pour chaque appareil dans Domoticz. Pour trouver l’IDX de votre appareil Shelly :
- Connectez-vous à l’interface web de Domoticz.
- Naviguez vers Setup > Devices.
- Repérez votre appareil Shelly et notez son IDX.
Étape 2 : Création du Script ksh
- Créez un fichier pour le script : Ouvrez un terminal sur votre système où Domoticz est installé et exécutez la commande suivante pour créer un nouveau fichier script :
mkdir /home/pi/shelly vi /home/pi/shelly/get_data.sh
Ouvrez le fichier créé dans un éditeur de texte et copiez-y le contenu du script fourni ci-dessous ;
#!/bin/ksh DOMOTICZ=127.0.1.1:8080 SHELLY=192.168.1.31 # Emplacement du fichier de sortie output_file="/tmp/shelly.log" # Appel API et stockage de la réponse dans une variable response=$(curl -s -X POST -d '{"id":1,"method":"Shelly.GetStatus"}' http://$SHELLY/rpc) # Extraction des valeurs avec jq apower=$(echo "$response" | jq '.result."switch:0".apower') voltage=$(echo "$response" | jq '.result."switch:0".voltage') current=$(echo "$response" | jq '.result."switch:0".current') tC=$(echo "$response" | jq '.result."switch:0".temperature.tC') POWER=$(echo "$response" | jq '.result."switch:0".apower') ENERGY=$(echo "$response" | jq '.result."switch:0".aenergy.total') OFFSET='95855' # Depuis le debut de la prise ENERGY=$(echo "$ENERGY - $OFFSET" | bc) # Affichage des valeurs echo "apower: $apower W" echo "voltage: $voltage V" echo "current: $current A" echo "temperature: $tC C" echo "POWER : $POWER W" echo "ENERGY : $ENERGY Wh" # Vérification si ENERGY < 0 if [ $(echo "$ENERGY < 0" | bc) -eq 1 ]; then echo "Invalid ENERGY value detected, exiting." exit 1 fi # Current DEVICETOCHANGE=8150 curl -s "$DOMOTICZ/json.htm?type=command¶m=udevice&idx=$DEVICETOCHANGE&nvalue=0&svalue=$current" -o /dev/null # POWER and Watt DEVICETOCHANGE=8153 curl -s "$DOMOTICZ/json.htm?type=command¶m=udevice&idx=$DEVICETOCHANGE&nvalue=0&svalue=$POWER;$ENERGY" -o /dev/null # Enregistrement des valeurs dans un fichier avec horodatage (facultatif) echo "$(date '+%Y-%m-%d %H:%M:%S') - apower: $apower, voltage: $voltage, current: $current, temp: $tC " >> "$output_file"
- Rendez le script exécutable :
chmod +x /home/pi/shelly/get_data.sh
Étape 3 : Configurer le Script avec Vos Informations
- Adresse IP de Shelly : Remplacez
192.168.1.31
par l’adresse IP de votre appareil Shelly. - DOMOTICZ : Modifiez la variable
DOMOTICZ
avec l’adresse IP et le port de votre serveur Domoticz. - IDX : Remplacez les valeurs
DEVICETOCHANGE
par les IDX correspondants de vos appareils dans Domoticz.
A noter que j’utilise un offset pour reprendre a 0 la valeur puissance a partir du moment ou je l’ai ajouté dans domoticz. (un factory reset doit aussi faire l’affaire)
Étape 4 : Tester le Script
Exécutez le script manuellement pour vous assurer qu’il fonctionne correctement :
/home/pi/shelly/get_data.sh
root@pi3:/home/pi/shelly# /home/pi/shelly/get_data.sh apower: 0.6 W voltage: 231.6 V current: 0.02 A temperature: 43.3 C POWER : 0.6 W ENERGY : .881 Wh
Vérifiez les logs de Domoticz et le fichier /tmp/shelly.log
pour confirmer que les données sont correctement envoyées et enregistrées.
Étape 5 : Automatisation avec Crontab
Pour automatiser l’exécution du script, ajoutez une tâche cron :
- Ouvrez l’éditeur crontab :
crontab -e
- Ajoutez la ligne suivante pour exécuter le script toutes les 2 minutes :
*/2 * * * * /home/pi/shelly/get_data.sh
- Sauvegardez et quittez l’éditeur.
Étape 6 : Comment commander les prises Shelly depuis domoticz ?
Pour commander votre prise Shelly S depuis domotique vous devez simplement creer un switch virtuel et utiliser ces deux commandes en adaptant l’IP de votre prise :
Commande ON :
script:///usr/bin/curl "http://192.168.1.31/rpc/Switch.Set?id=0&on=true"
Commande OFF :
script:///usr/bin/curl "http://192.168.1.31/rpc/Switch.Set?id=0&on=false"
Conclusion
Félicitations ! Vous avez maintenant intégré avec succès les données de votre appareil Shelly dans Domoticz à l’aide d’un script ksh. Cela ouvre des possibilités pour une automatisation avancée et un meilleur suivi de vos appareils domotiques.
N’oubliez pas de vérifier régulièrement le bon fonctionnement du script et de consulter les logs pour toute erreur potentielle. Bonne domotique !