Virtual texte
Virtual texte
Bonjour,
Je souhaiterais pouvoir afficher dans un virtual texte un texte et une variable utilisateur.
Par exemple EN CHARGE DEPUIS 35 MINUTES
Le texte etant : EN CHARGE DEPUIS __ MINUTES
La variable utilisateur étant : 35
Cordialement
Je souhaiterais pouvoir afficher dans un virtual texte un texte et une variable utilisateur.
Par exemple EN CHARGE DEPUIS 35 MINUTES
Le texte etant : EN CHARGE DEPUIS __ MINUTES
La variable utilisateur étant : 35
Cordialement
Re: Virtual texte
En dzVents, ça donnerait qq chose comme ça :
Documentation : https://www.domoticz.com/wiki/DzVents:_ ... _scripting
Code : Tout sélectionner
return {
on = {
variables = { 'NomVariableUtilisateur' }
},
execute = function(domoticz, variable)
local virtualText = domoticz.devices('NomDispositifTexteVirtuel')
virtualText.updateText("EN CHARGE DEPUIS ".. tostring(variable.value) .." MINUTES")
end
}Domoticz v2022.2 sur linux-mint / Z-Wave-JS / RFXCom / Zigbee2MQTT
Re: Virtual texte
Merci .
Mais je n’arrive pas a le faire fonctionner, Voila en texte ce que je souhaite faire:
Si capteur = Open
Ecrire dans virtuel texte En fonctionnement depuis xxx minutes
Si capteur = Closed
Ecrire dans virtuel texte En charge depuis xx minutes
xx et xxx sont deux variable utilisateur.
Merci
Mais je n’arrive pas a le faire fonctionner, Voila en texte ce que je souhaite faire:
Si capteur = Open
Ecrire dans virtuel texte En fonctionnement depuis xxx minutes
Si capteur = Closed
Ecrire dans virtuel texte En charge depuis xx minutes
xx et xxx sont deux variable utilisateur.
Merci
Re: Virtual texte
Code : Tout sélectionner
return {
on = {
devices = { 'NomCapteur' },
variables = { 'NomVariableCharge', 'NomVariableFonctionnement' },
},
execute = function(domoticz, item)
local capteur = domoticz.devices('NomCapteur')
local variable
local texte
if capteur.state == 'Open' then
texte = "En fonctionnement depuis "
variable = domoticz.variables('NomVariableFonctionnement')
else
texte = "En charge depuis "
variable = domoticz.variables('NomVariableCharge')
end
local virtualText = domoticz.devices('NomDispositifTexteVirtuel')
virtualText.updateText(texte .. tostring(variable.value) .." minutes")
end
}Domoticz v2022.2 sur linux-mint / Z-Wave-JS / RFXCom / Zigbee2MQTT
Re: Virtual texte
Merci,
cependant il fonctionne mais ne se met pas a jour reste sur 1 min.
Dois je le mettre en script time?
Cordialement
cependant il fonctionne mais ne se met pas a jour reste sur 1 min.
Dois je le mettre en script time?
Cordialement
Re: Virtual texte
Ça dépend de comment sont mises à jour les variables utilisateur.
Par l'interface ou par un appel via l'api JSON, le script devrait être appelé automatiquement à chaque fois qu'une des deux variables est changée.
Si la variable est changée en Lua classique (pas dzVents), par :
Aucun événement n'est déclenché. Dans ce cas-là, il faut modifier le script pour effectuer un OpenURL :
Dans le doute, il faut augmenter le niveau de verbosité des logs, et ajouter des domoticz.log(...) dans le script pour voir ce qui se passe.
Par l'interface ou par un appel via l'api JSON, le script devrait être appelé automatiquement à chaque fois qu'une des deux variables est changée.
Si la variable est changée en Lua classique (pas dzVents), par :
Code : Tout sélectionner
commandArray['Variable:'..USERVARIABLENAME] = USERVARIABLEVALUECode : Tout sélectionner
commandArray['OpenURL']= 'http://IP:PORT/json.htm?type=command¶m=updateuservariable&vname='..USERVARIABLENAME..'&vtype='..USERVARIABLETYPE..'&vvalue='..USERVARIABLEVALUEDomoticz v2022.2 sur linux-mint / Z-Wave-JS / RFXCom / Zigbee2MQTT
Re: Virtual texte
Les variables sont mises a jour par un script lua:
"commandArray = {}
if (otherdevices[switch]=='Closed') then
commandArray['Variable:cpteur tond']= tostring(uservariables["cpteur tond"] +1)
end
if (otherdevices[switch]=='Open') then
commandArray['Variable:cpteur tond1']= tostring(uservariables["cpteur tond1"] +1)
end
return commandArray"
Par contre je ne vois pas ou mettre le code indiqué :
"commandArray['Variable:'..USERVARIABLENAME] = USERVARIABLEVALUE"
Cordialement
"commandArray = {}
if (otherdevices[switch]=='Closed') then
commandArray['Variable:cpteur tond']= tostring(uservariables["cpteur tond"] +1)
end
if (otherdevices[switch]=='Open') then
commandArray['Variable:cpteur tond1']= tostring(uservariables["cpteur tond1"] +1)
end
return commandArray"
Par contre je ne vois pas ou mettre le code indiqué :
"commandArray['Variable:'..USERVARIABLENAME] = USERVARIABLEVALUE"
Cordialement
Re: Virtual texte
Bref, exactement comme je l'ai écrit précédemment, le changement des variables dans ce cas ne déclenche aucun script en réaction.
On peut remédier à ceci de plusieurs façons :
On peut remédier à ceci de plusieurs façons :
- utiliser une commande OpenURL pour changer la variable utilisateur et déclencher l'autre script dzVents
- créer deux dispositifs "Custom Sensor" (minutes), le changement de valeur déclenchera le script
- consolider les deux scripts en un seul script dzVents qui met à jour variables et texte
- consolider les deux scripts en un seul script Lua classique qui met à jour le texte
Code : Tout sélectionner
commandArray = {}
if (otherdevices[switch]=='Closed') then
local temps = tostring(uservariables["cpteur tond"] +1)
commandArray['Variable:cpteur tond']= temps
table.insert(commandArray, { UpdateDevice = otherdevices_idx['NomTexteVirtuel'].. '|0|En charge depuis ' .. temps .. ' minutes' })
end
if (otherdevices[switch]=='Open') then
local temps = tostring(uservariables["cpteur tond1"] +1)
commandArray['Variable:cpteur tond1']= temps
table.insert(commandArray, { UpdateDevice = otherdevices_idx['NomTexteVirtuel'].. '|0|En fonctionnement depuis ' .. temps .. ' minutes' })
end
return commandArrayDomoticz v2022.2 sur linux-mint / Z-Wave-JS / RFXCom / Zigbee2MQTT