Mettre à jour un capteur virtuel
Mettre à jour un capteur virtuel
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.
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.
Raspberry PI5 utilisé pour Domoticz et en serveur de fichiers, archivage interne et cloud, et filtre à spam avec Thunderbird.
OS : Raspbian 64 bit (Debian Trixie)
OS : Raspbian 64 bit (Debian Trixie)
Re: [LUA] Bibliothèque de fonctions
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.jimbou a écrit : 12 sept. 2024, 08:36 Et une petite fonction LUA pour mettre à jour un capteur virtuel ?
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:
Code : Tout sélectionner
commandArray[devSwitchPowerFail] = 'On'Code : Tout sélectionner
commandArray[devSwitchPowerFail] = 'Off'Code : Tout sélectionner
commandArray[#commandArray+1]={['UpdateDevice'] = otherdevices_idx[tempoName].."|0|"..tempoText}Re: Mettre à jour un capteur virtuel
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.
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.
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Re: Mettre à jour un capteur virtuel
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.
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.
Raspberry PI5 utilisé pour Domoticz et en serveur de fichiers, archivage interne et cloud, et filtre à spam avec Thunderbird.
OS : Raspbian 64 bit (Debian Trixie)
OS : Raspbian 64 bit (Debian Trixie)
Re: Mettre à jour un capteur virtuel
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
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.
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.
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Re: Mettre à jour un capteur virtuel
Merci, c'est l'info que je n'avais pas trouvée. En remplaçant le 0 par la valeur, ça marche.lost a écrit : 12 sept. 2024, 18:30 Je dirais que la valeur serait donc à passer à la place du 0 central.
Effectivement, pas besoin de fonction pour ça.
Raspberry PI5 utilisé pour Domoticz et en serveur de fichiers, archivage interne et cloud, et filtre à spam avec Thunderbird.
OS : Raspbian 64 bit (Debian Trixie)
OS : Raspbian 64 bit (Debian Trixie)
Re: Mettre à jour un capteur virtuel
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
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 le widget 1505 ne se met pas a jour
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
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 le widget 1505 ne se met pas a jour
-
fcBourgogne
- Messages : 172
- Inscription : 31 mars 2020, 14:22
Re: Mettre à jour un capteur virtuel
Bonjour,
Peut être avec ceci:
ou :
A+
Peut être avec ceci:
Code : Tout sélectionner
commandArray['UpdateDevice'] = '1505|0|' .. humid
Code : Tout sélectionner
commandArray['UpdateDevice'] = '1505|' .. humid .. '|0' Raspberry PI5+ 1WIRE + I2C +ESP8266 +esp32
Re: Mettre à jour un capteur virtuel
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 ....
par contre si je fais
Code : Tout sélectionner
commandArray['UpdateDevice'] = '1505| 45 |0Je vais essayer d'autres syntaxes ....