Page 1 sur 1
Commandes de bases pour les scripts lua
Publié : 10 janv. 2015, 14:54
par Jose
Bonjour à tous,
Je cherche la syntaxe des commandes permettant l’exécution de scripts lua dans domoticz. On trouve bien sur le net quelques tuto pour le language lua mais rien de bien concret pour son adaptation sur domoticz.
Je pinaille pour mettre à jour des variables perso en fonction d'un événement. Un exemple vite fait:
Code : Tout sélectionner
commandArray = {}
VAL_QTE_SAC = uservariables["VAL_QTE_SAC"]
VAL_CPT_GRANULE_TOTAL = uservariables["VAL_CPT_GRANULE_TOTAL"]
VAL_CAPTEUR_RFID = uservariables["VAL_CAPTEUR_RFID"]
if VAL_CAPTEUR_RFID == 1 then
VAL_CPT_GRANULE_TOTAL = VAL_CPT_GRANULE_TOTAL + VAL_QTE_SAC
print("****** GRANULES TOTAL " .. VAL_CPT_GRANULE_TOTAL)
-- c est la que ca ne va plus. Comment faire pour mettre a jour cette variable dans domoticz ?
-- je ne connais pas la syntaxe :(
update uservariables ["VAL_CAPTEUR_RFID"] = '0'
end
return commandArray
Le code n'est pas terminé vu que je n'arrive pas à franchir cette étape.
Je prends vos conseils avec grand plaisir.
José
Re: Commandes de bases pour les scripts lua
Publié : 10 janv. 2015, 18:57
par patrice
Bonjour
La syntaxe est un
commandArray['Lum_Exterieur']='Off'
exemple :
print (difference)
if (otherdevices['Lum_Exterieur'] == 'On' and difference > 10) then
commandArray['Lum_Exterieur']='Off'
end
return commandArray
il faut assigner commandArray puis à la fin du script faire un
return commandArray
Re: Commandes de bases pour les scripts lua
Publié : 11 janv. 2015, 00:12
par Jose
Bonsoir Patrice,
Bon j'ai compris pour les interrupteurs et autres devices mais je bloque particulièrement sur la mise à jour de variables perso.
Voici le code :
Code : Tout sélectionner
commandArray = {}
-- affichage des variables declarées dans domoticz
print(uservariables["VAL_CAPTEUR_RFID"])
print(uservariables["VAL_QTE_SAC"])
print(uservariables["VAL_CPT_GRANULE_TOTAL"])
-- attribution pour rendre les calculs plus simples
Rfid=uservariables["VAL_CAPTEUR_RFID"]
Total=uservariables["VAL_CPT_GRANULE_TOTAL"]
Sac=uservariables["VAL_QTE_SAC"]
print ("-+-+-+-+-")
-- vérification
print(Rfid)
print(Sac)
print(Total)
-- si passage rfid à 1
if Rfid == 1 then
Total = Total + Sac
print("Qte totale:" ..Total)
--- Transmission de la valeur de Total à la variable domoticz (Pas marche), l'autre non plus
commandArray["VAL_CPT_GRANULE_TOTAL"] = Total
commandArray["VAL_CAPTEUR_RFID"] = 0
end
print("****** GRANULES TOTAL " .. uservariables["VAL_CPT_GRANULE_TOTAL"])
return commandArray
Je suis certain que je me complique la vie quelque part.
Voici les logs
2015-01-11 00:13:06 LUA: 1
2015-01-11 00:13:06 LUA: 15
2015-01-11 00:13:06 LUA: 100
2015-01-11 00:13:06 LUA: -+-+-+-+-
2015-01-11 00:13:06 LUA: 1
2015-01-11 00:13:06 LUA: 15
2015-01-11 00:13:06 LUA: 100
2015-01-11 00:13:06 LUA: Qte totale:115 <=== On voit que le calcul se fait bien
2015-01-11 00:13:06 LUA: ****** GRANULES TOTAL 100
2015-01-11 00:13:06 Error: commandArray should only return ['string']='actionstring' or [integer]={['string']='actionstring'}
Re: Commandes de bases pour les scripts lua
Publié : 11 janv. 2015, 22:02
par patrice
bonjour
Je ne suis pas un expert de lua et je n'ai rien sous la main pour tester mais il me semble qu'il faut convertir ta valeur en chaine avant de l'envoyer dans le command array
Je crois que c'est tostring(variable)
cherche dans le forum dans les scriot tu devrais trouver des pistes
à moins que JackSlayter soit dans le coin pour te répondre ....
Re: Commandes de bases pour les scripts lua
Publié : 11 janv. 2015, 22:57
par Jose
Bonsoir,
J'ai essayé également comme tu l'avais décrit dans ton article sans succès. Si JackSlayter passe dans le coin, je serai preneur d'un petit cours de Lua.
En attendant, je n'ai fait en python (sans utiliser les variables de domoticz) mais de manière très classique. L'essentiel c'est que ça marche.
Bonne semaine
Re: Commandes de bases pour les scripts lua
Publié : 06 févr. 2015, 20:20
par vil1driver
Jose a écrit : On trouve bien sur le net quelques tuto pour le language lua mais rien de bien concret pour son adaptation sur domoticz.
Salut,
Un petit cours google peut être ????
Il y a un wiki et un forum officiel !
Est-ce si compliqué de taper wiki domoticz uservariable ?
https://www.google.fr/search?q=wiki+dom ... ervariable
Le Premier lien donne la réponse, faut ptète faire un effort !
Code : Tout sélectionner
commandArray['Variable:MyVar']= tostring(uservariables["MyVar"] +25)
Re: Commandes de bases pour les scripts lua
Publié : 06 févr. 2015, 20:39
par Jose
Tiens et si tu gardais tes réflexions pour toi ?
Re: Commandes de bases pour les scripts lua
Publié : 06 févr. 2015, 22:37
par hobbe
Jose a écrit :Je cherche la syntaxe des commandes permettant l’exécution de scripts lua dans domoticz. On trouve bien sur le net quelques tuto pour le language lua mais rien de bien concret pour son adaptation sur domoticz.
L'article du wiki "
By adding your own scripts to the scripts/lua/ dir in your domoticz installation folder" répond à tes questions, mais en anglais.
Grosso-modo, Domoticz te fournit un ensemble de tableaux : celui avec les périphériques qui ont changé d'état (
devicechanged), celui avec tes variables Domoticz (
uservariables) et autres périphériques (
otherdevices).
Les valeurs de ces tableaux ne changent pas, donc ton dernier
print affiche encore la valeur originale
Code : Tout sélectionner
print("****** GRANULES TOTAL " .. uservariables["VAL_CPT_GRANULE_TOTAL"])
L'autre concept est la liste des comandes que tu demandes à Domoticz d'effectuer à la fin de ton script.
Il faut les enregistrer dans le tableau
commandArray.
Ces commandes ont une syntaxe particulière résumée dans l'article cité ci-dessus.
Par exemple :
- commandArray['Lumière']='On' -> allumer l’interrupteur "Lumière"
- commandArray['SendNotification']='subject#body#0' -> envoyer une notification
- commandArray['SendEmail']='subject#body#your@email.com' -> envoyer un mail
- commandArray['OpenURL']='www.yourdomain.com/api/movecamtopreset.cgi' -> ouvrir une URL, fait un appel HTTP
- commandArray['Variable:MyVar']='Some value' -> assigner la valeur 'Some value' à la variable 'MyVar'
Donc pour assigner la valeur de
Total à ta variable
VAL_CPT_GRANULE_TOTAL, il faut faire :
Bon courage !
Re: Commandes de bases pour les scripts lua
Publié : 06 févr. 2015, 22:59
par vil1driver
[edit]
@José,
Je te présente mes excuses,
ma réponse était déplacée,
je me suis montré cassant, j'en suis désolé.
Donne un poisson à un homme, il aura à manger pour un jour; apprends-lui à pêcher, il aura à manger [...] pour tous les jours
[/edit]