Page 1 sur 2
Mettre à jour un capteur virtuel
Publié : 12 sept. 2024, 08:36
par jimbou
Bonjour,
Et une petite fonction LUA pour mettre à jour un capteur virtuel ?
Ce que je trouve sur les autres forums est trop obscur pour que sache l'adapter à mon besoin, et surtout se trouve au milieu
de scripts qui ont une fonction particulière pour l'utilisateur, et j'ai du mal à en extraire ce qui me serait utile.
D'avance merci.
Re: [LUA] Bibliothèque de fonctions
Publié : 12 sept. 2024, 12:12
par lost
jimbou a écrit : 12 sept. 2024, 08:36
Et une petite fonction LUA pour mettre à jour un capteur virtuel ?
Il n'y a pas à faire une fonction pour cela, la MAJ c'est une entrée commandArray qui se gère toujours de la même manière (virtuel ou pas, même si pour un capteur on ne fait que lire pour les réels). Faire une fonction pour remplacer une ligne de code serait peu efficace.
Par exemple, j'ai une détection de coupure secteur qui alimente un switch virtuel (avec son nom dans la variable devSwitchPowerFail) et la MAJ c'est:
ou
Autre exemple: Un device text virtuel (nom dans tempoName) est alimenté par un script qui va chercher les infos de jours Tempo pour mon abonnement électrique qui est MAJ ainsi avec la chaine pré-construite (dans tempoText):
Code : Tout sélectionner
commandArray[#commandArray+1]={['UpdateDevice'] = otherdevices_idx[tempoName].."|0|"..tempoText}
La syntaxe peut varier selon le type de switch/capteur visé, à voir dans le wiki, mais réel/virtuel c'est pareil.
Re: Mettre à jour un capteur virtuel
Publié : 12 sept. 2024, 12:20
par Keros
Je viens de déplacer les messages dans un nouveau sujet.
Il serait plus facile si tu nous expliquait quel capteur virtuel tu essayes de mettre à jour. Nous partager ton script et les logs associés nous permettrait de t'aider plus facilement.
Re: Mettre à jour un capteur virtuel
Publié : 12 sept. 2024, 13:35
par jimbou
Merci.
Alors j'ai créé un capteur virtuel d'humidité dans lequel je veux stocker la valeur d'une variable d'un script LUA.
C'est une variable de type humidité, bien sûr, qui représenté l'humidité réelle mais avec une limitation sur la vitesse de variation. Ca me permet de détecter une augmentation d'humidité plus rapide que la normale. J'en déduis que quelqu'un est en train de se doucher et qu'il faut activer le désembuage électrique du mirroir.
Je veux observer cette variable et avoir un historique car mon script me fait parfois des farces.
Pour mettre à jour ce capteur virtuel SDBhumilim d'ID 36 avec la valeur humilim, j'ai essayé deux instructions :
commandArray['SDBhumilim']= tostring(humilim)
commandArray['UpdateDevice'] = '36|0|' .. tostring(humilim)
Mais sans résultat. Pas de message d'erreur. La première fois (je ne me souviens plus laquelle des deux instructions c'était) le capteur est passé de sa valeur initiale 50 % à 0 %. Et puis plus moyen de la changer, même en remplaçant tostring(humilim) par une valeur comme 10 ou 20.
Je peux mettre le script complet si tu veux, mais je ne suis pas sûr que la logique de fonctionnement de la détection apporte beaucoup.
Re: Mettre à jour un capteur virtuel
Publié : 12 sept. 2024, 18:30
par lost
jimbou a écrit : 12 sept. 2024, 13:35
commandArray['UpdateDevice'] = '36|0|' .. tostring(humilim)
En général, l'ordre niveau commandArray est le même que l'API HTTP/JSON, soit ici:
https://www.domoticz.com/wiki/Domoticz_ ... s#Humidity
Je dirais que la valeur serait donc à passer à la place du 0 central.
Par ailleurs, otherdevices_idx['SDBhumilim'] devrait retourner l'idx à partir du nom (si unique, pour les idx c'est toujours le cas).
Re: Mettre à jour un capteur virtuel
Publié : 12 sept. 2024, 21:30
par Keros
Si la commande LUA ne passe pas, tu peux essayer de faire directement un appel API.
Tu peux également regarder le DzVents. Les fonctions sont toutes détaillées dans la
documentation. Et, en bonus, le Dzvents te permet de conserver un historique et faire des calcul dessus.
Re: Mettre à jour un capteur virtuel
Publié : 15 sept. 2024, 11:49
par jimbou
lost a écrit : 12 sept. 2024, 18:30
Je dirais que la valeur serait donc à passer à la place du 0 central.
Merci, c'est l'info que je n'avais pas trouvée. En remplaçant le 0 par la valeur, ça marche.
Effectivement, pas besoin de fonction pour ça.
Re: Mettre à jour un capteur virtuel
Publié : 23 oct. 2025, 11:15
par knasson
bonjour,
Je reprends ce post de 2024.
J'ai un capteur qui me renvoi temperature et humidité.
Je souhaite utiliser l'humidité seule dans un device virtuel (humidité) que j'ai cree.
la conclusion de la discussion de <2024 etait qu'il fallait utiliser la nvalue soit lorsqu'on veut mettre a jour le dummy virtuel
commandArray [UpdateDevice]='1505|humid|0'
'
humid' est la valeur de l'humidité extraite du json
comme ceci
Code : Tout sélectionner
json = (loadfile "/home/kan/domoticz/scripts/lua/JSON.lua")() -- For Linux
commandArray = {}
local config=assert(io.popen("curl -s 'http://127.0.0.1:8080/json.htm?type=command¶m=getdevices&rid=1475'"))
local blocjson = config:read('*all')
config:close()
local jsonValeur = json:decode(blocjson)
local humid = jsonValeur.result[1].Humidity
print('****************')
print (humid)
commandArray['UpdateDevice'] = '1505|humid|0'
return commandArray
ca ne marche pas (la valeur de l'humidite ne s'affiche pas dans le widget) ...pourtant je n'ai pas d'erreur dans le log
Si je mets un nombre entier a la place de la variable 'humid' la ca fonctionne.Le nombre s'affiche bien.
Je ne sais pas ce qui cloche...Faut il changer la nature de la variable (chaine, nombre; entier)?
Avez vous une idée de solution?
Merci
Version domoticz 2024-4
edit: Même la mise a jour par l'API ne fonctionne pas

- humidité.jpg (24.15 Kio) Consulté 6588 fois
le widget 1505 ne se met pas a jour
Re: Mettre à jour un capteur virtuel
Publié : 23 oct. 2025, 15:51
par fcBourgogne
Bonjour,
Peut être avec ceci:
ou :
A+
Re: Mettre à jour un capteur virtuel
Publié : 23 oct. 2025, 18:28
par knasson
Merci fcBourgogne ,j'ai essayé les 2 toujours pas de prise en compte,
par contre si je fais
ca prend en compte et ca affiche bien 45% d'humidité
Je vais essayer d'autres syntaxes ....