Téleinfo filaire avec Linky

Forum dédié aux questions concernant la configuration de votre serveur sous Linux
otello86
Messages : 5
Inscription : 09 nov. 2016, 21:09

Re: Téleinfo filaire avec Linky

Message par otello86 »

Bonjour à tous,

j'ai moi aussi demandé à passer au mode TIC standard suite à l'installation de panneaux solaire et depuis je n'ai pus rien sur Domoticz (tout fonctionnait nickel en historique).
J'ai bien sûr été modifié la vitesse du port dans Domoticz mais pas de mieux.
Suite à la lecture de ce thread j'ai essayé de consulter les trames sur le port ttyUSB0 de mon moudle Teleinfo et ce que je récupère est illisible. Voici le résultat de mon dernier cat :

B
L 0NFb AC


ABF0 000 0 0
E00 0!

E@D 30 "
EAI
HC@
BBJO@" LPA
EA@A
DGEPR]TIL NNNTE@F06
@
@

Si quelqu'un a une idée je suis preneur, sinon je demande à rebasculer en mode historique tant pis.
Carthman
Messages : 96
Inscription : 22 sept. 2016, 16:27

Re: Téleinfo filaire avec Linky

Message par Carthman »

Bonjour,

Est-ce que tu as bien changé les valeurs de lecture de ttyUSB0 ?
Il faut entre autre le passer à 9600 bauds :

sudo stty -F /dev/ttyUSB0 9600 evenp -crtscts
Sebsibou
Messages : 13
Inscription : 07 janv. 2021, 15:13

Re: Téleinfo filaire avec Linky

Message par Sebsibou »

Bonjour,

Etant débutant dans la domotique et Domoticz, je n'arrive pas a savoir où mettre ce script et comment le lancer.

Dans 1 - 2 mois, les panneaux solaire devraient être installés et j'ai souhaité mette en place un Raspberry avec DomiticZ pour optimiser la consommation de ma maison en fonction de la production.

Une âme charitable pourrait-elle voler à mon secours.

En vous remerciant par avance,

Cordialement
Sebsibou
Messages : 13
Inscription : 07 janv. 2021, 15:13

Re: Téleinfo filaire avec Linky

Message par Sebsibou »

Re,

J'ai trouvé comment lancé le script en faisant ./teleinfo (nom du fichier)

Il me retourne ces erreur :

./teleinfo: ligne 35: jq : commande introuvable
(23) Failed writing body
./teleinfo: ligne 36: jq : commande introuvable
(23) Failed writing body
./teleinfo: ligne 53: bc : commande introuvable
./teleinfo: ligne 55: bc : commande introuvable
./teleinfo: ligne 56: bc : commande introuvable

Une idée?
manuloup
Messages : 781
Inscription : 18 févr. 2015, 13:05

Re: Téleinfo filaire avec Linky

Message par manuloup »

Bonjour,

Peux-tu nous montrer ton script ?
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...
Sebsibou
Messages : 13
Inscription : 07 janv. 2021, 15:13

Re: Téleinfo filaire avec Linky

Message par Sebsibou »

Voici mon script

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.12.90"           # IP Domoticz à renseigner
DOMO_PORT="8080"                # Port Domoticz à renseigner
TELEINFO_USB="0"               # Port USB où est branché le module Teleinfo
PUISSANCE="6000"                # Puissance du compteur en VA
CONSO_IDX="83"                  # IDX Compteur Conso EDF à renseigner
INJECTION_IDX="85"              # IDX Compteur Injection EDF à renseigner
P1_IDX="86"                     # IDX Compteur Intelligent P1 à renseigner
AUTOCONSO_IDX="87"              # IDX Compteur Autoconso à renseigner
CHARGE_IDX="91"                 # IDX Charge à renseigner
SMA_IDX="90"                    # IDX Plugin SMA
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&param=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&param=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&param=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&param=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&param=udevice&idx=$CHARGE_IDX&nvalue=0&svalue=$CHARGE" > /dev/null

DECOMPTE=$((DECOMPTE-1))

done

Cordialement
Dernière modification par Keros le 27 janv. 2021, 18:37, modifié 1 fois.
Raison : Merci de mettre le code entre les balises [code] pour une meilleure lisibilité
manuloup
Messages : 781
Inscription : 18 févr. 2015, 13:05

Re: Téleinfo filaire avec Linky

Message par manuloup »

Il te manque bc et jq.

Essaie ça :

Code : Tout sélectionner

sudo apt-get install jq
sudo apt-get install bc
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...
Sebsibou
Messages : 13
Inscription : 07 janv. 2021, 15:13

Re: Téleinfo filaire avec Linky

Message par Sebsibou »

Je te remercie vraiment d'être aussi réactif.
Je viens de faire ta manip, et voila ce que j'ai en retour :


parse error: Invalid numeric literal at line 1, column 60
parse error: Invalid numeric literal at line 1, column 60
(standard_in) 1: syntax error
./teleinfo: ligne 54: - : erreur de syntaxe : opérande attendu (le symbole erroné est « - »)
(standard_in) 2: syntax error
(standard_in) 1: syntax error
parse error: Invalid numeric literal at line 1, column 60
parse error: Invalid numeric literal at line 1, column 60
parse error: Invalid numeric literal at line 1, column 60
parse error: Invalid numeric literal at line 1, column 60
./teleinfo: ligne 54: -00728 : valeur trop grande pour la base (le symbole erroné est « 00728 »)
(standard_in) 1: syntax error

Le PB de la ligne 54 est peut être du au fait que je n'ai pas encore les panneaux photovoltaïque.

Depuis qu'il y a bc et JQ, je n'ai plus de message d'erreur dans les logs de domoticZ.

Je suppose que nous avançons :D
Sebsibou
Messages : 13
Inscription : 07 janv. 2021, 15:13

Re: Téleinfo filaire avec Linky

Message par Sebsibou »

En relançant l'appareil teleinfo EDF dans Domoticz, les erreur sont revenu, erreur de ma part
Sebsibou
Messages : 13
Inscription : 07 janv. 2021, 15:13

Re: Téleinfo filaire avec Linky

Message par Sebsibou »

Bonjour,

D'après ce que je comprends des messages d'erreurs, il y a quelque chose qui est mal interprété ou un défaut dans le code qui génère cet erreur

mon compteur Linky en TIC standard de marque Sagem envoi ces infos :

EASF01 000149106 7
EASF02 000117372 8
EASF03 000000000 $
EASF04 000000000 %
EASF05 000000000 &
EASF06 000000000 '
EASF07 000000000 (
EASF08 000000000 )
EASF09 000000000 *
EASF10 000000000 "
EASD01 000038672 :
EASD02 000000000 !
EASD03 000128370 7
EASD04 000099436 B
IRMS1 008 6
URMS1 224 B
PREF 06 E
PCOUP 06 _
SINSTS 01891 Y
SMAXSN H210128070638 04840 C
SMAXSN-1 H210127192343 03770 _
CCASN H210128090000 00492 A
CCASN-1 H210128080000 02017 Y
UMOY1 H210128095000 227 5
STGE 003AC401 Q
MSG1 PAS DE MESSAGE <
PRM 123456789@
RELAIS 000 B
NTARF 02 O
NJOURF 00 &
NJOURF+1 00 B
PJOURF+1 0000C001 07388002 1738C001 NONUTILE NONUTILE NONUTILE NONUTILE NONUTILE NONUTILE NONUTILE NONUTILE +
ADSC 022061652517 2
VTIC 02 J
DATE H210128095138 I
NGTF H PLEINE/CREUSE \
LTARF HEURE PLEINE A


Tout cela me semble correspondre à un compteur en mode standard.

Du coup qu'est-ce qui peut provoquer cette erreur dans le script...je sèche
Répondre