Petite question : Quand tu sniff tes trames , tu est en profil consommateur sur ton linky ou profil producteur ?
J'imagine que c'est la seconde réponse , hélas pour moi
Edit: Et ton compteur TeleinfoKw total, c'est un managed compteur ?
Code : Tout sélectionner
EAST 023716699 :
EASF01 014140207 5
EASF02 009576492 M
EASF03 000000000 $
EASF04 000000000 %
EASF05 000000000 &
EASF06 000000000 '
EASF07 000000000 (
EASF08 000000000 )
EASF09 000000000 *
EASF10 000000000 "
EASD01 009092372 @
EASD02 014624327 >
EASD03 000000000 "
EASD04 000000000 #
EAIT 000679213 !
ERQ1 000005316 J
ERQ2 000000000 <
ERQ3 001241201 H
ERQ4 017106776 !
IRMS1 010 /
URMS1 231 @
PREF 12 B
PCOUP 12 \
SINSTS 02281 S
SMAXSN H221205071229 04180 ;
SMAXSN-1 H221129194424 02710 ^
SINSTI 00000 <
SMAXIN H221205121543 01430 '
SMAXIN-1 H221129122320 01490 J
CCASN H221205193000 00864 F
CCASN-1 H221205190000 00670 \
CCAIN H221205193000 00000 *
CCAIN-1 H221205190000 00000 E
UMOY1 H221205195000 232 0
STGE 003A4101 ?
MSG1 PAS DE MESSAGE <
PRM 24380173475488 A
RELAIS 000 B
NTARF 01 N
NJOURF 00 &
NJOURF+1 00 B
PJOURF+1 00008001 NONUTILE NONUTILE NONUTILE NONUTILE NONUTILE NONUTILE NONUTILE NONUTILE NONUTILE NONUTILE 9
ADSC 022064611388 6
VTIC 02 J
DATE H221205195710 D
NGTF BASE <
LTARF BASE F
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