Aller au contenu

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

  1. nan c'est bien avec : alors va comprendre la différence de résultat... encore merci
  2. ah nos messages se croisent, j'essaye...
  3. oui, je viens d'arriver à l'avoir avec : print(PIRAutoID[1].id)
  4. ah punaise non, j'ai pas la même réponse ! voici depuis l'appel d'une scène : [{"baseType":"com.fibaro.actor","interfaces":["quickApp"],"actions":{"turnOff":0,"turnOn":0,"toggle":0},"name":"PIR_Room_232","modified":1584422260,"parentId":0,"type":"com.fibaro.binarySwitch","properties":{"deviceIcon":1011,"saveLogs":false,"logTemp":"","typeTemplateInitialized":true,"state":true,"log":"","uiCallbacks":[],"value":true,"userDescription":"","viewLayout":{"$jason":{"head":{"title":"quickApp_device_57"},"body":{"sections":{"items":[]},"header":{"style":{"height":"0"},"title":"quickApp_device_57"}}}},"categories":["other"],"deviceControlType":20,"smsNotificationType":0,"smsNotificationID":0,"dead":false,"emailNotificationID":0,"deadReason":"","manufacturer":"","pushNotificationType":0,"emailNotificationType":0,"quickAppVariables":[],"pushNotificationID":0,"mainFunction":"-- Binary switch type should handle actions turnOn, turnOff\n-- To update binary switch state, update property \"value\" with boolean\n\nfunction QuickApp:turnOn()\n self:debug(\"binary switch turned on\")\n self:updateProperty(\"value\", true)\nend\n\nfunction QuickApp:turnOff()\n self:debug(\"binary switch turned off\")\n self:updateProperty(\"value\", false) \nend\n\n-- To update controls you can use method self:updateView(<component ID>, <component property>, <desired value>). Eg: \n-- self:updateView(\"slider\", \"value\", \"55\") \n-- self:updateView(\"button1\", \"text\", \"MUTE\") \n-- self:updateView(\"label\", \"text\", \"TURNED ON\") \n\n-- This is QuickApp inital method. It is called right after your QuickApp starts (after each save or on gateway startup). \n-- Here you can set some default values, setup http connection or get QuickApp variables.\n-- To learn more, please visit: https://manuals.fibaro.com/\n\nfunction QuickApp:onInit()\n self:debug(\"onInit\")\nend\n","model":""},"viewXml":true,"roomID":232,"visible":true,"configXml":false,"sortOrder":107,"created":1584422260,"isPlugin":true,"id":136,"enabled":true}] et voici depuis le nagiateur : [{"id":136,"name":"PIR_Room_232","roomID":232,"type":"com.fibaro.binarySwitch","baseType":"com.fibaro.actor","enabled":true,"visible":true,"isPlugin":true,"parentId":0,"viewXml":true,"configXml":false,"interfaces":["quickApp"],"properties":{"categories":["other"],"dead":false,"deadReason":"","deviceControlType":20,"deviceIcon":1011,"emailNotificationID":0,"emailNotificationType":0,"log":"","logTemp":"","mainFunction":"-- Binary switch type should handle actions turnOn, turnOff\n-- To update binary switch state, update property \"value\" with boolean\n\nfunction QuickApp:turnOn()\n self:debug(\"binary switch turned on\")\n self:updateProperty(\"value\", true)\nend\n\nfunction QuickApp:turnOff()\n self:debug(\"binary switch turned off\")\n self:updateProperty(\"value\", false) \nend\n\n-- To update controls you can use method self:updateView(<component ID>, <component property>, <desired value>). Eg: \n-- self:updateView(\"slider\", \"value\", \"55\") \n-- self:updateView(\"button1\", \"text\", \"MUTE\") \n-- self:updateView(\"label\", \"text\", \"TURNED ON\") \n\n-- This is QuickApp inital method. It is called right after your QuickApp starts (after each save or on gateway startup). \n-- Here you can set some default values, setup http connection or get QuickApp variables.\n-- To learn more, please visit: https://manuals.fibaro.com/\n\nfunction QuickApp:onInit()\n self:debug(\"onInit\")\nend\n","manufacturer":"","model":"","pushNotificationID":0,"pushNotificationType":0,"quickAppVariables":[],"saveLogs":false,"smsNotificationID":0,"smsNotificationType":0,"state":true,"typeTemplateInitialized":true,"uiCallbacks":[],"userDescription":"","value":true,"viewLayout":{"$jason":{"body":{"header":{"style":{"height":"0"},"title":"quickApp_device_57"},"sections":{"items":[]}},"head":{"title":"quickApp_device_57"}}}},"actions":{"toggle":0,"turnOff":0,"turnOn":0},"created":1584422260,"modified":1584422260,"sortOrder":107}] et biensûr j'ai besoin de l'id c'est pour ça que : api.get("/devices/?name=PIR_Room_"..roomID).id ne donne rien !
  5. ben j'ai la même réponse que dans le navigateur !! bon attends c'est quoi ce bordel...
  6. jjacques68

    WakeOnLan

    Alors je suis entrain de me casser la tête pour faire le WakeOnLan que l'on connaissait déjà sur la HC2... Un grand merci au(x) personne(s) ayant développée(s) cela sur la HC2... j'ai fait un copié coller un adaptant. Mais je suis confronté au problème de l'adresse de BoradCast... Il semblerait que l'instruction setBroadcast(true) n'existe pas !! Voici le code du QA : (il n'y a pas tout ! juste la fonction principale qui pose problème) ---------------------------------------------------------------------------- function QuickApp:TurnOnPc(MacAdresse) ---------------------------------------------------------------------------- local macAddress = self:convertMacAddress(MacAdresse) -- Create Magic Packet 6 x FF local magicPacket = string.char(0xff, 0xff, 0xff, 0xff, 0xff, 0xff) -- Broadcast Address local broadcastAddress = "255.255.255.255" -- Default port used local wakeOnLanPort = 9 for i = 1, 16 do magicPacket = magicPacket..macAddress end --self.sockOn:setBroadcast(true) self:debug(broadcastAddress) self.sockOn:connect(tostring(broadcastAddress), tonumber(wakeOnLanPort),{ success = function() self:debug("Socket ON - opened") fibaro.sleep(100) self.sockOn:write(magicPacket, { success = function() self:debug("Socket On - Data sended") end, error = function(err) self:debug("Socket On - error sending data : "..err) self:Close_SocketOn() fibaro.setTimeout(3000, function() self:TurnOnPc(MacAdresse) end) end }) end, error = function(err) self:debug("Socket On - error opening : ",err) self:Close_SocketOn() fibaro.setTimeout(3000, function() self:TurnOnPc(MacAdresse) end) end }) end et j'ai l'erreur suivante : Socket On - error opening : Network is unreachable Si quelqu'un à des idées !!
  7. ben ça marche depuis le navigateur !! et pas depuis la scène ???
  8. @Krikroff : ce filtre ne peut pas fonctionner ? sur la propriété "name" ? api.get("/devices/?name=PIR_auto_"..roomID)
  9. oui j’essayerai ça... je pense que l’on va avoir beaucoup de temps ces prochains jours...
  10. ah oui il me semble qu’on peut boucler avec CRON, c’est ça dont tu parles ?
  11. ok mais si je veux changer l’heure ?
  12. 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.
  13. 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 ?
  14. ouiiii merci à toi!
  15. mais non, faut être positif on ca couper court sinon le topic va être pollué rapidement...
  16. 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
  17. 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)
  18. euuuuuuh, ce filtre me ferme les volets ????
  19. 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...
  20. voilà la bonne syntaxe : local ListeLights = { args = {}, filters = { {filter = "roomID", value = {roomID}}, } }, { args = {}, filters = { {filter = "isLight", value = {true}} } },
  21. 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
  22. 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" ?
  23. 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...
  24. 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/...“
×
×
  • Créer...