Problème premier 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 <\>.
Jerome69
Messages : 98
Inscription : 04 févr. 2020, 23:57

Problème premier script

Message par Jerome69 »

Bonjour,

Je suis entrain d'essayer de créer mon premier script qui doit me remonter la puissance du signal wifi de mon raspberry.

Voilà le code que j'ai mis dans le script LUA :

Code : Tout sélectionner

commandArray = {}
    PuissanceSignal=os.execute("grep 'wlan0' /proc/net/wireless | cut -c 15-17")
 
    commandArray['UpdateDevice']='17|0|'..PuissanceSignal
return commandArray
Le code est court, mais devrait (normalement) fonctionner...

Lorsque je tape la commande grep 'wlan0' /proc/net/wireless | cut -c 15-17 dans le shell du raspberry, j'ai bien la bonne remontée d'information (un chiffre qui tourne entre 90 et 99).

Quand je lance le "commandArray" en mettant une valeur "bidon" dans une variable dans le script, cela remonte bien dans mon capteur.

Mais quand je mets uniquement le code donné plus haut, j'ai ce retour dans le log de Domoticz :
Error: EventSystem: in PuissanceWifi: [string "require 'os'..."]:15: attempt to concatenate global 'PuissanceSignal' (a boolean value)

Auriez-vous une idée du soucis?

Merci d'avance.
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Problème premier script

Message par vil1driver »

Salut,

Fais un print de ta valeur et tu verras bien qu'elle ne vaut pas ce que tu penses.

os.execute n'est pas la bonne commande

Regarde plutôt os.capture
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
Jerome69
Messages : 98
Inscription : 04 févr. 2020, 23:57

Re: Problème premier script

Message par Jerome69 »

En effet, après avoir mis print(tostring(PuissanceSignal)), j'obtiens la valeur "true".

Bon, maintenant il ne me reste qu'à trouver et comprendre l'utilisation de cette fonction "os.capture".

J'ai tenté de simplement remplacer "os.execute" par "os.capture" mais ce n'est pas aussi simple :lol:

Merci pour la piste, je reviendrais s'il y a de l'évolution (ou un blocage).
Jerome69
Messages : 98
Inscription : 04 févr. 2020, 23:57

Re: Problème premier script

Message par Jerome69 »

Bon au final j'ai trouvé et compris, mon script fonctionne. Voilà le code :

Code : Tout sélectionner

function os.capture(cmd)
    local f = assert(io.popen(cmd, 'r'))
    local s = assert(f:read('*a'))
    f:close()
    return s
end

commandArray = {}
    PuissanceSignal=(os.capture("grep 'wlan0' /proc/net/wireless | cut -c 15-17"))
    commandArray['UpdateDevice']='16|0|'..PuissanceSignal
return commandArray
Petite question : J'ai, dans les logs de Domoticz, une ligne qui apparaît toutes les 20 secondes :
Status: EventSystem: Script event triggered: PuissanceWifi

Est-il possible de ne pas la faire afficher? Elle pollue mon fichier log :)

Merci
denis_brasseur
Messages : 898
Inscription : 24 déc. 2018, 17:05
Localisation : (26)

Re: Problème premier script

Message par denis_brasseur »

SI ton script est de type device, il va s’exécuter à chaque changement d'état d'un device, sonde ou actionneur, ce qui semble expliquer ton log très régulier. Pas d’intérêt à mon avis d'avoir ce script qui s’exécute de manière aussi rapproché. Tu peux l'utiliser en script time, il s’exécutera par défaut toute les minutes (peu d’intérêt également) ou lui dire de s’exécuter toute les 5, 10 ou 15 mn par exemple. Tu auras ce message à chaque exécution, mais de manière beaucoup moins rapprochée.
Pi3 + DD PiDrive - RFXtrx433 - AEON Labs ZW090
denis_brasseur
Messages : 898
Inscription : 24 déc. 2018, 17:05
Localisation : (26)

Re: Problème premier script

Message par denis_brasseur »

Script event triggered
Dixit Vil1driver : On peut traduire 'event triggered' par 'déclenchement d'une action'

Tu peux désactiver les "déclencheurs" depuis Réglages Parametres Autres
Capture.PNG
Capture.PNG (9.53 Kio) Consulté 9998 fois
Pi3 + DD PiDrive - RFXtrx433 - AEON Labs ZW090
Jerome69
Messages : 98
Inscription : 04 févr. 2020, 23:57

Re: Problème premier script

Message par Jerome69 »

Merci pour les infos.

J'ai désactivé le script pour le moment, je voulais tester la programmation par quelque chose qui pourrait m'être utile dans le futur (pour le moment le Raspberry est à côté de la box).

Je regarderais cette fonction "time" qui est beaucoup plus adaptée à ce que je veux faire.

Je vous tiens au courant :)
Répondre