jojo Posté(e) le 18 juillet 2022 Signaler Posté(e) le 18 juillet 2022 il y a 32 minutes, Yannick a dit : D'ailleurs concernant la syntaxe, le debug ne montre pas un "And" mais un "Or" regarde !! Comme le disait @Lazer, @Steven est une programmeur hors catégorie !
Lazer Posté(e) le 18 juillet 2022 Signaler Posté(e) le 18 juillet 2022 il y a 51 minutes, Yannick a dit : D'ailleurs concernant la syntaxe, le debug ne montre pas un "And" mais un "Or" regarde !! Ah mais là c'est clair, il est explicitement mentionné le "Or", donc du coup il fait bien un "Ou" logique entre les 3 conditions Time, c'est normal. Du coup je me dis que je n'avais pas dû bien faire attention à la syntaxe de ta règle originale. Tout s'explique... Je récapitule : Si on précise {"Or", .....} => on a bien un Ou logique entre les différentes plages horaires, donc ça fonctionne Si on ne précise pas "Or", alors GEA fait un "ET" logique entre toutes les conditions, et forcément, vu que l'heure courante ne peut pas être dans 2 plages horaires distinctes, ça ne peut pas fonctionner.
Yannick Posté(e) le 18 juillet 2022 Signaler Posté(e) le 18 juillet 2022 je précise que je ne stipule nulle part dans ma règle de faire "ou" !!! GEA.add({{"Time", "14:35", "16h25"}, {"Time", "21:35", "23:25"}, {"Time", "02:35", "06:25"}}, 0, "Démarrage Sèche-Serviettes", {"turnOn", 379})
Yannick Posté(e) le 18 juillet 2022 Signaler Posté(e) le 18 juillet 2022 (modifié) J'ai une question (encore).... comme je l'ai déjà dis j'ai un intercom fibaro je veux faire une règle GEA qui dit que quand on appui sur le bouton de présence, ça active une sonnette AEOTEC. si je fais une règle blocs, ça marche. si je la traduis en LUA ça me donne ça dans les déclarations { conditions = { { id = 726, isTrigger = true, operator = "==", property = "videoGateIncomingCallEvent", type = "device" } }, operator = "all" } ce qui logiquement doit se traduire par cette règle sous GEA GEA.add({"Property", 726,"videoGateIncomingCallEvent", true}, -1, "Quelqu'un Sonne", {"turnOn", 840}) et ben ça marche pas. GEA se fige et ne me sort aucun message d'erreur et plus rien ne se passe. Une idée du pourquoi [18.07.2022] [17:31:58] [TRACE] [QA_GEA_728]: ---------------------------------------------------------------------------------------------------- [18.07.2022] [17:31:58] [TRACE] [QA_GEA_728]: Démarrage automatique de GEA 7.37 : mode autostart [18.07.2022] [17:31:58] [TRACE] [QA_GEA_728]: ---------------------------------------------------------------------------------------------------- [18.07.2022] [17:31:58] [DEBUG] [QA_GEA_728]: Utilisation de la librairie tools v2.20[18.07.2022] [17:31:58] [DEBUG] [QA_GEA_728]: Vérification automatique toutes les 30 secondes [18.07.2022] [17:31:58] [DEBUG] [QA_GEA_728]: Variable QuickApp GEA : GEA_History [18.07.2022] [17:31:58] [DEBUG] [QA_GEA_728]: ---------------------------------------------------------------------------------------------------- [18.07.2022] [17:31:58] [DEBUG] [QA_GEA_728]: Chargement du code utilisateur setEvents() : [18.07.2022] [17:31:58] [DEBUG] [QA_GEA_728]: Ajout auto #1 : [true] => [18.07.2022] [17:31:58] [DEBUG] [QA_GEA_728]: Ajout auto #2 : Démarrage GEA [18.07.2022] [17:31:59] [DEBUG] [QA_GEA_728]: Ajout auto #3 : Démarrage box [18.07.2022] [17:31:59] [DEBUG] [QA_GEA_728]: Ajout auto #4 : Détection nouvelle version stable [18.07.2022] [17:31:59] [DEBUG] [QA_GEA_728]: Ajout auto #5 : Détection nouvelle version beta [18.07.2022] [17:31:59] [DEBUG] [QA_GEA_728]: Ajout auto #8 : ["Time",["Sunset>22:00","22:05"]] => ["Close",[[783,808,796,802,805,799,772]]] [18.07.2022] [17:31:59] [DEBUG] [QA_GEA_728]: Ajout auto #9 : ["Time",["07:30","07:32"]] => ["Open",[[783,808,796,802,805,799,772]]] [18.07.2022] [17:31:59] [DEBUG] [QA_GEA_728]: Ajout auto #10 : ["Value+",[656,23]] => ["Open",[[783,808,796,802,805,799,772],20]] [18.07.2022] [17:31:59] [DEBUG] [QA_GEA_728]: Ajout auto #17 : ["Or",[["Time","14:35","16h25"],["Time","21:35","23:25"],["Time","02:35","06:25"]]] => ["TurnOn",[379]] [18.07.2022] [17:31:59] [DEBUG] [QA_GEA_728]: Ajout auto #18 : ["Or",[["Time","16:26","21h34"],["Time","23:26","02:34"],["Time","06:26","14:34"]]] => ["TurnOff",[379]] [18.07.2022] [17:31:59] [DEBUG] [QA_GEA_728]: ---------------------------------------------------------------------------------------------------- [18.07.2022] [17:31:59] [DEBUG] [QA_GEA_728]: Déclencheurs instantanés : 8 [18.07.2022] [17:31:59] [DEBUG] [QA_GEA_728]: Trigger : device #777 Spa (Terrasse Jacuzzi) power [18.07.2022] [17:31:59] [DEBUG] [QA_GEA_728]: Trigger : device #653 Boîte à Lettres (Couloir) value [18.07.2022] [17:31:59] [DEBUG] [QA_GEA_728]: Trigger : device #748 Porte d'Entrée (Couloir) value [18.07.2022] [17:31:59] [DEBUG] [QA_GEA_728]: Trigger : device #835 Keyfob Carine (HC2) centralSceneEvent 6 Pressed [18.07.2022] [17:31:59] [DEBUG] [QA_GEA_728]: Trigger : device #838 Keyfob Yannick (HC2) centralSceneEvent 6 Pressed [18.07.2022] [17:31:59] [DEBUG] [QA_GEA_728]: Trigger : device #726 Intercom Entrée (Couloir) firstRelayIsOpen [18.07.2022] [17:31:59] [DEBUG] [QA_GEA_728]: Trigger : device #499 Nodon Couloir (Couloir) centralSceneEvent 1 Pressed Modifié le 18 juillet 2022 par Yannick
Lazer Posté(e) le 18 juillet 2022 Signaler Posté(e) le 18 juillet 2022 Regarde le JSON de ton module 726 via l'API, et en particulier la valeur de la propriété videoGateIncomingCallEvent ça ne doit pas être true, tout simplement. GEA va réagir aux changement de valeur des propriétés des modules, et comparer leur valeur. Si tu mets true au hasard et que ça ne correspond pas à une valeur qu'est susceptible de prendre cette propriété, alors ça ne déclenchera jamais.
Yannick Posté(e) le 19 juillet 2022 Signaler Posté(e) le 19 juillet 2022 (modifié) { "id": 726, "name": "Intercom Entrée", "roomID": 220, "view": [ { "assetsPath": "dynamic-plugins/com.fibaro.videoGate", "name": "com.fibaro.videoGate", "translatesPath": "/assets/i18n/com.fibaro.videoGate", "type": "ts" }, { "type": "json" } ], "type": "com.fibaro.fibaroIntercom", "baseType": "com.fibaro.videoGate", "enabled": true, "visible": true, "isPlugin": true, "parentId": 0, "viewXml": true, "hasUIView": false, "configXml": true, "interfaces": [ "tamper" ], "properties": { "SerialNumber": "00004503", "SwVersion": "4.1.5_88_29888e6_REL", "buttonOneIsPressed": false, "buttonThreeIsPressed": false, "buttonTwoIsPressed": false, "cameraType": 0, "categories": [ "security" ], "currentMode": "DOOR_STATION", "dBAudioLevelChanged": 0, "dead": false, "deadReason": "", "deviceControlType": 1, "deviceIcon": 91, "deviceRole": "Other", "displayOnMainPage": 1, "email": "ya*****er@***.fr", "firstRelayIsOpen": false, "httpsEnabled": false, "icon": { "path": "plugins/com.fibaro.fibaroIntercom/img/icon.png", "source": "HC" }, "incorrectPinLastTyped": 0, "input1": false, "input2": false, "ip": "192.168.0.148", "isRecording": false, "jpgPath": ":8080/live/image.jpg?token=f07b74ea6194d9cfea9143129baed8d27a0d7d04cb4764c5d81eec6f5f69e2ed", "lastRelayStateChangedMethod": "PIN-ENTERED", "localPassword": "***********", "log": "", "logTemp": "", "manufacturer": "", "mjpgPath": ":8080/live/stream.jpg?token=f07b74ea6194d9cfea9143129baed8d27a0d7d04cb4764c5d81eec6f5f69e2ed", "model": "", "moveDownPath": "", "moveLeftPath": "", "moveRightPath": "", "moveStopPath": "", "moveUpPath": "", "openTime": 3, "password": "", "pinStatusChanged": "", "port": 8081, "proxymityStateChanged": false, "recentlyCame": "ya****er@***.fr", "refreshTime": 3000, "saveLogs": true, "secondRelayIsOpen": false, "sendStopAfterMove": false, "supportedDeviceRoles": [ "Other" ], "tamper": false, "ui.config.SerialNumber.caption": "Serial number", "ui.config.SerialNumber.enabled": false, "ui.config.SwVersion.caption": "Software version", "ui.config.SwVersion.enabled": false, "ui.config.email.caption": "Email", "ui.config.email.enabled": true, "ui.config.ip.caption": "IP address", "ui.config.ip.enabled": true, "ui.config.localPassword.caption": "Password", "ui.config.localPassword.enabled": true, "ui.config.sectionDeviceInfo.caption": "Device information", "ui.config.sectionDeviceInfo.enabled": true, "ui.config.sectionLocalAccessConfiguration.caption": "Local access configuration", "ui.config.sectionLocalAccessConfiguration.enabled": true, "ui.config.sectionNetworkConfiguration.caption": "Network configuration", "ui.config.sectionNetworkConfiguration.enabled": true, "userDescription": "", "username": "", "users": "[\"ya*****er@*.fr\"]" }, "actions": { "moveDown": 0, "moveLeft": 0, "moveRight": 0, "moveStop": 0, "moveUp": 0, "openDoor1": 0, "openDoor2": 0, "openGate": 0, "sendCameraImageToAdminEmail": 0, "sendPhotoToUser": 1, "startRecording": 0, "stopRecording": 0 }, "created": 1655827558, "modified": 1655969346, "sortOrder": 19 } Ais-je bien regarder dans la bonne section du swagger ??? Voilà ce que je récupère comme info, mais nulle part il apparaît la property recherchée. Modifié le 19 juillet 2022 par Yannick
Lazer Posté(e) le 19 juillet 2022 Signaler Posté(e) le 19 juillet 2022 Effectivement.... du coup logique que GEA ne réagisse pas. Mais lors d'un échange précédent, tu n'avais pas identifié un autre champ ? Je t'avais même conseillé une règle à écrire, est-ce qu'elle fonctionne ?
Yannick Posté(e) le 19 juillet 2022 Signaler Posté(e) le 19 juillet 2022 Si mais ce n'était pas sur cette action, c'était sur la property "firstRelayIsOpen". Sur celle-ci cela fonctionne bien. Ce que je ne comprends pas c'est que dans une scène classique cela fonctionne. et que le la property est bien utilisée comme déclencheur dans le code LUA....
Lazer Posté(e) le 19 juillet 2022 Signaler Posté(e) le 19 juillet 2022 Là je ne sais pas.... si quelqu'un a déjà fait quelque chose de similaire avec son Intercom....
Yannick Posté(e) le 19 juillet 2022 Signaler Posté(e) le 19 juillet 2022 Bon en même temps c'est pas un drame hein... ça fonctionne en mode bloc. ça me va !! mais si on pouvait avoir une explication de texte ce serait sympa.
jojo Posté(e) le 19 juillet 2022 Signaler Posté(e) le 19 juillet 2022 Il y a 8 heures, Yannick a dit : "buttonOneIsPressed": false, "buttonThreeIsPressed": false, "buttonTwoIsPressed": false, as-tu essayé avec une de ces propriétés ? (on ne sais jamais)
Yannick Posté(e) le 20 juillet 2022 Signaler Posté(e) le 20 juillet 2022 J'ai tenté sur le premier.. mais pas les 2 autres.. Tu as raison, je vais quand même tester. Mais c'est étrange tout de même que la propriété qui apparaît bien dans les propriétés du device ne se retrouve pas dans son JSON non ?
Lazer Posté(e) le 20 juillet 2022 Signaler Posté(e) le 20 juillet 2022 ça doit être un événement de type CentralSceneEvent ou quelque chose comme ça, c'est à dire similaire à ce qui se passe avec les télécommandes. A mon avis tu as la réponse dans la doc de ton Intercom.
Yannick Posté(e) le 21 juillet 2022 Signaler Posté(e) le 21 juillet 2022 (modifié) cc c'est encore moi. Je cherche à appuyer sur un bouton d'un QA à heure régulière mais ça ne fonctionne pas. Mon QA me permet de redémarrer mon intercom sans devoir aller dans les paramètres du bouzin. il y a donc un seul bouton surlequel on appuie et ça redémarre. l'action en LUA se traduit ainsi : hub.callUI(789, 'onReleased', 'btnRestart') j'ai donc écrit cette règle en GEA GEA.add({{"Time", "12:15"},{"Time","16:15"}}, 0,"Redémarrage Intercom",{"QuickApp", 789, "onReleased", "btnRestart"}) aucun problème de déclenchement d’événement ça fonctionne bien mais rien ne se passe, comme si l'appui ne se faisait pas... une idée sur l'action ??? Modifié le 21 juillet 2022 par Yannick
Lazer Posté(e) le 21 juillet 2022 Signaler Posté(e) le 21 juillet 2022 Comme je l'ai déjà dit 50 fois sur le forum, appuyer sur le bouton du QA est débile, il faut désapprendre ce qu'on faisait sur HC2, et penser HC3 nativement. Donc appeler directement la fonction qui est derrière le bouton, par son nom. De ce que je comprends, ça doit être "btnRestart", tu peux virer le "onReleased" qui n'est pas une fonction 1
mprinfo Posté(e) le 21 juillet 2022 Signaler Posté(e) le 21 juillet 2022 Je suis vieux mais j'ai changé mes habitudes avec les boutons D'ailleurs je ne me sers plus beaucoup de cette fonctionnalité en général c'est utile pour créer les childs Il faut voir le QA comme si on avait supprimé toutes les fenêtres de code d'un VD main loop inclus en une seule fenêtre Le gros avantage c'est qu'on peut passer des paramètres sans bidouiller et bien plus Envoyé de mon BLA-L29 en utilisant Tapatalk
Yannick Posté(e) le 22 juillet 2022 Signaler Posté(e) le 22 juillet 2022 Il y a 14 heures, Lazer a dit : Comme je l'ai déjà dit 50 fois sur le forum, appuyer sur le bouton du QA est débile, il faut désapprendre ce qu'on faisait sur HC2, et penser HC3 nativement. Donc appeler directement la fonction qui est derrière le bouton, par son nom. De ce que je comprends, ça doit être "btnRestart", tu peux virer le "onReleased" qui n'est pas une fonction D'accord, d'accord.. pardon maître. Donc si je résume bien : GEA.add({{"Time", "12:15"},{"Time","16:15"}}, 0,"Redémarrage Intercom",{"QuickApp", 789, "btnRestart"}) qui, je l'ai essayé, ne fonctionne pas non plus ou comme ça GEA.add({{"Time", "12:15"},{"Time","16:15"}}, 0,"Redémarrage Intercom",{"btnRestart",789}) ???
Lazer Posté(e) le 22 juillet 2022 Signaler Posté(e) le 22 juillet 2022 Je ne sais pas, je me suis basé sur les indications que tu as donné, sans certitude. Il faut que tu regardes quelle est la fonction qui est appelée par le bouton de ton QuickApp. Partage une capture d'écran si tu n'es pas sûr.
Yannick Posté(e) le 22 juillet 2022 Signaler Posté(e) le 22 juillet 2022 function QuickApp:onInit() self.sock = net.WebSocketClientTls() self.url = "wss://" .. self:getVariable("ipAddress") .. ":8081/wsock" self.fibaroID = self:getVariable("fibaroID") self.localPass = self:getVariable("localPass") self.sock:addEventListener("connected", function() self:handleConnected() end) self.sock:addEventListener("disconnected", function() self:handleDisconnected() end) self.sock:addEventListener("error", function(error) self:handleError(error) end) self.sock:addEventListener("dataReceived", function(data) self:handleDataReceived(data) end) end function QuickApp:restartWS() self:connectWS() end function QuickApp:connectWS() self.sock:connect(self.url); end function QuickApp:Login() self.loginMsg = { jsonrpc = "2.0", method = "com.fibaro.intercom.account.login", params = { user = self.fibaroID, pass = self.localPass }, id = 1 } if self.sock and self.sock:isOpen() then self.sock:send(json.encode(self.loginMsg)) end end function QuickApp:SendAction() self.loginMsg = { jsonrpc = "2.0", method = "com.fibaro.intercom.power.restart", params = { token = self.IntercomToken }, id = 2 } if self.sock and self.sock:isOpen() then self.sock:send(json.encode(self.loginMsg)) self:debug("restart"); end end function QuickApp:DisconnectWS() if self.sock and self.sock:isOpen() then self.sock:close() end end function QuickApp:handleConnected() self:debug("Connected : " , self.url) self:Login() end function QuickApp:handleDisconnected() self:debug("Disconected : " , self.url ) end function QuickApp:handleError(error) self:debug("Error : ", error) end function QuickApp:handleDataReceived(data) self:debug("Data received : ", data) local responseMsg = json.decode(data); if responseMsg.id == 1 then self.IntercomToken = responseMsg.result.token self:SendAction() self:DisconnectWS() end if responseMsg.id == 2 then self:DisconnectWS() end end Voilà le code du QA
Lazer Posté(e) le 22 juillet 2022 Signaler Posté(e) le 22 juillet 2022 OK.... merci, mais je m'attendais plutôt à voir une capture d'écran de l'interface Web, et notamment du bouton en question. Tu as un champ qui indique quelle fonction est appelée lors du clic sur le bouton. Parce que le code seul ne me permet pas de la deviner facilement.
Lazer Posté(e) le 22 juillet 2022 Signaler Posté(e) le 22 juillet 2022 D'accord, maintenant tu vas dans l'éditeur, et tu regardes quelle est la fonction appelée derrière le bouton
Yannick Posté(e) le 22 juillet 2022 Signaler Posté(e) le 22 juillet 2022 [22.07.2022] [10:23:26] [DEBUG] [QUICKAPP789]: onAction: {"deviceId":789,"args":[],"actionName":"btnRestart"} [22.07.2022] [10:23:26] [WARNING] [QUICKAPP789]: Class does not have btnRestart function defined - action ignored [22.07.2022] [11:46:43] [TRACE] [QUICKAPP789]: UIEvent: {"values":[],"deviceId":789,"elementName":"btnRestart","eventType":"onReleased"} [22.07.2022] [11:46:43] [DEBUG] [QUICKAPP789]: Connected : wss://192.168.0.148:8081/wsock [22.07.2022] [11:46:43] [DEBUG] [QUICKAPP789]: Data received : { "jsonrpc": "2.0", "result": { "token": "d69ec832d2fb9cb815a40fa97babf4d92f44e72f0964ff44568d228e4c4042cc", "exp_time": "899999" }, "id": 1 } [22.07.2022] [11:46:43] [DEBUG] [QUICKAPP789]: restart [22.07.2022] [11:46:43] [DEBUG] [QUICKAPP789]: Disconected : wss://192.168.0.148:8081/wsock [22.07.2022] [11:47:05] [TRACE] [QUICKAPP789]: UIEvent: {"elementName":"btnRestart","eventType":"onReleased","deviceId":789,"values":[null]} [22.07.2022] [11:47:05] [DEBUG] [QUICKAPP789]: Error : Connection failed
Lazer Posté(e) le 22 juillet 2022 Signaler Posté(e) le 22 juillet 2022 Non pas le log Tu retournes dans le QuickApp comme quand tu l'as créé, et tu vas dans le bouton...
Messages recommandés