
jjacques68
Membres confirmés-
Compteur de contenus
4 368 -
Inscription
-
Dernière visite
-
Jours gagnés
39
Tout ce qui a été posté par jjacques68
-
scène Scène avec setTimeout qui s’arrête
jjacques68 a répondu à un(e) sujet de jjacques68 dans Support
oui j’essayerai ça... je pense que l’on va avoir beaucoup de temps ces prochains jours... -
scène Scène avec setTimeout qui s’arrête
jjacques68 a répondu à un(e) sujet de jjacques68 dans Support
ah oui il me semble qu’on peut boucler avec CRON, c’est ça dont tu parles ? -
scène Scène avec setTimeout qui s’arrête
jjacques68 a répondu à un(e) sujet de jjacques68 dans Support
ok mais si je veux changer l’heure ? -
scène Scène avec setTimeout qui s’arrête
jjacques68 a répondu à un(e) sujet de jjacques68 dans Support
désolé ne pas avoir répondu plus tôt... on est en mode guerre au boulo... alors il s’agit d’une scène pour le réveil : elle allume une des lampes de chevet progressivement à une heure spécifique (15 minute avant l’heure réglée par QA) il y a 3 boucles : la principale, avec le setTimeout qui boucle toutes les minutes afin de savoir quand déclencher (classique quoi) une petite première qui va allumer progressivement la lampe. une seconde qui va tourner pendant une heure avec la lampe allumée, puis l’éteindre (pour éviter que ça reste allumé si je plane) pour les 2 dernières, il est possible d’en sortir en allumant la lumière au max (99 %). Cela peut se faire avec un double clique sur l’interrupteur. ----------------------------------------------------------------------------------------- -- 15/03/2020 - V1 : Réveil Droite (Rt) ----------------------------------------------------------------------------------------- local i,j local LumiereG = 118 local LumiereD = 121 print("Réveil Rt - start") ------------------------------------------------------------------------------------- function Reveil() local HeureReveilG = fibaro.getGlobalVariable("WakeUpLt") --type string local HeureReveilD = fibaro.getGlobalVariable("WakeUpRt") --type string print("Reveil Rt - réveil à "..HeureReveilD) --si l'heure correspond avec 15 minutes d'avance if os.date("%H:%M", os.time()+15*60) == HeureReveilD then print(os.date("%d/%m/%Y - %H:%M").." - début du réveil") --boucle de 1 à 98 = setValue du module, sort si ampoule au max (99) i=1 while tonumber(fibaro.getValue(LumiereD, "value")) < 98 do --envoie la valeur au module fibaro.call(LumiereD, "setValue", i) --incrémente la valeur i=i+1 --attend 9 seconde (qui me fera au total 9*98 soit environ 15 min) fibaro.sleep(9*1000) end --au cas où je suis sorti de la boucle avant la fin, fixe à 98 % print(os.date("%d/%m/%Y - %H:%M").." - Allumé au max") fibaro.call(LumiereD, "setValue", 98) -- allume à fond -- allume l'autre si même heure if HeureReveilG == HeureReveilD then fibaro.call(LumiereG, "setValue", 98) end --boucle d'attente tant qu'on a pas attendu 1 heure après le reveil, ou que la lumière n'a pas été allumé au max while os.date("%H:%M", os.time()-(60*60)) < HeureReveilD and tonumber(fibaro.getValue(LumiereD, "value")) <= 98 do fibaro.sleep(5000) end --eteint si 1 heure après Réveil ou arrêt manuel print(os.date("%d/%m/%Y - %H:%M").." - Interruption car lumière éteinte ou > 1 heure après réveil") fibaro.call({LumiereD,LumiereG}, "turnOff") end fibaro.setTimeout(60*1000, Reveil) end -------------------------------------------------------------------------------------------------------------------- Reveil() et franchement, je vois pas ce que j’ai merdé dedant. en temps normal, toutes les minutes, j’ai une trace dans le debug. Ce matin, y avait rien. -
Bon voilà, j’avance avec cette box... petit à petit... Il y aurait des chose à redire... mais on va être patient et faire avec... la j’ai eu un cas étrange : J’ai une scène qui tourne (devrai tourner) H24 7/7 grâce à une boucle d’un setTimeout. Et visiblement elle s’est arrêtée pour une raison inconnue et rien dans le debug. Il ‘n’y avait aucune raison (par code) que celle-ci s’arrête ! ! ! ! d’où ma question : est - il possible qu’ils aient limité, dans le temps, le fonctionnement des scènes ?
-
scènes Exemple gestion des volets tout simple
jjacques68 a répondu à un(e) sujet de jjacques68 dans Support
ouiiii merci à toi! -
scènes Exemple gestion des volets tout simple
jjacques68 a répondu à un(e) sujet de jjacques68 dans Support
mais non, faut être positif on ca couper court sinon le topic va être pollué rapidement... -
scènes Exemple gestion des volets tout simple
jjacques68 a répondu à un(e) sujet de jjacques68 dans Support
le callActionGroup() m'a actionné TOUS les actionneurs de la maison !!! Il m'a foutu un bordel monstre ! Oui tu as raison, j'arrête avec ce truc... Je pense aussi que c'est bien mieux !! api.get("/devices/?roomID="..roomID.."&property=[isLight,true]") ça ça marche très bien, on va pas se torturer -
scènes Exemple gestion des volets tout simple
jjacques68 a répondu à un(e) sujet de jjacques68 dans Support
alors je fais un point : je veux allumer toutes les lumières d'une pièce dans une scène, triggée par un PIR : avec ça ça marche nickel : local TriggerID = 80 --sourceTrigger.id local roomID = api.get("/devices/"..TriggerID).roomID local ListeLightsInRoom = api.get("/devices/?roomID="..roomID.."&property=[isLight,true]") for k,v in pairs(ListeLightsInRoom) do fibaro.call(v.id, "turnOff") --turnOn end avec ça j'ai les volets qui bouge : local TriggerID = 80 local roomID = api.get("/devices/"..TriggerID).roomID local ListeLightsInRoom = {roomID=roomID, properties = {isLight = true}} fibaro.callGroupAction("turnOn", ListeLightsInRoom) -
scènes Exemple gestion des volets tout simple
jjacques68 a répondu à un(e) sujet de jjacques68 dans Support
oui -
scènes Exemple gestion des volets tout simple
jjacques68 a répondu à un(e) sujet de jjacques68 dans Support
euuuuuuh, ce filtre me ferme les volets ???? -
scènes Exemple gestion des volets tout simple
jjacques68 a répondu à un(e) sujet de jjacques68 dans Support
j'essaye ça sans succès : api.get("/devices/?roomID=232&properties.isLight=true") le soucis est que "isLight" est une sous propriété de "properties", alors du coup je sais pas si le cumul peut marcher dans ce cas... -
scènes Exemple gestion des volets tout simple
jjacques68 a répondu à un(e) sujet de jjacques68 dans Support
voilà la bonne syntaxe : local ListeLights = { args = {}, filters = { {filter = "roomID", value = {roomID}}, } }, { args = {}, filters = { {filter = "isLight", value = {true}} } }, -
scènes Exemple gestion des volets tout simple
jjacques68 a répondu à un(e) sujet de jjacques68 dans Support
j'essaye avec ça mais sans succès : local ListeLights = { args = {}, filters = { {filter = "roomID", value = {roomID}}, {filter = "and", value = {filter = "isLight", value = {true}}} } } Je souhaite avoir la liste ID des device qui : - sont dans une pièce précise (roomID) -> ça ça marche - sont des lumières "isLight" = true -> marche pas -
scènes Exemple gestion des volets tout simple
jjacques68 a répondu à un(e) sujet de jjacques68 dans Support
ah oui zut, copier coller trop vite... est ce qu'on peut cumuler des filtres dans cette commande ? par exemple là j'ai la commande qui me retourne tous les device de la room 232 : local ListeDeviceInRoom = api.get("/devices/?roomID=232") Mais est ce que je peux ajouter un truc du genre "?isLight = true" ? -
scènes Exemple gestion des volets tout simple
jjacques68 a répondu à un(e) sujet de jjacques68 dans Support
Donc ça simplifie beaucoup la scène initiale : fibaro.debug("Volets", "Volets - start Scene") local Trigger = sourceTrigger local Tel = tonumber(fibaro.getGlobalVariable("Phone_JJ")) local Message = "" local ListeDevice = api.get("/devices/?type=com.fibaro.FGRM222") local IDVoletSalon = 38 ---------------------- --SUNSET ---------------------- if Trigger.property == "sunset" then fibaro.debug("Volets", "Volets - Sunset Trigger") Message = "Fermeture des volets" for k,v in pairs(ListeDevice) do --Volet du salon : le fermer que si absent et porte fermée if v.id == IDVoletSalon then if fibaro.getValue(56, "value") == false and fibaro.getValue(36, "value") == false then fibaro.call(38, "close") end else fibaro.call(v.id, "close") end end end ---------------------- --SUNRISE ---------------------- if Trigger.property == "sunrise" then fibaro.debug("Volets", "Volets - Sunrise Trigger") Message = "Ouverture des volets" for k,v in pairs(ListeDevice) do fibaro.call(v.id, "open") end end fibaro.alert("push", {Tel}, Message) merci @Krikroff ! ah c’est dommage qu’on ne puisse pas mettre ce genre de filtre sur la “catégories“ du module... -
scènes Exemple gestion des volets tout simple
jjacques68 a répondu à un(e) sujet de jjacques68 dans Support
si c’est ok ça marche : local ListeVolet = api.get("/devices/?type=com.fibaro.FGRM222") for k,v in pairs(ListeVolet) do print(k,v.id) end L’erreur était : j’avais mis “/api/devices/...“ au lieu de “/devices/...“ -
scènes Exemple gestion des volets tout simple
jjacques68 a répondu à un(e) sujet de jjacques68 dans Support
il faut te que je ré-essaye, j’ai peut être pas traité le retour de la bonne façon. j’avais fait une simple boucle pour afficher chaque occurrence de la table. et j’avais "nil" comme réponse... -
scènes Exemple gestion des volets tout simple
jjacques68 a répondu à un(e) sujet de jjacques68 dans Support
ce serait pas ça ? -
scènes Exemple gestion des volets tout simple
jjacques68 a répondu à un(e) sujet de jjacques68 dans Support
@Krikroff, j’ai un doute : la commande local ListeVolet = api.get("/api/devices/?type=com.fibaro.FGRM222") retourne bien un tableau json sous la forme {38,42, ... , ... } ? ou autre chose ? -
scènes Exemple gestion des volets tout simple
jjacques68 a répondu à un(e) sujet de jjacques68 dans Support
oui là va pas avoir le choix de boucler sur tous les device... c’est étonnant d’ailleurs de pouvoir choisir plusieurs catégories, je vois pas encore l’intérêt... -
scènes Exemple gestion des volets tout simple
jjacques68 a répondu à un(e) sujet de jjacques68 dans Support
oui le voilà : c'était pour les volets local ListeDevice = api.get("/devices/") print("Nb Device = "..#ListeDevice) for i = 1, #ListeDevice do if ListeDevice[i].properties.categories then if ListeDevice[i].properties.categories[1] == "blinds" then print(ListeDevice[i].id.." = "..ListeDevice[i].name) end end end -
scènes Exemple gestion des volets tout simple
jjacques68 a répondu à un(e) sujet de jjacques68 dans Support
ah zut, dommage ! pourtant il me semble avoir réussi à fair un truc du genre : api.get(/api/devices/32).categories[1] == "lights" -
scènes Exemple gestion des volets tout simple
jjacques68 a répondu à un(e) sujet de jjacques68 dans Support
Par contre je galère avec le filtre sur les catégories : local ListeLumiere = { args = {}, filters = { { filter = "categories", value = "lights" } } } en effet "categories" est un tableau (on peut le voir dans l'API) et je trouve pas la syntaxe...... ... -
scènes Exemple gestion des volets tout simple
jjacques68 a répondu à un(e) sujet de jjacques68 dans Support
et si on veut filter encore plus, genre exclure un ID : local ListeVolet = { args = {}, filters = { { filter = "type", value = {"com.fibaro.FGRM222"}, }, { filter = "not", value = { filter = "id", value = {38} } } } } étrange comme syntaxe...