Bonjour,
Je suis avec un pi2, la dernière version de domoticz, je relève la téléinfo avec le linky en mode standard via un câble + optocoupleur sur le GPIO du pi.
Mon relevé de consommation fonctionne.
J'aimerai avoir accès aux données EAIT et SINSTI car j'ai des panneaux solaires en mode autoconsommation.
Ne sachant quelle solution prendre, j'ai testé la solution donnée par Carthman (page 6), à savoir un script bash.
Je ne suis pas doué avec les commandes linux ni les scripts.
Ne sachant pas faire : Crontab avec @reboot, j'ai placé le fichier dans un dossier perso, puis chmod +x linky_original.sh
puis je l'ai lancé : bash linky_original.sh. J'ai testé en mode utilisateur ou root, j'ai testé en modifiant le script avec mes valeurs et j'ai le même résultat avec les erreurs suivantes :
linky_original.sh: ligne 8: $'\r' : commande introuvable
linky_original.sh: ligne 21: $'\r' : commande introuvable
linky_original.sh: ligne 22: $'\r' : commande introuvable
linky_original.sh: ligne 23: $'\r' : commande introuvable
stty: argument « -crtscts\r » incorrect
Saisissez « stty --help » pour plus d'informations.
linky_original.sh: ligne 26: $'\r' : commande introuvable
linky_original.sh: ligne 85: erreur de syntaxe près du symbole inattendu « else »
'inky_original.sh: ligne 85: ` else ERREUR_TELEINFO="1"
Code : Tout sélectionner
#!/bin/bash
#TELEINFO LINKY STANDARD
#Script pour lire les données Teleinfo d'un Linky en Mode Standard
#Il peut être adapté pour le Mode Historique en modifiant les données souhaitées
#En fonction du besoin, créer un Compteur Conso EDF, Injection EDF, Autoconso, un pourcentage de charge et un compteur intelligent P1
#Les données de production sont récupérées grâce au dispositif créé avec ce plugin https://github.com/rklomp/Domoticz-SMA-SunnyBoy
#A mettre dans la Crontab avec @reboot pour qu'il se lance au démarrage
#Variables utilisateur à modifier
DOMO_IP="192.168.1.102" # IP Domoticz à renseigner
DOMO_PORT="8080" # Port Domoticz à renseigner
TELEINFO_USB="20" # Port USB où est branché le module Teleinfo
PUISSANCE="6000" # Puissance du compteur en VA
CONSO_IDX="250" # IDX Compteur Conso EDF à renseigner linky_conso_edf
INJECTION_IDX="251" # IDX Compteur Injection EDF à renseigner linky_injection
P1_IDX="252" # IDX Compteur Intelligent P1 à renseigner linky_compt_intell_p1
AUTOCONSO_IDX="253" # IDX Compteur Autoconso à renseigner linky_autoconso
CHARGE_IDX="254" # IDX Charge à renseigner linky_charge
SMA_IDX="255" # IDX Plugin SMA linky_hypontech
VALEUR_DECOMPTE="3" # MAJ des compteurs toutes les 4 secondes environ (un passage du script prend en moyenne 1.3 Secondes)
DECOMPTE="$VALEUR_DECOMPTE"
sudo stty -F /dev/ttyUSB$TELEINFO_USB 9600 evenp -crtscts
while true
do
#Récupération de toutes les données dans la trame USB et traitement pour utilisation
TELEINFO=$(grep -E 'EAST|EAIT|SINSTS|SINSTI' /dev/ttyUSB$TELEINFO_USB -m 4 | sort | awk '{ print($1 $2) }' | sed 's/[a-z A-Z]//g')
#Récupération des données de production
PRODPV=$(curl -s "http://$DOMO_IP:$DOMO_PORT/json.htm?type=devices&rid=$SMA_IDX" | jq -r .result[]."Usage" | sed 's/[a-z A-Z]//g')
PRODPVKWH=$(curl -s "http://$DOMO_IP:$DOMO_PORT/json.htm?type=devices&rid=$SMA_IDX" | jq -r .result[]."Data" | sed 's/[a-z A-Z .]//g')
#Lecture des données récupérées
#EAIT = Energie Active Injectée Totale
#EAST = Energie Active Soutirée Totale
#SINSTI = Puissance Apparente Instantanée Injectée
#SINSTS = Puissance Apparente Instantanée Soutirée
#CHARGE = Pourcentage de Charge par rapport à l'abonnement - Peut-être utilisée pour faire du délestage
#AUTOCONSO = Autoconsommation instantanée en W
#AUTOCONSOKWH = Autoconsommation totale en Wh
#TOTALELEC = Consommation Totale en W (Autoconso + EDF)
EAIT=$(echo $TELEINFO | awk '{ print $1}')
EAST=$(echo $TELEINFO | awk '{ print $2}')
SINSTI=$(echo $TELEINFO | awk '{ print $3}')
SINSTS=$(echo $TELEINFO | awk '{ print $4}')
CHARGE=$(echo "scale=2; $SINSTS/$PUISSANCE*100" | bc -l)
AUTOCONSO=$(echo $(($PRODPV-$SINSTI)))
AUTOCONSOKWH=$(echo "$PRODPVKWH-$EAIT" | bc)
TOTALELEC=$(echo "$AUTOCONSO+$SINSTS" | bc)
ERREUR_TELEINFO="0"
#Tests pour affichage des données dans la console
#echo $TELEINFO
#echo "EAIT : $EAIT"
#echo "EAST : $EAST"
#echo "SINSTI : $SINSTI"
#echo "SINSTS : $SINSTS"
#echo "CHARGE : $CHARGE"
#echo "PRODPV : $PRODPV"
#echo "PRODPVKWH : $PRODPVKWH"
#echo "AUTOCONSO : $AUTOCONSO"
#echo "AUTOCONSOKWH : $AUTOCONSOKWH"
#echo "TOTALELEC : $TOTALELEC"
#echo "ERREUR : $ERREUR_TELEINFO"
#echo "DECOMPTE : $DECOMPTE"
if [[ $DECOMPTE = 0 ]] ; then
#Données envoyées vers le compteur Conso EDF
if [[ $SINSTS = +([0-9]) ]] && [[ $EAST = +([0-9]) ]] ; then
curl -s "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command¶m=udevice&idx=$CONSO_IDX&nvalue=0&svalue=$SINSTS;$EAST" > /dev/null
else ERREUR_TELEINFO="1"
fi
#Données envoyées vers le compteur Injection EDF
if [[ $SINSTI = +([0-9]) ]] && [[ $EAIT = +([0-9]) ]] ; then
curl -s "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command¶m=udevice&idx=$INJECTION_IDX&nvalue=0&svalue=$SINSTI;$EAIT" > /dev/null
else ERREUR_TELEINFO="1"
fi
#Données envoyées vers le compteur Autoconso
if [[ $AUTOCONSO = +([0-9]) ]] && [[ $AUTOCONSOKWH = +([0-9]) ]] ; then
curl -s "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command¶m=udevice&idx=$AUTOCONSO_IDX&nvalue=0&svalue=$AUTOCONSO;$AUTOCONSOKWH" > /dev/null
else ERREUR_TELEINFO="1"
fi
#Données envoyées vers le compteur intelligent P1
if [[ $TOTALELEC = +([0-9]) ]] && [[ $ERREUR_TELEINFO = 0 ]] ; then
curl -s "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command¶m=udevice&idx=$P1_IDX&nvalue=0&svalue=$EAST;$AUTOCONSOKWH;$EAIT;$AUTOCONSOKWH;$TOTALELEC;$PRODPV" > /dev/null
fi
DECOMPTE="$VALEUR_DECOMPTE+1"
fi
#Données envoyées vers le compteur de charge
curl -s "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command¶m=udevice&idx=$CHARGE_IDX&nvalue=0&svalue=$CHARGE" > /dev/null
DECOMPTE=$((DECOMPTE-1))
done
Je suis en attente de l'information EAIT (modification de la part d'Enedis à faire sur le linky, ma déclaration autoconsommation est en cours de traitement), mais la consommation devrait remonter s'il n'y avait pas d'erreur de script.
En vous remerciant pour votre aide, si vous avez une autre solution adaptée à mon niveau, elle sera la bienvenue.