
jjacques68
Membres confirmés-
Compteur de contenus
4 349 -
Inscription
-
Dernière visite
-
Jours gagnés
39
Tout ce qui a été posté par jjacques68
-
soit du mets la variable à 16 soit tu fais : MonDevice.properties.parameters[16].value = 0
-
ben j'ai récupérer le nom de cette variable dans ton code du premier poste ! il est = 1 !
-
c'est ok ?
-
bon et avec le properties maitntenant : MonDevice.properties.parameters[DeviceParID].value = 0
-
ah attend je suis allé trop vite je crois : MonDevice = api.get("/devices/"..DeviceID) print(json.encode(MonDevice)) MonDevice.parameters[DeviceParID].value = 0 api.put("/devices/"..DeviceID, MonDevice) j'ai oublié "parameters"
-
tu peux faire un debug de MonDevice : MonDevice = api.get("/devices/"..DeviceID) print(json.encode(MonDevice)) MonDevice[DeviceParID].value = 0 api.put("/devices/"..DeviceID, MonDevice)
-
nan pardon, MonDevice est une variable locale qui reçoit tout le contenu de DeviceID !!
-
oui. tu as quoi comme erreur ?
-
j'ai pas testé, mais : un truc du genre MonDevice = api.get("/devices/"..DeviceID) MonDevice[DeviceParID].value = 0 api.put("/devices/"..DeviceID, MonDevice)
-
Hello ! Je me rends compte que de temps en temps, j'ai une scène qui génère une erreur... Sans aucunes indications !! Dans le debug, j'ai juste le type "error", le tag "scene65" , mais rien dans le message !! Donc pas moyen de savoir ce qu'il se passe... La scène permet de gérer l'allumage quand on passe devant un PIR... Elle fonctionne à 99.999999 % Mais cette semaine j'ai eut ces 3 erreurs sans indications... et je sais pas pourquoi. ça fais des heures que je m'arrache les cheveux et je tourne en rond... alors j'ai réussi à reproduire ce type d'affichage d'erreur dans le debug en créant une scène avec : (rien à voir avec ma scène...) print("start") fibaro.sleep(10000) print("end") Il apparait clairement qu'il y a un lien avec la gestion du "multi-instance" (si on peut encore appeler ça comme ça...) En lançant 2 fois la scène dans les 10 secondes. Visiblement, lors de l'exécution de la deuxième instance de scène, ça plante et le message "error" apparaît. Normalement, si une 2ème instance est lancée, elle annule la précédente !!!! Je précise que l'option dans "Allow to restart a running scene: "est par défaut sur "YES". Si le mets sur "NO", il n'y a plus d'erreur, mais la deuxième instance de scène n'est pas prise en compte (logique...) Pour info si on remplace le "sleep" par un setTimeout(), il n'y a plus ce soucis... Pour en revenir à ma scène, elle ne possède pas de sleep ou de setTimeout !!! Mais d'après ce que j'observe dans le debug, cette erreur apparaît quand je passe d'une pièce à l'autre et que donc potentiellement, 2 instances (ou plus) de la scène peuvent être démarrées. alors bug utilisateur ou bug système ??? voici son code : (désolé, ce sera peut être pas évident...) Elle permet d'allumer/éteindre les lumières d'une pièce quand un PIR trigge la scène. J'ai cette scène unique pour toute la maison. Donc dans les conditions, tous les PIR sont présent avec comme valeur de déclenchement : "anyValue". Les lumières de la pièces restent allumer tant que le PIR ne repasse pas à FALSE. Donc... le temps d'allumage est géré par les paramètres des capteurs PIR. Je tiens compte également du niveau de LUX (pour les PIR qui me fournissant cette option) Pour chaque pièce ou un PIR est présent pour l'allumage, j'ai un QA qui me permet de choisir si je veux que l'éclairage soit en mode auto ou manu. Il est nommé avec l'ID de la pièce pour plus de facilité de programmation. Il existe quelques subtilités (VMC salle de bain (avec leur "delay" sur le OFF) et éclairage extérieur (suivant des conditions horaires)) local NameScene = "Lights on PIR" local IDPirZoneEntree = 169 local IDPirZoneGarage = 459 local ListeDelay = {} --récupère l'ID du trigger (PIR) local TriggerID = sourceTrigger.id --Trouve la pièce liée au PIR local RoomID = api.get("/devices/"..TriggerID).roomID --Trouve l'ID du QA qui gére la marche forcée de la pièce local PIRAutoID = api.get("/devices/?name=PIR_Room_"..RoomID)[1].id --si QA en mode auto if fibaro.getValue(PIRAutoID, "value") == true then --Trouve le capteur de LUX de la pièce local LuxID = api.get("/rooms/"..RoomID).defaultSensors["light"] --Trouve le niveu jour/Nuit du capteur si existant et si la propriété existe (donc en gros que pour les FGMS) local LuxLevel = 0 if LuxID ~= 0 and api.get("/devices/"..LuxID).properties.parameters[7].value then LuxLevel = api.get("/devices/"..LuxID).properties.parameters[7].value end --liste les lumières de la pièce local ListeLightsInRoom = api.get("/devices/?roomID="..RoomID.."&property=[isLight,true]") --pour tout les lumières de la pièces for k,v in pairs(ListeLightsInRoom) do ---------------------------------------------- --si PIR = true ---------------------------------------------- if fibaro.getValue(TriggerID, "value") == true then ---------------------------------------------- --pour les VMC : supprime les éventuelles delay OFF if v.id == 69 or v.id == 226 then --recupère la liste de la VG ListeDelay = fibaro.getGlobalVariable("DelayVmc") ListeDelay = json.decode(ListeDelay) --parcours tous les delay OFF existant (max 2) for index,value in pairs(ListeDelay) do --si trouve l'ID du trigger correspondant if value.VMC == v.id then --on le surppime dans l'API (passe par un QA) fibaro.call(490, "Delete", value.API.timestamp,value.API.id) --on le supprime de la liste table.remove(ListeDelay, index) end end --mémorise la VG ListeDelay = json.encode(ListeDelay) fibaro.setGlobalVariable("DelayVmc", ListeDelay) end --END VMC--------------------------------------------- --si on a un capteur Lux et un seuil jour/nuit if LuxID ~= 0 and LuxLevel ~= 0 then --si Lux < LuxLevel if fibaro.getValue(LuxID, "value") <= LuxLevel then fibaro.call(v.id, "turnOn") end --si pas de capteurs de LUX else fibaro.call(v.id, "turnOn") end ---------------------------------------------- --si PIR = false ---------------------------------------------- else -->> PIR = FALSE ---------------------------------------------- --pour les VMC : retarde le OFF avec le delay if v.id == 69 or v.id == 226 then res = api.post("/devices/"..v.id.."/action/turnOff", {delay = 60}) --enregistre dans une VG, le timestamp et l'id de l'API ainsi que l'ID du PIR trigger ListeDelay = fibaro.getGlobalVariable("DelayVmc") ListeDelay = json.decode(ListeDelay) table.insert(ListeDelay, {VMC = v.id, API = res}) ListeDelay = json.encode(ListeDelay) fibaro.setGlobalVariable("DelayVmc", ListeDelay) --END VMC -------------------------------------------- else fibaro.call(v.id, "turnOff") end end -->>PIR = TRUE/FALSE end -->> boucle pour chaque lumière end -->> QA en mode auto -------------------------------------------------------------------------------------------------------- --[[ CAS PENDANT LA NUIT : QUE si c'est le PIR de la porte d'entrée ou de garage remarque : dans le cas où l'extérieur s'allume juste qqu secondes avant sunriseHour, cette scène n'éteindra pas. Ce sera la scène Sun Set/Rise - Lights qui s'en occupera ]] -------------------------------------------------------------------------------------------------------- if TriggerID == IDPirZoneEntree or TriggerID == IDPirZoneGarage then -- si on est après 01:05 et avant 14 minute avant SunRise on allume tout le jardin if os.date("%H:%M",os.time()) > "01:05" and os.date("%H:%M",os.time()+14*60) < api.get('/settings/info').sunriseHour and os.date("%H:%M",os.time()) < api.get('/settings/info').sunriseHour --à cause des 14 min avant 00:00 then fibaro.trace(NameScene,os.date("%H:%M",os.time()), os.date("%H:%M",os.time()+14*60), api.get('/settings/info').sunriseHour) --si PIR = true if fibaro.getValue(TriggerID, "value") == true then fibaro.call({166,278,279,280}, "turnOn") --PIR = false else fibaro.call({166,278,279,280}, "turnOff") end end end Voilà, si vous avez un peu de temps et encore des cheveux !!!! c'est avec plaisir que je prends vos idées !
-
Help!! comparer/mesurer l’écart entre 2 dates/time
jjacques68 a répondu à un(e) sujet de flamalex dans HC2
c'est un peu l'usine à gaz oui, j'avoue ne pas tout saisir, je prends ce que tu me donnes en passant l'essentiel est de faire marcher comme tu veux. après on pourra rendre le code plus propre -
Help!! comparer/mesurer l’écart entre 2 dates/time
jjacques68 a répondu à un(e) sujet de flamalex dans HC2
tu as changer les setGlobalValue en setGlobal ? -
Help!! comparer/mesurer l’écart entre 2 dates/time
jjacques68 a répondu à un(e) sujet de flamalex dans HC2
oh punaise, c'est bien setGlobal et pas setGlobalValue ! je m'embrouille tout seul... -
Help!! comparer/mesurer l’écart entre 2 dates/time
jjacques68 a répondu à un(e) sujet de flamalex dans HC2
encore plus simple : if tonumber(difference_jr) > tonumber(Consigne_Tps_Arros) then vu que tu les as mises dans des variables locales. -
Help!! comparer/mesurer l’écart entre 2 dates/time
jjacques68 a répondu à un(e) sujet de flamalex dans HC2
pardon, il faut encadrer le nom des variables avec les " "... -
Help!! comparer/mesurer l’écart entre 2 dates/time
jjacques68 a répondu à un(e) sujet de flamalex dans HC2
pour faire propre : if tonumber(fibaro:getGlobalValue(difference_jr)) > tonumber(fibaro:getGlobalValue(Consigne_Tps_Arros)) then fibaro:setGlobalValue('OK_FOR_ARROZ', 1) else fibaro:setGlobalValue('OK_FOR_ARROZ', 0) end -
Help!! comparer/mesurer l’écart entre 2 dates/time
jjacques68 a répondu à un(e) sujet de flamalex dans HC2
pareil, je sais pas si ça a de l'importance, mais : then fibaro:setGlobal('OK_FOR_ARROZ', 1) else fibaro:setGlobal('OK_FOR_ARROZ', 0) end plutot ça : then fibaro:setGlobalValue('OK_FOR_ARROZ', 1) else fibaro:setGlobalValue('OK_FOR_ARROZ', 0) end -
Help!! comparer/mesurer l’écart entre 2 dates/time
jjacques68 a répondu à un(e) sujet de flamalex dans HC2
ça ça me dérange : ce serait plutôt : il s'agit bien de Variables Globales ? if tonumber(fibaro:getGlobalValue(difference_jr)) > tonumber(fibaro:getGlobalValue(Consigne_Tps_Arros)) -
Help!! comparer/mesurer l’écart entre 2 dates/time
jjacques68 a répondu à un(e) sujet de flamalex dans HC2
tu es sûr dans GEA du contenu des variables ? on dirait que l'une des 2 d'après le debug est = null "difference_jr", "Consigne_Tps_Arros" -
Help!! comparer/mesurer l’écart entre 2 dates/time
jjacques68 a répondu à un(e) sujet de flamalex dans HC2
ah la la, dans GEA je sais pas... -
Help!! comparer/mesurer l’écart entre 2 dates/time
jjacques68 a répondu à un(e) sujet de flamalex dans HC2
je regarde plus en détail plus tard, mais à première vu tu n'as pas les multiples de 24*60*60 ??? relis voir les post plus haut... -
ah oui ! ce serait top en effet !!
-
super ! en espérant que ça mettra pas trop de temps euuh... là tu m'as perdu ! ai pas tout compris !
-
Help!! comparer/mesurer l’écart entre 2 dates/time
jjacques68 a répondu à un(e) sujet de flamalex dans HC2
l'essentiel c'est qu'il doit comparer des jours avec des jours, ou des secondes avec des secondes. Normalement j'imagine que ça passera. Surtout pas des jours avec des secondes ! -
Help!! comparer/mesurer l’écart entre 2 dates/time
jjacques68 a répondu à un(e) sujet de flamalex dans HC2
ah là en effet... il faut alors modifier dans GEA et mettre 1*24*60*60 ou 2*24*60*60 ou 3*24*60*60... mais désolé, je n'ai jamais utilisé GEA, je ne sais pas comment ça marche...