Page 1 sur 1
Alimenter dynamiquement selector
Publié : 11 févr. 2022, 22:56
par pierrotori
Bonsoir
Peut on alimenter le selector d’un switch via dzvents ou json ?
Pierrotori
Re: Alimenter dynamiquement selector
Publié : 12 févr. 2022, 07:30
par Keros
Re: Alimenter dynamiquement selector
Publié : 12 févr. 2022, 13:23
par pierrotori
Setlevel c’est pour positionner un niveau
Moi je voudrais ajouter un niveau
Re: Alimenter dynamiquement selector
Publié : 12 févr. 2022, 13:39
par Neutrino
ça doit être possible mais c'est pas prévu/fait pour.
Par exemple
Code : Tout sélectionner
http://ipdomo/json.htm?addjvalue=0&addjvalue2=0&customimage=0&description=&idx=IDX&name=Test+Custom&options=TGV2ZWxOYW1lczpPZmZ8Q2xpY2t8TG9uZyBDbGlja3xEb3VibGUgQ2xpY2t8VHJpcGxlIENsaWNrfExvbmcgQ2xpY2sgUmVsZWFzZXx0ZXN0O0xldmVsQWN0aW9uczp8fHx8fHw7U2VsZWN0b3JTdHlsZToxO0xldmVsT2ZmSGlkZGVuOmZhbHNl&protected=false&strparam1=&strparam2=&switchtype=18&type=setused&used=true
ça modifie la liste des level.
Dans Options, c'est du base64, traduit, ça donne ça :
Code : Tout sélectionner
LevelNames:Off|Click|Long Click|Double Click|Triple Click|Long Click Release|test;LevelActions:||||||;SelectorStyle:1;LevelOffHidden:false
Si ça peut aider.
Re: Alimenter dynamiquement selector
Publié : 12 févr. 2022, 13:40
par Keros
Rajouter un niveau a un sélecteur ? Là, je ne sais pas
Je ne le vois pas dans les doc DzVents ou API. Maintenant il doit bien y avoir une possibilité puisque les plugins Python sont capables de créer des widgets sélecteurs avec des valeurs spécifiques.
Tu peux nous expliquer ton besoin ?
Re: Alimenter dynamiquement selector
Publié : 12 févr. 2022, 16:21
par pierrotori
je souhaiterais alimenter cette liste avec le nom de mes scripts timer en auto puisque ayant que des scripts dzvents à ce jour, je peux scanner tous les fichiers commençant par t_*.lua et mettre à jour une fois par jour la liste du sélecteur avec une action sur le sélecteur de type json qui enverrait la commande dz.emitEvent('nom_script')
Le but serait que quand j'ai besoin de tester je puisse le faire à la demande avec un envoi de la commande dz.emitEvent('nom_script') en appuyant sur le switch correspondant au script du selecteur, ce qui évite de modifier le timer dans le script
Et les scripts auront ce code on = { customEvents = { 'nom_script' } }, systématiquement dans mon modèle de script de type timer
Re: Alimenter dynamiquement selector
Publié : 23 févr. 2022, 09:21
par pierrotori
donc oui on peut le faire via l'url ou l'ensemble des niveaux est encodé en base 64 bits, il faudra utiliser la fonction toBase64(string): Function: ) Encode a string to base64, voir
https://www.domoticz.com/wiki/DzVents:_ ... _scripting
Exemple Switch 242 en Selector non protégé avec menu selection et menu off actif
ici suppression de tous les niveaux avec la chaine : LevelNames:;LevelActions:;SelectorStyle:1;LevelOffHidden:false7
Code : Tout sélectionner
curl -s 'http://127..0.0.1:8080/json.htm?addjvalue=0&addjvalue2=0&customimage=124&description=&idx=242&name=reset_version&options=TGV2ZWxOYW1lczo7TGV2ZWxBY3Rpb25zOjtTZWxlY3RvclN0eWxlOjE7TGV2ZWxPZmZIaWRkZW46ZmFsc2U%3D&protected=false&strparam1=&strparam2=&switchtype=18&type=setused&used=true'
ici ajout des niveaux aa et bb avec la chaine LevelNames:
Off|aa|bb;LevelActions:||;SelectorStyle:1;LevelOffHidden:false
Code : Tout sélectionner
curl -s 'http://127.0.0.1:8080/json.htm?addjvalue=0&addjvalue2=0&customimage=124&description=&idx=242&name=reset_version&options=TGV2ZWxOYW1lczpPZmZ8YWF8YmI7TGV2ZWxBY3Rpb25zOnx8O1NlbGVjdG9yU3R5bGU6MTtMZXZlbE9mZkhpZGRlbjpmYWxzZQ%3D%3D&protected=false&strparam1=&strparam2=&switchtype=18&type=setused&used=true'
Question
Du coup avant de me lancer, comment récupère t'on le statut on/off d'un
selector car le statut ramène le niveau sélectionné ?
Re: Alimenter dynamiquement selector
Publié : 23 févr. 2022, 17:07
par pierrotori
Du coup j'ai trouvé, il faut utiliser domoticz.devices(ScriptSelector).nValue il est soit egal à 2 si On ou 0 si Off, bien sure il faut que l'option Cacher le niveau Off ne soit pas Active
Le script prendra tous les scripts de type timer afin d'alimenter un selector et donc exécuter celui-ci sans modifier le timer du script
il faudra donc intégrer dans tous les scripts la notion de
gestion custom events
Code : Tout sélectionner
on = {
timer = { 'at 00:05' },
customEvents = { 't_mode_calcul' }
},
Ajouter le param item
et pour le fun tracer le déclenchement et réarmer le switch du selector qui la device 242 dans mon cas
Code : Tout sélectionner
-- PROGRAM STARTS
dz.log('============== mode calcul ==================', dz.LOG_INFO)
if item.isTimer then
dz.log('Déclenchement timer', dz.LOG_DEBUG)
elseif item.isCustomEvent then
dz.log('Déclenchement reset force', dz.LOG_DEBUG)
dz.devices(242).switchOn()
else
return
end