Aller au contenu

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

  1. oui j’essayerai ça... je pense que l’on va avoir beaucoup de temps ces prochains jours...
  2. ah oui il me semble qu’on peut boucler avec CRON, c’est ça dont tu parles ?
  3. ok mais si je veux changer l’heure ?
  4. 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.
  5. 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 ?
  6. ouiiii merci à toi!
  7. mais non, faut être positif on ca couper court sinon le topic va être pollué rapidement...
  8. 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
  9. 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)
  10. euuuuuuh, ce filtre me ferme les volets ????
  11. 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...
  12. voilà la bonne syntaxe : local ListeLights = { args = {}, filters = { {filter = "roomID", value = {roomID}}, } }, { args = {}, filters = { {filter = "isLight", value = {true}} } },
  13. 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
  14. 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" ?
  15. 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...
  16. 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/...“
  17. 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...
  18. ce serait pas ça ?
  19. @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 ?
  20. 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...
  21. 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
  22. ah zut, dommage ! pourtant il me semble avoir réussi à fair un truc du genre : api.get(/api/devices/32).categories[1] == "lights"
  23. 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...... ...
  24. 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...
×
×
  • Créer...