Page 1 sur 3

Alimenter une variable à partir d'un script [Résolu]

Publié : 22 janv. 2019, 18:45
par f0emm
Bonsoir,
Le serveurs de ma Zibase devant fermer fin Mars, j'ai choisi la solution Domoticz + Rflink en remplacement.

Pour l'instant je me débrouille avec Blockly, mais là je pense qu'un script s'impose pour le calcule d'une durée à insérer dans une variable.
Cette durée sera le temps de fonctionnement de ma filtration de piscine soit :

la température de ma sonde de température IDX 19 divisée par 16

Ex : temp = 24°C

La filtration doit tourner 24/2= 12 heures par jour divisé sur 8 périodes soit 90 minutes par période.

Calcul : 24/16*60 = 90

90 étant à insérer dans la variable

Modification de la variable toutes les heures.

Et c'est là ou je bloque n'y connaissant rien en script.

Si une âme charitable passe par là et aurait un peu de son temps à me consacrer ;)
Bien évidement je vais étudier ce premier script afin de comprendre son fonctionnement et essayer de me débrouiller seul par la suite.
Je vous en remercie d'avance.
Bonne soirée.
A+
Fab

Re: Alimenter une variable à partir d'un script

Publié : 22 janv. 2019, 20:30
par fratton
En LUA :

Code : Tout sélectionner

commandArray['Variable:Nomdelavariable']=24/16*60
https://www.domoticz.com/wiki/User_variables#Lua

Re: Alimenter une variable à partir d'un script

Publié : 22 janv. 2019, 20:39
par f0emm
Bonsoir,
Merci fratton
Je regarde le lien
24 étant la température
Et script à lancer toutes les heures
Bonne soirée
A+
Fab

Re: Alimenter une variable à partir d'un script

Publié : 22 janv. 2019, 21:17
par f0emm
:o
J'ai bien tout lu après traduction, je ne vois pas comment récupérer la température de ma sonde et actualiser la variable à intervalle régulier.
Je sèche !

Re: Alimenter une variable à partir d'un script

Publié : 22 janv. 2019, 21:23
par fratton
pour récupérer la température, le calcul et la stocker dans la variable :

Code : Tout sélectionner

commandArray = {}
local matemperature = tonumber(string.format("%.1f", otherdevices_temperature['masonde']))

local moncalcul = matemperature /16*60

commandArray['Variable:MaVariable']=domoticz.round(moncalcul , 0)

return commandArray
Avec un LUA type time se sera toute les minutes.

Si tu veux toutes les 5 minutes il faut :

Code : Tout sélectionner

commandArray = {}
now=os.date("*t")
if now.min % 5 == 0 then  -- exécution toutes les 5 minutes

.....

end
return commandArray


Re: Alimenter une variable à partir d'un script

Publié : 22 janv. 2019, 21:43
par f0emm
Merci !
En remplacement de 'masonde' et 'mavariable', je mets le nom ou l'IDX ?
Dans le cas ou je choisis l'intervalle d'actualisation, quel type de LUA dois je choisir ?
Merci.

Re: Alimenter une variable à partir d'un script

Publié : 22 janv. 2019, 21:45
par fratton
1. Le nom de la sonde
2. toujours un type time

Re: Alimenter une variable à partir d'un script

Publié : 22 janv. 2019, 21:58
par f0emm
Ok
Je me retrouve donc avec ça :

Code : Tout sélectionner

commandArray = {}
now=os.date("*t")
if now.min % 1 == 0 then  -- exécution toutes les minutes
    
local matemperature = tonumber(string.format("%.1f", otherdevices_temperature['Temp. local piscine']))

local moncalcul = matemperature /16*60

commandArray['Variable:Filtration']=domoticz.round(moncalcul , 0)

return commandArray
Exécution toutes les minutes pour essai.
La "valeur actuelle" dans la variable doit elle changer systématiquement ?
J'ai mis comme type de variable "Décimal"
Dans tous les cas un grand merci ;)

Re: Alimenter une variable à partir d'un script

Publié : 22 janv. 2019, 22:20
par fratton
vérifie dans Log si il n'y a pas d'erreur

Re: Alimenter une variable à partir d'un script

Publié : 22 janv. 2019, 22:27
par f0emm

Code : Tout sélectionner

 2019-01-22 22:27:00.413 Error: EventSystem: in Variable filtration: [string "commandArray = {}..."]:11: 'end' expected (to close 'if' at line 3) near <eof>
Effectivement il y a une erreur