Closed rezzalex closed 6 months ago
Bonsoir, A priori, je plaide non coupable ! Il semble que les dispositifs de type push button n'admettent pas de commandes en dehors d'un appui sur l'interface Web. J'ai testé avec un push button virtuel, et ils ne répondent ni à DZvents, ni à LUA "simple". Du coup, il faudrait, soit demander le support des changements de push button par script à Domoticz, soit utiliser un autre type qui supporte les commandes LUA/DZvents.
Merci d'avoir testé.
C'est étrange, car mon script fonctionnait avec le device précédent, à savoir un module zwave qui donnait un push-on Button coté DZ
J'essaierai de changer le type du device de pour un "light" classique...
Est-ce que c'est bien exactement le même type dans les 2 cas ? J'ai fait le test avec 2 push buttons. Le premier ("Test") qui déclenche un script, pour modifier le second (push button). J'ai une version LUA et une DZvents. Les deux push buttons ont été créés à partir d'un hardware de type "virtual switch". Les codes sont en dessous.
commandArray = {}
for deviceName,deviceValue in pairs(devicechanged) do
print ("Device based event fired on >"..deviceName.."<, value >"..tostring(deviceValue).."<");
if (deviceName=="Test") then
print("Feu !")
commandArray["push button"] = "On"
end
end
return commandArray
return {
on = { devices = { 'Test' } },
execute = function(domoticz, device)
domoticz.device("push button").switchOn()
end
}
@FlyingDomotic , je viens de trouver ca mais n'est pas pu le tester encore :
(https://github.com/domoticz/domoticz/issues/5582#issuecomment-1416045115)
Je viens de tester, et je n'y comprends plus grand chose ...
Il semblerait que le .switchOff().slient() débloque le switch, puisqu'on peut ensuite l'utiliser "normalement", avec LUA et avec DZvents.
Voilà les scripts utilisés, avec "Test "qui est le bouton déclencheur, et "PushOn" qui est un push button On.
return {
on = {devices = {'Test'}},
execute = function(domoticz, device)
print("Avant switchOn : "..domoticz.devices("PushOn").state)
domoticz.devices("PushOn").switchOn()
print("Après switchOn : "..domoticz.devices("PushOn").state)
domoticz.devices("PushOn").switchOff().silent()
print("Après switchOff : "..domoticz.devices("PushOn").state)
end
}
commandArray = {}
for deviceName,deviceValue in pairs(devicechanged) do
if (deviceName=='Test') then
print("Active PushOn")
commandArray['PushOn'] = "On"
end
end
return commandArray
Merci de me dire si ça a décoincé la situation ...
Le 24/04/2024 à 10:22, RezzA a écrit :
@FlyingDomotic , je viens de trouver ca mais n'est pas pu le tester encore :
(https://github.com/domoticz/domoticz/issues/5582#issuecomment-1416045115)
Je testerai dés que possible. Puisque la commande via DZ UI fonctionnait sans problème, puis-je donc enlever ma configuration pour ce device dans le fichier airsend.json ?
Puis-je donc enlever ma configuration pour ce device dans le fichier airsend.json ?
Il n'y a pas d'obligation de tout déclarer au plugin. On peut très bien ne gérer qu'une partie des équipements ...
Le 24/04/2024 à 11:16, RezzA a écrit :
Je testerai dés que possible. Puisque la commande via DZ UI fonctionnait sans problème. Puis-je donc enlever ma configuration pour ce device dans le fichier airsend.json ?
Puis-je donc enlever ma configuration pour ce device dans le fichier airsend.json ? Il n'y a pas d'obligation de tout déclarer au plugin. On peut très bien ne gérer qu'une partie des équipements ... Le 24/04/2024 à 11:16, RezzA a écrit : … Je testerai dés que possible. Puisque la commande via DZ UI fonctionnait sans problème. Puis-je donc enlever ma configuration pour ce device dans le fichier airsend.json ?
Pas entièrement de tout le plugin, juste de la partie Airsend.json. ?
Je viens de tester, et je n'y comprends plus grand chose ... Il semblerait que le .switchOff().slient() débloque le switch, puisqu'on peut ensuite l'utiliser "normalement", avec LUA et avec DZvents. Voilà les scripts utilisés, avec "Test "qui est le bouton déclencheur, et "PushOn" qui est un push button On.
return { on = {devices = {'Test'}}, execute = function(domoticz, device) print("Avant switchOn : "..domoticz.devices("PushOn").state) domoticz.devices("PushOn").switchOn() print("Après switchOn : "..domoticz.devices("PushOn").state) domoticz.devices("PushOn").switchOff().silent() print("Après switchOff : "..domoticz.devices("PushOn").state) end }
commandArray = {} for deviceName,deviceValue in pairs(devicechanged) do if (deviceName=='Test') then print("Active PushOn") commandArray['PushOn'] = "On" end end return commandArray
Merci de me dire si ça a décoincé la situation ... Le 24/04/2024 à 10:22, RezzA a écrit : … @FlyingDomotic , je viens de trouver ca mais n'est pas pu le tester encore : (domoticz/domoticz#5582 (comment))
Non, aucun effet avec le .silent() ....
J'ai changé le type du device en "On/Off" ("lumière" classique) et le script ne permet tjrs pas de changer l'état... cela fonctionne parfaitement avec un autre device crée par le plugin ZwaveJsUI....
Est-il possible de récupérer le log du plugin, notamment pour voir si on reçoit des commandes du genre Command: 'xxx', Level: xxx, Color: xxx ?
Le 24/04/2024 à 18:40, RezzA a écrit :
J'ai changé le type du device en "On/Off" ("lumière" classique) et le script ne permet tjrs pas de changer l'état...
aucun log /commande commande airsend n'est déclenchée quand je tente d'actionner le device par script... Peut être que le type de dz device créé par le plugin ne le permet pas ?
On s'est peut-être mal compris ...
Pour essayer de voir si le souci vient du plugin ou de Domoticz, j'ai fait un test avec un dispositif Domoticz pur (un virtual device). Il est certain qu'il n'a pas d'action extérieure ,mais il est géré internement comme un "vrai".
Il est possible de reproduire les tests que j'ai réalisés, mais il ne faut pas s'attendre à ce que le plugin soit activé dans le cas d'un virtual device (il manque un peu de magie pour lier les deux).
Donc, une fois qu'on a un "truc" qui fonctionne avec un virtual device, on peut le reproduire avec un device AirSend, qui devrait fonctionner à ce moment là (du moins on l'espère).
Le 25/04/2024 à 10:12, RezzA a écrit :
Je viens de faire un test avec la création d'un second dumy switch en pushon, Avec mon script qui actionne le 2eme si on actionne le 1er, cela fonctionne parfaitement. Cela prouve à mon sens que cela vient du plugin, probablement dans la façon de créer le device. non ?
même test fait avec un AUTRE dispositif Airsend, ca a fonctionné tt de suite
Je veux bien les parties correspondantes au plugin AirSend du log de Domoticz, histoire de voir ce qui se passe en interne. Il faut vérifier que le debug des "Verbose" ou "Extra verbose" avant la manip. Merci également d'indiquer les manips réalisées et d'ajouter le(s) script(s) correspondant(s). S'il y a des éléments "sensibles", ne pas hésiter à les remplacer par des xxx.
En ce qui concerne la façon de créer le device, elle est commune à l'ensemble des dispositifs AirSend, ligne 375 à 378. On utilise "type", "subtype" et "options", plus "switchtype" s'il est défini. Dit autrement, tout est dans le .json donné au plugin ;-)
Le 25/04/2024 à 10:52, RezzA a écrit :
Je viens de faire un test avec la création d'un second dumy switch en pushon, Avec mon script qui actionne le 2eme si on actionne le 1er, cela fonctionne parfaitement. Cela prouve à mon sens que cela vient du plugin, probablement dans la façon de créer le device. non ?
Résolu en supprimant le device et en retirant les lignes spécifiques au Device dans Airsend.json
Merci
Bonjour @FlyingDomotic ,
un nouveau protocole supporté chez DeveMel m'a permis d'ajouter ma commande de porte de garage au plugin.
je viens de découvrir que le device DZ fonctionne en action directe, mais pas en DZvent avec le commande .switchOn()
Voici les extraits de conf du plugin :
config.yaml :
je n'avais au début rien rajouter au fichier airsend.json, j'ai rajouté ca ce matin, dans la partie settings, puis redémarré le plugin, sans supprimer le device DZ déja "découvert" précédemment, sans plus de succès :