Téleinfo filaire avec Linky
Re: Téleinfo filaire avec Linky
Oui je lis bien des infos avec un cat /dev/ttyUSB0, mais les trames en Standard sont complètement différentes que celles en Historique, et par exemple PAPP, HCHC et HCHP n'existent pas dans les trames standards !
Re: Téleinfo filaire avec Linky
HCHC et HCHP correspondent aux tarifs heures pleines/heures creuses, si tu n'as pas cet abonnement (abonnement base par exemple) alors normal que ça n'apparaisse pas chez toi.Carthman a écrit : 05 oct. 2020, 23:07 par exemple PAPP, HCHC et HCHP n'existent pas dans les trames standards !
Dz version : 2024.7
Rpi 4 avec dongle téléinfo, GPIO pour le moment !
Rpi 4 avec dongle téléinfo, GPIO pour le moment !
Re: Téleinfo filaire avec Linky
Si tu veux, montre nous une trame et on te dira ce qu'il faut faire.
Synology DS920+ avec VM Debian 12, Aeon Labs Z-Stick Gen5, Aeon Zwave et devices zwaves , Teleinfo USB, devices Zigbee, batterie Marstek Venus E, Shelly Pro 3EM...
Re: Téleinfo filaire avec Linky
Bonsoir,
Désolé de revenir vers vous que maintenant, mais j'avais laissé tomber ce sujet pendant un moment.
Mais bon, je n'ai plus le suivi en temps réel de ma conso qui me sert entre autre à faire du délestage sur le chauffage, et avec l'hiver, j'ai peur que je dépasse un jour les 9 kVA et que mon Linky se coupe !
Il me faut donc trouver une solution pour lire à nouveau les infos de la Teleinfo.
On m'a proposé déjà de l'aide sur ce topic, mais je ne comprends pas du tout le langage Lua, alors que le script que vous m'avez proposé me parle un peu mieux, même si je ne sais pas encore quelles adaptations apporter pour mon besoin.
Voici la trame que vous m'avez demandé (j'ai enlevé les infos non électriques) :
J'aurais besoin de récupérer les infos EAST (Energie active soutirée totale), EAIT (Energie active injectée totale), SINSTS (Puissance app. Instantanée soutirée) et SINSTI (Puissance app. Instantanée injectée), et d'envoyer ces infos vers 4 dispositifs différents de Domoticz.
Merci.
Désolé de revenir vers vous que maintenant, mais j'avais laissé tomber ce sujet pendant un moment.
Mais bon, je n'ai plus le suivi en temps réel de ma conso qui me sert entre autre à faire du délestage sur le chauffage, et avec l'hiver, j'ai peur que je dépasse un jour les 9 kVA et que mon Linky se coupe !
Il me faut donc trouver une solution pour lire à nouveau les infos de la Teleinfo.
On m'a proposé déjà de l'aide sur ce topic, mais je ne comprends pas du tout le langage Lua, alors que le script que vous m'avez proposé me parle un peu mieux, même si je ne sais pas encore quelles adaptations apporter pour mon besoin.
Voici la trame que vous m'avez demandé (j'ai enlevé les infos non électriques) :
Code : Tout sélectionner
NGTF BASE <
LTARF BASE F
EAST 026603684 2
EASF01 014197436 E
EASF02 012406248 >
EASF03 000000000 $
EASF04 000000000 %
EASF05 000000000 &
EASF06 000000000 '
EASF07 000000000 (
EASF08 000000000 )
EASF09 000000000 *
EASF10 000000000 "
EASD01 014197436 C
EASD02 012406248 <
EASD03 000000000 "
EASD04 000000000 #
EAIT 002666950 '
ERQ1 000153600 J
ERQ2 000026310 H
ERQ3 000379898 )
ERQ4 004211658 Y
IRMS1 002 0
URMS1 229 G
PREF 09 H
PCOUP 09 "
SINSTS 00451 P
SMAXSN H201201005531 01137 -
SMAXSN-1 H201130182240 06175 V
SINSTI 00000 <
SMAXIN H201201000000 00000 I
SMAXIN-1 H201130103126 01936 H
CCASN H201201010000 00424 ,
CCASN-1 H201201000000 00363 K
UMOY1 H201201010000 227
Merci.
Re: Téleinfo filaire avec Linky
Bonjour,
C'est assez simple. J'essaierai de te modifier mon script en conséquence dans la journée.
C'est assez simple. J'essaierai de te modifier mon script en conséquence dans la journée.
Synology DS920+ avec VM Debian 12, Aeon Labs Z-Stick Gen5, Aeon Zwave et devices zwaves , Teleinfo USB, devices Zigbee, batterie Marstek Venus E, Shelly Pro 3EM...
Re: Téleinfo filaire avec Linky
Voilà, à adapter si besoin. J'ai mis juste pour EAST, tu prendras exemple si cela fonctionne pour les 3 autres. Il faut également créer un device dans domoticz et récupérer son numéro pour le mettre en variable.
Code : Tout sélectionner
#!/bin/bash
DOMO_IP="192.168.1.x" # Domoticz IP Address à renseigner
DOMO_PORT="8080" # Domoticz Port à renseigner
TELEINFO_EAST_IDX="861" # Teleinfo EAST IDX à renseigner
EAST=$(dd if=/dev/ttyUSB0 bs=512 count=1 iflag=fullblock 2>/dev/null | grep EAST | tail -1 | awk '{ print $2}')
echo "EAST : $EAST"
if [[ $EAST = +([0-9]) ]] ; then
curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command¶m=udevice&idx=$TELEINFO_EAST_IDX&nvalue=0&svalue=$EAST"
fiSynology DS920+ avec VM Debian 12, Aeon Labs Z-Stick Gen5, Aeon Zwave et devices zwaves , Teleinfo USB, devices Zigbee, batterie Marstek Venus E, Shelly Pro 3EM...
Re: Téleinfo filaire avec Linky
Merci beaucoup pour ta réactivité !
J'ai essayer cela, ça ne marchait pas, ça n'arrivait pas à trouver la bonne valeur : ça me sortait un champ vide.
Après plein d'essai avec des commandes dd, cat ou grep, j'ai réussi à obtenir une valeur en mettant grep -m 1.
Je ne sais pas pourquoi chez toi ça marchait et pas chez moi, mais j'ai l'impression que le flot continu d'informations venant de /dev/ttyUSB12 perturbait le fonctionnement.
J'ai même constaté que dd if=/dev/ttyUSB12 bs=512 count=1 iflag=fullblock 2>/dev/null | grep SINSTS -m 1 | tail -1 | awk '{ print $2}' ne renvoyait pas la valeur à coups sûr quand je lance la commande manuellement, alors qu'un simple grep SINSTS /dev/ttyUSB12 -m 1 | awk '{ print $2}' me donne une valeur à coup sûr.
Par contre, je vois bien que mon Compteur a reçu quelque chose, car il n'est plus en rouge, mais il n'affiche rien, est-ce que ça pourrait venir des 0 devant ? (La valeur que j'ai envoyée était 00459).
Il y a cela d'affiché dans ma console à chaque exécution manuelle du script :
J'ai également d'autres questions pour aller plus loin :
- La valeur de EAST est stockée dans une variable qui est $EAST.
Est-ce que cette variable est utilisable dans d'autres scripts ?
- Si non, quelle serait la commande qui remplacerait curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command¶m=udevice&idx=$TELEINFO_EAST_IDX&nvalue=0&svalue=$EAST" pour écrire dans une variable Domoticz plutôt que dans un dispositif ?
- Il me semble que ce script ne fait pas de boucle. Il faudrait donc le mettre dans la Crontab pour l'exécuter en permanence.
Est-ce qu'il ne serait pas mieux de le faire tourner en boucle ou ça poserait des problèmes ? (si la solution Crontab fait le même boulot ya pas de problème, je le met dans la Crontab).
- Quelle est la différence entre les capteurs virtuels "Electrique (Instantané+Compteur)" et "P1 Compteur Intelligent (Electrique) ?
Merci !
J'ai essayer cela, ça ne marchait pas, ça n'arrivait pas à trouver la bonne valeur : ça me sortait un champ vide.
Après plein d'essai avec des commandes dd, cat ou grep, j'ai réussi à obtenir une valeur en mettant grep -m 1.
Je ne sais pas pourquoi chez toi ça marchait et pas chez moi, mais j'ai l'impression que le flot continu d'informations venant de /dev/ttyUSB12 perturbait le fonctionnement.
J'ai même constaté que dd if=/dev/ttyUSB12 bs=512 count=1 iflag=fullblock 2>/dev/null | grep SINSTS -m 1 | tail -1 | awk '{ print $2}' ne renvoyait pas la valeur à coups sûr quand je lance la commande manuellement, alors qu'un simple grep SINSTS /dev/ttyUSB12 -m 1 | awk '{ print $2}' me donne une valeur à coup sûr.
Par contre, je vois bien que mon Compteur a reçu quelque chose, car il n'est plus en rouge, mais il n'affiche rien, est-ce que ça pourrait venir des 0 devant ? (La valeur que j'ai envoyée était 00459).
Il y a cela d'affiché dans ma console à chaque exécution manuelle du script :
Code : Tout sélectionner
SINSTS : 00422
HTTP/1.1 200 OK
Content-Length: 49
Cache-Control: no-cache
Pragma: no-cache
Access-Control-Allow-Origin: *
Content-Type: application/json;charset=UTF-8
{
"status" : "OK",
"title" : "Update Device"
}
- La valeur de EAST est stockée dans une variable qui est $EAST.
Est-ce que cette variable est utilisable dans d'autres scripts ?
- Si non, quelle serait la commande qui remplacerait curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command¶m=udevice&idx=$TELEINFO_EAST_IDX&nvalue=0&svalue=$EAST" pour écrire dans une variable Domoticz plutôt que dans un dispositif ?
- Il me semble que ce script ne fait pas de boucle. Il faudrait donc le mettre dans la Crontab pour l'exécuter en permanence.
Est-ce qu'il ne serait pas mieux de le faire tourner en boucle ou ça poserait des problèmes ? (si la solution Crontab fait le même boulot ya pas de problème, je le met dans la Crontab).
- Quelle est la différence entre les capteurs virtuels "Electrique (Instantané+Compteur)" et "P1 Compteur Intelligent (Electrique) ?
Merci !
Re: Téleinfo filaire avec Linky
Je réponds à une question à moi-même, car j'ai trouvé des choses en parallèle !
Si mon compteur n'affiche rien, c'est parce qu'il lui faut une 2ème info vu qu'il est du type "Electrique (Instantané+Compteur).
Du coups j'ai également compris la différence entre les compteurs grâce à cette page du Wiki de Domoticz !
Si mon compteur n'affiche rien, c'est parce qu'il lui faut une 2ème info vu qu'il est du type "Electrique (Instantané+Compteur).
Du coups j'ai également compris la différence entre les compteurs grâce à cette page du Wiki de Domoticz !
Re: Téleinfo filaire avec Linky
Bon alors je n'arrive toujours pas à voir quelque chose sur mon compteur, je pense que je passe à côté de quelque chose.
J'ai essayé avec un compteur "simple" qui affiche juste la conso en directe, et ça fonctionne avec ce code :
Mais avec le compteur qui fait affichage instantané et cumul des kwh, mon dispositif reste vierge :
J'ai pu voir que dans ton code original tu rajoutes cela :
Quelle est l'utilité ?
J'ai essayé avec un compteur "simple" qui affiche juste la conso en directe, et ça fonctionne avec ce code :
Code : Tout sélectionner
#!/bin/bash
DOMO_IP="192.168.0.8" # Domoticz IP Address à renseigner
DOMO_PORT="9799" # Domoticz Port à renseigner
TELEINFO_CONSO_IDX="89" # Teleinfo CONSO IDX à renseigner
# EAST=$(grep EAST /dev/ttyUSB12 -m 1 | awk '{ print $2}')
SINSTS=$(grep SINSTS /dev/ttyUSB12 -m 1 | awk '{ print $2}')
# echo "EAST : $EAST"
echo "SINSTS : $SINSTS"
if [[ $SINSTS = +([0-9]) ]] ; then
curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command¶m=udevice&idx=$TELEINFO_CONSO_IDX&nvalue=0&svalue=$SINSTS"
fi
Code : Tout sélectionner
#!/bin/bash
DOMO_IP="192.168.0.8" # Domoticz IP Address à renseigner
DOMO_PORT="9799" # Domoticz Port à renseigner
TELEINFO_CONSO_IDX="87" # Teleinfo CONSO IDX à renseigner
EAST=$(grep EAST /dev/ttyUSB12 -m 1 | awk '{ print $2}')
SINSTS=$(grep SINSTS /dev/ttyUSB12 -m 1 | awk '{ print $2}')
echo "EAST : $EAST"
echo "SINSTS : $SINSTS"
if [[ $SINSTS = +([0-9]) ]] ; then
curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command¶m=udevice&idx=$TELEINFO_CONSO_IDX&nvalue=0&svalue=$SINSTS,$EAST"
fi
J'ai pu voir que dans ton code original tu rajoutes cela :
Code : Tout sélectionner
PAPP=`expr $PAPP + 0`Code : Tout sélectionner
if [[ $PAPP < 100 ]] ; then
echo "$(date) : PAPP : $PAPP2 " >> /var/log/domoticz_teleinfo.txt
fiRe: Téleinfo filaire avec Linky
Je pense que ton soucis vient que ton deuxième compteur a besoin de deux infos pour être mis à jour : https://www.domoticz.com/wiki/Domoticz_ ... counter.29
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos