Bonjour
Alors ce morceau de code fonctionne chez moi
Code : Tout sélectionner
#!/bin/bash
DOMO_IP="192.168.X.X" # Domoticz IP Address à renseigner
DOMO_PORT="XXX" # Domoticz Port à renseigner
TELEINFO_CONSO_IDX="90" # Teleinfo CONSO IDX à renseigner
#EAST=$(grep EAST /dev/ttyUSB12 -m 1 | awk '{ print $2}')
#EAIT=$(grep EAIT /dev/ttyUSB12 -m 1 | awk '{ print $2}')
#SINSTS=$(grep SINSTS /dev/ttyUSB12 -m 1 | awk '{ print $2}')
#SINSTI=$(grep SINSTI /dev/ttyUSB12 -m 1 | awk '{ print $2}')
echo "EAST : $EAST"
echo "EAIT : $EAIT"
echo "SINSTS : $SINSTS"
echo "SINSTI : $SINSTI"
#if [[ $SINSTS = +([0-9]) ]] ; then
#curl -s "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command¶m=udevice&idx=$TELEINFO_CONSO_IDX&nvalue=0&svalue=$SINSTS;$EAST" > /dev/null
#fi
Ca fonctionne pas trop mal, mais ça peut être un peu lent, car même si j'ai mis l'ordre des différents grep en fonction de l'ordre d'arrivée des infos désirées, le temps de traitement peut sauter une trame et du coup ça attend la trame d'après pour récupérer l'info manquante.
Je cherche donc à récupérer les 4 infos en une seule trame, avec cela :
et j'obtient
Code : Tout sélectionner
SINSTS 03856 \
SINSTI 00000 <
EAST 026715032 )
EAIT 002666950 '
Le problème c'est que je n'arrive pas à utiliser ce résultat dans une variable : le $variable me renvoie que la première ligne :
Code : Tout sélectionner
TELEINFO=$(grep -E 'EAST|EAIT|SINSTS|SINSTI' /dev/ttyUSB12 -m 4)
echo $TELEINFO
SINSTI 00000 < '
Bien sûr, en fonction de quand le script est déclenché, la première valeur à apparaitre n'est pas toujours la même !
J'ai passer des heures à essayer différents moyens, avec
sed, avec
awk, avec
| tr '\n' ' ',..., entre autres pour essayer de compiler le résultat affiché sur 4 lignes en une seule pour qu'elle puisse entrer dans la variable, rien n'y fait, je dois passer à côté de quelque chose, ou peut être faut-il définir la variable d'une autre manière ?
Si quelqu'un est susceptible de m'aider, je suis preneur !!!
Merci.