Aller au contenu

jojo

Membres confirmés
  • Compteur de contenus

    14 841
  • Inscription

  • Dernière visite

  • Jours gagnés

    198

Tout ce qui a été posté par jojo

  1. encore 75 min de patience
  2. à méditer ...
  3. Merci ànos amis Français de nous rejoindre dans notre désaroi ...
  4. ? http://www.domotique-fibaro.fr/index.php/topic/2675-requ%C3%AAtes-http-get-sur-hcl/ ?
  5. merci pour le partage, ça àl'air super. Perso, je n'en ai pas besoin, mais beaucoup ici vont aimer ! Un admin pourrait-il déplacer ceci vers les tuto ? (ça le mérite bien!)
  6. depuis la version 4.082( ?) le VD ne fonctionne plus. Voici donc le code qui fonctionne pour le bouton "DeadNodesAnalysis" -------------------------- -- User Settings -------------------------- local IconeDead = 44 local IconeOk = 45 local IconeRun = 46 local push_dev = 2 -- id of the user to send push message to (2 is admin user) local exclude = {} -- les des id des devices àne pas tester si dead local wakeup = false -- true / false si on veut / ne veut pas de tentative de réveil des noeuds morts FreqNotif = 12 -- fréquence de notification [h] si un noeud est mort -- entrez la fréquence [s] de vérification dans le champ IP Address de ce VD ---------------------------------- -- DO not change bellow this line ---------------------------------- local now = os.time() local selfID = fibaro:getSelfId() local HC2 = Net.FHttp("127.0.0.1",11111) fibaro:call(selfID, "setProperty", "currentIcon", IconeRun) fibaro:call(selfID, "setProperty", "ui.Excluded.value", #exclude) -- display FreqNotif fibaro:call(selfID, "setProperty", "ui.FreqNotif.value", FreqNotif.." h") -- display wakeup if wakeup == true then fibaro:call(selfID, "setProperty", "ui.wakeup.value", "Oui") else fibaro:call(selfID, "setProperty", "ui.wakeup.value", "Non") end -- check if notification to be send SendNotification = fibaro:get(selfID,"IPAddress") if SendNotification ~= "Oui" then SendNotification = "Non" end fibaro:call(selfID, "setProperty", "ui.Notification.value", SendNotification) -- fréquence de vérification ? local Frequence = fibaro:get(fibaro:getSelfId(),"TCPPort") Frequence = tonumber(Frequence) -- si TCPPort est vide, la valeur par défaut retournée est 80 => fréquence = 60s if Frequence == 80 or Frequence <= 10 then Frequence = 60 end fibaro:call(selfID, "setProperty", "ui.FreqAnal.value", Frequence.." sec") -- vérification si variable "DeadNodes" existe local response, status, error = HC2:GET("/api/globalVariables/") Variables = json.decode(response) local Exist = false for _, v in pairs(Variables) do if v.name == "DeadNodes" then Exist = true end end fibaro:debug("La variable DeadNodes exite : "..tostring(Exist)) -- création de la variable "DeadNodes" si elle n'existe pas if Exist == false then temp = '{"name":"DeadNodes", "isEnum":0, "value":"NaN"}' fibaro:debug(temp) HC2:POST("/api/globalVariables", temp) end -- chargement de la VG DeadNodes fibaro:debug("Chargement de la VG DeadNodes") local DeadNodes = {} DeadNodes = fibaro:getGlobal("DeadNodes") if DeadNodes ~= "NaN" or DeadNodes ~= "" then DeadNodes = json.decode(DeadNodes) end if type(DeadNodes) ~= "table" then DeadNodes = {} end fibaro:debug("VG DeadNodes chargée") --------------------- -- FUNCTIONS --------------------- -- envoie mails notification function SendNotif(msg) if SendNotification == "Oui" then fibaro:call(push_dev, "sendEmail", "Dead nodes discovering", msg) end end -- affichage des noeuds morts function DisplLabel(dead, label) if dead <= 9 then fibaro:call(selfID, "setProperty", "ui.DeadNode" ..dead.. ".value", label) end end -- affichage du status function Status(status) fibaro:call(selfID, "setProperty", "ui.Status.value", status) end -- affichage du log function Log(log) fibaro:log(log) end -- vérifier si noeud dans la table function InTable(Device) if DeadNodes["DV"..Device] == nil then return false else return true end end -- wakeup function function WakeUp(Device) fibaro:call(1, "wakeUpDeadDevice", Device) Status ("Réveil de " ..devID) Log(dead.. " DeadNodes - Send Notif = " ..SendNotification.. "/" ..FreqNotif.. "h - Réveil de " ..Device) fibaro:sleep(30*1000) -- attendre 30s pour tester si le node est réveillé end --------------------- -- END FUNCTIONS --------------------- Status ("Analyse") dead = 0 -- counts # dead nodes local devices = 0 -- counts # devices discovered local i = 0 -- clear labels for i = 1, 9 do DisplLabel(i, " ") end -- Récupération de la liste des modules reponse = HC2:GET("/api/devices") jsonResponse = json.decode(reponse) fibaro:debug("Liste des modules chargée") -- dead nodes analysis for _, v in ipairs(jsonResponse) do -- vérification si device dans la liste des devices exclus local found = false for e = 1, #exclude do if v.id == exclude[e] then found = true end end if found == false and v.visible == true and v.properties.dead ~= nil then devices = devices + 1 Status ("Analyse") fibaro:debug("Analyse - #Devices = "..devices) Log(dead.. " DeadNodes - Send Notif = " ..SendNotification.. "/" ..FreqNotif.. "h - Analyse en cours") dev = v.name dtype = v.type devID = tonumber(v.id) -- si node est dead/mort if v.properties.dead == "true" then -- le node est dead dead = dead + 1 fibaro:debug("Device "..devID.." mort- total = "..dead) -- affichage du node qui est dead si <=9 DisplLabel(dead, dev.. " (" ..devID.. ")") -- vérification si device est dans la table des noeuds morts if InTable(devID) == true then -- dans table -- vérification si > fréquence de notification if (DeadNodes["DV"..devID] + (FreqNotif*60*60)) < now then -- fréq notif : notif ok DeadNodes["DV"..devID] = now -- check si sur batterie if v.properties.batteryLevel ~= nil or wakeup == false then -- sur batterie SendNotif(os.date("%d/%m/%y %H:%M").." : "..dtype.." "..dev.." ID("..devID..") is on battery and was NOT awakened (or wakeup = false). Next notification at "..os.date("%X", DeadNodes["DV"..devID]+FreqNotif*60*60)) else -- sur secteur -- wakeup process with mail WakeUp(devID) if v.properties.dead == "true" then -- le node est toujours dead SendNotif(os.date("%d/%m/%y %H:%M").." : "..dtype.." "..dev.." ID("..devID..") is still dead after unsuccessful wakeup. Next notification at "..os.date("%X", DeadNodes["DV"..devID]+FreqNotif*60*60)) else -- le node i a été réveillé dead = dead - 1 -- effacer le node qui a été réveillée si <=9 DisplLabel(dead, " ") SendNotif(os.date("%d/%m/%y %H:%M").." : "..dtype.." "..dev.." ID("..devID..") was awakened successfully.") end -- still dead end -- batterie else -- fréq notif : pas notif -- check si sur batterie if v.properties.batteryLevel ~= nil or wakeup == false then -- sur batterie -- check next node else -- sur secteur -- wakeup process without mail WakeUp(devID) if v.properties.dead == "true" then -- le node est toujours dead else -- le node i a été réveillé dead = dead - 1 -- effacer le node qui a été réveillée si <=9 DisplLabel(dead, " ") SendNotif(os.date("%d/%m/%y %H:%M").." : "..dtype.." "..dev.." ID("..devID..") was awakened successfully" ) end -- still dead end -- batterie end -- < fréq notif else -- pas dans table DeadNodes["DV"..devID] = now -- check si sur batterie if v.properties.batteryLevel ~= nil or wakeup == false then -- sur batterie SendNotif(os.date("%d/%m/%y %H:%M").." : "..dtype.." "..dev.." ID("..devID..") is on battery and was NOT awakened (or wakeup = false). Next notification at "..os.date("%X", DeadNodes["DV"..devID]+FreqNotif*60*60)) else -- sur secteur -- wakeup process with mail WakeUp(devID) if v.properties.dead == "true" then -- le node est toujours dead SendNotif(os.date("%d/%m/%y %H:%M").." : "..dtype.." "..dev.." ID("..devID..") is still dead after unsuccessful wakeup. Next notification at "..os.date("%X", DeadNodes["DV"..devID]+FreqNotif*60*60)) else -- le node i a été réveillé dead = dead - 1 -- effacer le node qui a été réveillée si <=9 DisplLabel(dead, " ") SendNotif(os.date("%d/%m/%y %H:%M").." : "..dtype.." "..dev.." ID("..devID..") was awakened successfully" ) end -- still dead end -- batterie end -- InTable else -- not dead -- vérification si device est dans la table des noeuds morts if InTable(devID) == true then -- dans table SendNotif(os.date("%d/%m/%y %H:%M").." : "..dtype.." "..dev.." ID("..devID..") is no more dead") DeadNodes["DV"..devID] = nil else -- pas dans table -- check next node end -- InTable end -- is dead ? end -- not in exclude table end -- for Status ("Fin") fibaro:debug("Status = Fin") fibaro:call(selfID, "setProperty", "ui.DeadNodes.value", dead) fibaro:call(selfID, "setProperty", "ui.DateCheck.value", os.date("%d/%m/%y %H:%M")) fibaro:call(selfID, "setProperty", "ui.Devices.value", devices) if dead >= 1 then fibaro:call(selfID, "setProperty", "currentIcon", IconeDead) else fibaro:call(selfID, "setProperty", "currentIcon", IconeOk) end -- sauvegarde de la table dans la VG DeadNodes = json.encode(DeadNodes) fibaro:setGlobal("DeadNodes", DeadNodes) -- affichage du message en bas de l'icône en continu, Log(dead.. " DeadNodes - Send Notif = " ..SendNotification.. "/" ..FreqNotif.. "h - " ..#exclude.. " excluded devices") et la version complète (v5.1) pour ceux qui ne l'utilisent pas encore DeadNodesAnalysis_v5.1.vfib
  7. jojo

    Ouverture Volet Le Matin

    pour ton premier soucis, tu dois passer par une variable globale, style "Volet_Ouverts_Auto" = "Oui"/"Non" Touts les jours à 0h00 tu remet la variable à "Non". Ton test : si mvt et variable à "non", alors ouvrir les volets et mettre la variable à "oui". Pour ton message d'erreur, c'est un peu plus complexe. Dans l'onglet général de ta scène, il y a la valeur du nombre de fois que la scène peut tourner. Par défaut c'est 2, et cela peux monter jusqu'à 10. Mais chaque fois que tu passe devant le détecteur, une nouvelle instance de la scène est lancée. Et comme tu as mis un délais de 300s pour l'ouverture du volet du salon, l'instance ne se termine pas avant les 300s Donc le mieux serait de supprimer ce délais de 300s et d'augmenter le nombre d'instances qui peuvent fonctionner en // à 10
  8. prendre une photo sur détection de mvt avec une HCL, c'est très simple. Par contre enregistrer pendant 30 min ou faire un PTZ, c'est très très chaud. Tu dois d'abord connaitre les url àlancer àla caméra pour faire ces actions. Ensuite tu peux les inclure dans différents boutons de VD (regarde dans ma signature pour commandes http sous HCL) et ta scène lance ces boutons de VD
  9. je confirme que le VD fonctionne parfaitement en v 4.083. Mais il y a depuis longtemps des problèmes lorsqu'on save dans le panneau des variables. Il faut éviter de le faire. Donc le mieux , c'est de détruire la variable "x_sonos_object", et de surtout pas la recréer. Puis tu vas dans un des VD sonos et tu fait un save. La variable se recréera automatiquement, et ça devrait fonctionner
  10. triple clic rapide
  11. après un shutdown -r now, le bouton restart refonctionne et j'ai ànouveau des notifications push, mais toujours pas pour les batteries avec GEA
  12. et le bouton restart de l'onglet configuration ne fonctionne plus. Mon instruction GEA GEA.add ({"Batteries", 20}, 1, "", {{"Time", "18:00", "18:30"}, {"Email", UserID["Vincent"], "ALERTE - Batteries faibles : A commander"}}) ne m'a rien envoyé du tout non plus, malgré un FGMS à0%
  13. Bien vu, moi je n'ai plus de push non plus (je n'y avais pas fait attention). Je reboot et je vois si c'est réglé.
  14. je n'ai pas besoin de mettre àjour mes firmware, mes modules font exactement ce que je veux maintenant
  15. jojo

    Creation Mp3 Pour Streaming Sonos

    elle commence àse débrouiller avec Hanghout pour envoyer et lire des messages écrits
  16. ah ok, merci pour l'info. Moi il ne me propose pas de mise àjour ...
  17. ah bon, moi j'ai simplement fait 1) installer la version upgradée en standard (car je ne savais pas trop bien comment patcher) 2) installer la version patchée, et il m'a tout retrouvé. Donc la denrière version pour DSM5.2 fonctionne ...
  18. pour éviter toute ambiguité, quelle version n'est pas patchable, quelle est la dernière version supportée àce jour ? (Je suis en SS 7.1)4146 sous DSM 5.2-5967 uptade1 et ça fonctionne)
  19. cela était déjàle cas en 4.082b. Steven a proposé une alternative dans le topic Doubke Click
  20. jojo

    Showroom Gea Down

    tout est dans UN seul GEA Qand je le sauve, il fait une boucle complète en 10-12 sec. Mes instantannés le sont vraiment En effet, rien que pour GEA je ne changerais pas de box. Steven mériterait vraiment de vendre cela àFibaro pour qu'ils puissent l'intégrer en natif dans la HC2/HCL, ce qui ferait une sacrée valeur ajoutée de leur box par rapport àla concurrence
  21. jojo

    Showroom Gea Down

    Mon GEA est GROS (le code de Steven commence vers la ligne 800) ... J'ai mis le plus possible dedans, du coup c'est un 'single point of failure' ... Mis il n'est pas dans le showroom, je devrais passer du temps pour partager quelques astuces ou mettre le code complet en attaché.
  22. jojo

    Showroom Gea Down

    @Pepite, c'est moi J'ai voiulu publier mon GEA, mais qui était trop gros. J'en ai informé Johan, qui m'a dit qu'il avait réglé, mais apparemment non ...
  23. ça a été chaud hier soir, mais quand je suis descendu à ma box après la 2° tentative d'upgrade, plus de ping possible et toutes les lampes de la box allumée. Je l'ai étteint via le bouton, puis redémarrage ok, puis dodo. Quelques chiffres : GEA : en 4.082b = 10s; en 4.083b = 12s Benchmark en 4.082b [DEBUG] 21:46:53: Nb runs : 1000 | id : 14 | G.Variable : Chauffage [DEBUG] 21:46:53: ---------------------------------------------- [DEBUG] 21:46:53: [DEBUG] 21:46:55: getValue Exist : instruction time : 2s | cpu time : 1.41s [DEBUG] 21:46:57: getValue Not Exist : instruction time : 2s | cpu time : 1.29s [DEBUG] 21:47:06: setValue : instruction time : 9s | cpu time : 3.07s [DEBUG] 21:47:08: getGlobal Exist : instruction time : 2s | cpu time : 1.56s [DEBUG] 21:47:10: getGlobal Not Exist : instruction time : 2s | cpu time : 1.28s [DEBUG] 21:48:08: setGlobal : instruction time : 58s | cpu time : 4.19s [DEBUG] 21:48:17: getType : instruction time : 9s | cpu time : 7s [DEBUG] 21:48:25: getName : instruction time : 8s | cpu time : 6.57s [DEBUG] 21:48:33: getRoomID : instruction time : 8s | cpu time : 6.81s [DEBUG] 21:48:44: getRoomName : instruction time : 11s | cpu time : 8.58s [DEBUG] 21:48:46: getSunrise : instruction time : 2s | cpu time : 1.54s [DEBUG] 21:48:46: [DEBUG] 21:48:46: ---------------------------------------------- [DEBUG] 21:48:46: ALL DONE en 4.083b : [DEBUG] 21:02:13: Nb runs : 1000 | id : 14 | G.Variable : Chauffage [DEBUG] 21:02:13: ---------------------------------------------- [DEBUG] 21:02:13: [DEBUG] 21:02:15: getValue Exist : instruction time : 2s | cpu time : 1.4s [DEBUG] 21:02:18: getValue Not Exist : instruction time : 3s | cpu time : 1.25s [DEBUG] 21:02:25: setValue : instruction time : 7s | cpu time : 2.88s [DEBUG] 21:02:27: getGlobal Exist : instruction time : 2s | cpu time : 1.59s [DEBUG] 21:02:29: getGlobal Not Exist : instruction time : 2s | cpu time : 1.45s [DEBUG] 21:03:20: setGlobal : instruction time : 51s | cpu time : 3.99s [DEBUG] 21:03:29: getType : instruction time : 9s | cpu time : 6.72s [DEBUG] 21:03:38: getName : instruction time : 9s | cpu time : 7.09s [DEBUG] 21:03:46: getRoomID : instruction time : 8s | cpu time : 6.59s [DEBUG] 21:03:56: getRoomName : instruction time : 10s | cpu time : 8.22s [DEBUG] 21:03:58: getSunrise : instruction time : 2s | cpu time : 1.43s [DEBUG] 21:03:58: [DEBUG] 21:03:58: ---------------------------------------------- [DEBUG] 21:03:58: ALL DONE Pas de changement significatif, sauf peut-être au niveau du setGlobal. Il me propose un upgrade pour 8 WP, alors que je n'en ai que 6 ... mais je ne suis pas pressé
  24. jojo

    Support Gea

    pour la décrémentation, la syntaxe est "dec%"
  25. j'allais lancer un shutdown -r now, et la ping erreur et il était en phase de restart Puis il m'a dit que tout était ok, je clicke que Close. et erreur 503. Je patiente encore un peu
×
×
  • Créer...