[Resolu]:Debutant script :

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
dartflag
Messages : 218
Inscription : 27 nov. 2015, 20:43

[Resolu]:Debutant script :

Message par dartflag »

Bonjour a tous,

j'appelle a l'aide pour trouver une solution. Mes connaissances en script shell étant limité, je n'arrive pas a trouver de solution a mon problème. j'ai posé la question dans l'index capteur. Je l'ai peut être ouvert au mauvais en droit? car aucune réponse. Je le mets donc dans scripts

J'ai chez moi une sonde smappee, qui mesure la puissance électrique de mon compteur. J'ai téléchargé un script

https://github.com/apazga/smappee-domoticz-bash

qui permet théoriquement d'avoir la mesure dans Domoticz. Malheureusement j'ai détecté un bug et je n'arrive pas trouver de solution.

j'ai une commande qui met dans une variable la requête au Smappee

SMAP=`curl http://${SMAPPEE_IP}/gateway/apipublic/reportInstantaneousValues`

Code : Tout sélectionner

pi@raspberrypi:~ $ curl http://192.168.150.13/gateway/apipublic/reportInstantaneousValues
{"report":"Instantaneous values:<BR>voltage=235.2 Vrms<BR>FFTComponents:<BR>Phase 1:<BR>\tcurrent=1.437 A, activePower=224.13 W, reactivePower=253.044 var, apparentPower=338.032 VA, cosfi=66, quadrant=0, phaseshift=0.0, phaseDiff=0.0<BR>\tFFTComponents:<BR><BR>Load[640072] state[0] power: 0.0 on Wed Jun 02 07:12:44 GMT 2021<BR>Load[766089] state[0] power: 0.0 on Wed Jun 02 10:47:56 GMT 2021<BR>Load[768207] state[0] power: 0.0 on Wed Jun 02 10:33:21 GMT 2021<BR>Load[636494] state[0] power: 0.0 on Thu Jun 03 06:23:11 GMT 2021<BR>Load[1284372] state[0] power: 0.0 on Mon May 31 18:41:14 GMT 2021<BR>Load[1174230] state[0] power: 0.0 on Wed Jun 02 10:11:40 GMT 2021<BR>Load[554947] state[0] power: 0.0 on Wed Jun 02 21:00:13 GMT 2021<BR>Load[555781] state[0] power: 0.0 on Mon May 31 21:35:29 GMT 2021<BR>Load[634567] state[0] power: 0.0 on Thu Jun 03 06:11:32 GMT 2021<BR>Load[480594] state[0] power: 0.0 on Thu Jun 03 11:08:55 GMT 2021<BR>Load[633425] state[0] power: 0.0 on Tue Jun 01 11:58:34 GMT 2021<BR>Load[549008] state[0] power: 0.0 on Wed Jun 02 10:58:12 GMT 2021<BR>Load[2340027] state[0] power: 0.0 on Wed Jun 02 10:56:47 GMT 2021<BR>Load[633427] state[1] power: 111.5 on Thu Jun 03 09:19:57 GMT 2021<BR>Load[553684] state[0] power: 0.0 on Thu Jun 03 06:00:19 GMT 2021<BR>Load[483418] state[0] power: 0.0 on Thu Jun 03 10:54:39 GMT 2021<BR>Load[580566] state[1] power: 905.4 on Thu Jun 03 10:41:30 GMT 2021<BR>Load[2389249] state[0] power: 0.0 on Supi@raspberrpi@raspberrpi@raspberrpi@raspberrpi@raspberrpi@raspberrpi@raspberrpi@raspberrypi:~ $ 
ensuite une autre commande qui tente d'extraire dans cette chaine de caractère la puissance indiquée dans le smappee.

il s'agit de la valeur qui se trouve après activePower=\

pour cela le script utilise la commande

WATTS=`echo $SMAP |sed -e 's|.* activePower=\(.*\)|\1|' -e 's|\(.\{1,6\}\).*|\1|'`

mais la valeur n'a pas toujours le même format

en général, j'ai du genre123.456 w et pas de soucis, la valeur WATT=123.456
mais quelques fois la valeur renvoyée est du genre 12.3 w et la le script plante car dans la valeur WATT=12.3 w avec le w a la fin et la suite plante a cause du w

comment puis je corriger ce bug?
Dernière modification par dartflag le 22 juin 2021, 22:45, modifié 1 fois.
denis_brasseur
Messages : 898
Inscription : 24 déc. 2018, 17:05
Localisation : (26)

Re: Debutant script :

Message par denis_brasseur »

Apparemment, la méthode employée est de retourner 6 caractères a partir du premier.
Si la chaine est trop courte, tu récupères le dernier caractère (w).
Essaye en remplaçant la chaine espace w ( w) par rien.
https://stackoverflow.com/questions/132 ... ell-script
To replace the first occurrence of a pattern with a given string, use ${parameter/pattern/string}:

#!/bin/bash
firstString="I love Suzi and Marry"
secondString="Sara"
echo "${firstString/Suzi/$secondString}"
# prints 'I love Sara and Marry'
Pas très propre, mais ça peux fonctionner.
Pi3 + DD PiDrive - RFXtrx433 - AEON Labs ZW090
dartflag
Messages : 218
Inscription : 27 nov. 2015, 20:43

[Resolu]:Re: Debutant script :

Message par dartflag »

bonsoir Denis

et bien merci de ton retour, j'ai tenté la piste que tu as ouverte. Et puis j'ai un collègue qui est un ancien développeur. Je ne voulais pas l'embêter avec ca et finalement je lui ai posé la question.

en 3 minutes il m'a corrigé le truc :shock: moi je rame depuis 1 semaine sur ce truc :oops:

il a modifié
WATTS=`echo $SMAP |sed -e 's|.* activePower=\(.*\)|\1|' -e 's|\(.\{1,6\}\).*|\1|'`

avec ca
WATTS=`echo $SMAP |sed -e 's|.* activePower=\(.*\)|\1|' -e 's|\(.\{1,6\}\) W.*|\1|'`

et ca marche nickel

c'est sur la piste de _w que tu évoquais.

Fred
Répondre