Aller au contenu

flamalex

Membres confirmés
  • Compteur de contenus

    819
  • Inscription

  • Dernière visite

  • Jours gagnés

    4

flamalex a gagné pour la dernière fois le 5 septembre 2023

flamalex a eu le contenu le plus aimé !

Profile Information

  • Sexe :
    Homme
  • Ville :
    Toulouse
  • Box
    Autre
  • Version
    HC2&HC3

Visiteurs récents du profil

2 883 visualisations du profil

flamalex's Achievements

Newbie

Newbie (1/14)

  • Week One Done Rare
  • One Month Later Rare
  • One Year In Rare

Recent Badges

77

Réputation sur la communauté

1

Community Answers

  1. Bonjour, @ntaravel tu as des éléments de réponse en page 2 de ce sujet aujourd'hui, j'ai cette erreur "Error : status=429" je verrai demain si je l'ai encore
  2. Bonjour, ma modeste contribution, qui m'a pris bcp de tps, a decortiquer et essayer de comprendre l'articulation des choses merci au forum, et à google partage d'une experience, je n'ai rien inventé, juste adapté à mes besoins n'arrivant pas, au debut, a reboot la livebox via la HC3 puis ensuite ne pouvant reboot la livebox si HC3 plantée j'ai cherché l'equipement du reseau qui ne plantait jamais, le NAS SYNOLOGY j'ai donc installé un script, ci dessous sur le NAS SYNO avec un module SHELLY wifi (le wifi est sur un routeur wifi asus qui ne plante jamais) le planificateur du syno lance le script pour controler la connexion de la LB, si celle ci n'est pas OK alors il reboot niveau materiel la livebox #!/bin/bash site1=${1:-192.168.0.1} site2=${1:-orange.fr} site3=${1:-google.com} ping -c 1 $site1; ping1=$? ping -c 1 $site2; ping2=$? ping -c 1 $site3; ping3=$? if [ $ping1 -eq 0 ] && [ $ping2 -eq 0 ] && [ $ping3 -eq 0 ] then echo "Connexion OK" else echo "No connexion" curl http://192.168.1.50/relay/0?turn=off sleep 5 curl http://192.168.1.50/relay/0?turn=on fi puis ensuite, j'ai fait la meme chose avec la HC3 avec un 2eme shelly, si niveau software ça veut pas alors on reboot le hardware avec script ci dessous #!/bin/bash HC3_ADDRESS="192.168.x.xx" HC3_AUTHENTICATION="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" # Check Fibaro services restart OUTPUT=$( curl --write-out "HTTPSTATUS:%{http_code}" --silent --header "Authorization: Basic ${HC3_AUTHENTICATION}" "http://${HC3_ADDRESS}/api/service/servicesStatus" ) echo "${OUTPUT}" if [ $? -ne 0 ] then Error "Erreur : impossible de se connecter au Home Center pour vérifier son statut" Quit 14 fi JSON=$(echo "${OUTPUT}" | sed -e 's/HTTPSTATUS\:.*//g') CODE=$(echo "${OUTPUT}" | tr -d '\n' | sed -e 's/.*HTTPSTATUS://') echo "${CODE}" if [ "${CODE}" == "200" ] then echo "la HC3 est bien connectée" else echo "la HC3 n'est pas connectée" OUTPUT2=$( curl --write-out "HTTPSTATUS:%{http_code}" --silent --request POST --header "Authorization: Basic ${HC3_AUTHENTICATION}" "http://${HC3_ADDRESS}/api/service/reboot" --data '{}') if [ $? -ne 0 ] then echo "Erreur : impossible de se connecter au Home Center pour forcer le reboot" fi JSON=$(echo "${OUTPUT2}" | sed -e 's/HTTPSTATUS\:.*//g') CODE=$(echo "${OUTPUT2}" | tr -d '\n' | sed -e 's/.*HTTPSTATUS://') if [ "${CODE}" == "200" ] then echo -e "Box Fibaro rebootée de force\n" else echo "Erreur : impossible de forcer le reboot de la box Fibaro : code de retour HTTP ${CODE}" "${JSON}" echo "# ici on actionne un relais qui coupe le courant" curl http://192.168.1.51/relay/0?turn=off sleep 5 curl http://192.168.1.51/relay/0?turn=on fi fi
  3. flamalex

    temps utilisation device

    voici le code qui va bien et il est autonome, plus de pseudo initialisation via GEA merci pour les pistes function QuickApp:onInit() self:debug("Initialisation du QA compteur tps pompe piscine...") self:updateProperty("deviceIcon", 1120) -- self.time = tonumber(os.time()) self:refresh() -- self:Time_CUMUL() self:stocktime() end function QuickApp:refresh() local TOTAL_JOUR = self:getVariable("TOTAL_JOUR") ---on lit variable self:updateView("Lbl1", "text", "cumul tps jour: " ..TOTAL_JOUR.."") local jmoins1 = self:getVariable("j-1") ---on lit variable self:updateView("Lbl2", "text", "cumul tps J-1: " ..jmoins1.."") local jmoins2 = self:getVariable("j-2") ---on lit variable self:updateView("Lbl3", "text", "cumul tps J-2: " ..jmoins2.."") local jmoins3 = self:getVariable("j-3") ---on lit variable self:updateView("Lbl4", "text", "cumul tps J-3: " ..jmoins3.."") self:updateView("last_update", "text", "Dernière MAJ : " .. os.date("%H:%M")) end function QuickApp:RESET_TIME() --à minuit 2minutes on reset time local vide = self:getVariable("Last_Cycle") ---on lit variable if vide == nil then self:setVariable("Last_Cycle","0") end -- Actions to perform every new day (at 00:02) local loopDay = self:getVariable("LOOP_DAY") -- on lit la variable du dernier cycle local newday = os.date('%d') if newday ~= loopDay then self:setVariable("TOTAL_JOUR","00:00:00") end local newday = os.date('%d') if newday ~= loopDay then self:setVariable("Add_Cycles","0") end local newday = os.date('%d') if newday ~= loopDay then self:setVariable("Last_Cycle","0") end local cycle_day = self:getVariable("TOTAL_JOUR") if newday ~= loopDay then self:updateView("Lbl1", "text", "cumul tps jour: " ..cycle_day.."") end self.loopDay = newday self:updateProperty("value", tonumber(newday)) --on l'affiche ds tuile self:updateView("last_update", "text", "Dernière MAJ : " .. os.date("%H:%M")) end function QuickApp:jmoins1() -- 1 fois par jour à 23h50 , je mémorise la durée de la veille et on l'affiche dans label 1 the_day_before -- donc à 23h45 le addtime devient j-1 local jmoins1 = self:getVariable("TOTAL_JOUR") ---on lit variable self:setVariable("j-1", jmoins1) self:updateView("Lbl2", "text", "cumul tps J-1: " ..jmoins1.."") end function QuickApp:jmoins2() -- 1 fois par jour à 23h45 , je mémorise la durée de la veille et on l'affiche dans label 2 the_day_before -- donc à 23h50 le addtime devient j-2 local jmoins2 = self:getVariable("j-1") ---on lit variable self:setVariable("j-2", jmoins2) self:updateView("Lbl3", "text", "cumul tps J-2: " ..jmoins2.."") end function QuickApp:jmoins3() -- 1 fois par jour à 23h40 , je mémorise la durée de la veille et on l'affiche dans label 3 the_day_before -- donc à 23h40 le addtime devient j-3 local jmoins3 = self:getVariable("j-2") ---on lit variable self:setVariable("j-3", jmoins3) self:updateView("Lbl4", "text", "cumul tps J-3: " ..jmoins3.."") end function QuickApp:turnOn() self.time = tonumber(os.time()) --il a boot time self:setVariable("Time_Debut_Num",self.time) --on ecrit la variable end ------------------------------------------------------------ function QuickApp:ON_TEST() self.time = tonumber(os.time()) --il a boot time self:setVariable("Time_Debut_Num",self.time) --on ecrit la variable end function QuickApp:OFF_TEST() self.time = tonumber(os.time()) --il a boot time self:setVariable("Time_Fin_Num",self.time) --on ecrit la variable self:Actu_Cycle() end function QuickApp:Actu_Cycle() local HD = self:getVariable("Time_Debut_Num") --on lit heure debut de cycle local HF = self:getVariable("Time_Fin_Num") --on lit la variable heure de fin de cycle local TE = (HF-HD) --temps ecoulé en numeric self:setVariable("Actu_Cycle",TE) --on ecrit la variable en numeric self:Add_Cycles() end function QuickApp:Add_Cycles() local Actu_Cycle = self:getVariable("Actu_Cycle") --on lit la variable local Last_Cycle = self:getVariable("Last_Cycle") --on lit local Add_Cycles = (Last_Cycle + Actu_Cycle) self:setVariable("Add_Cycles",Add_Cycles) --on ecrit la variable self:setVariable("Last_Cycle",Add_Cycles) --on ecrit la variable local New_Last_Cycles = self:getVariable("Last_Cycle") -- on lit variable local TOTAL_JOUR = self:SecondsToClock(New_Last_Cycles); -- conversion du temps ecoulé en heure min sec self:setVariable("TOTAL_JOUR",TOTAL_JOUR) --on ecrit la variable self:debug(TOTAL_JOUR) local TOTAL_JOUR = self:getVariable("TOTAL_JOUR") -- on lit la variable du dernier cycle self:updateView("Lbl1", "text", "cumul tps jour: " ..TOTAL_JOUR.."") self:updateProperty("log", "Tps Total: "..TOTAL_JOUR.." \r") -- mise à jour du Log (ecriture sur la Tuile en bas) end ------------------------------------------------- function QuickApp:turnOff() self.time = tonumber(os.time()) --il a boot time self:setVariable("Time_Fin_Num",self.time) --on ecrit la variable self:Actu_Cycle() end function QuickApp:SecondsToClock(sSeconds) -- on transforme le "compteur" en h min sec 00:00:00 local nSeconds = tonumber(sSeconds) if nSeconds == 0 then return "00:00:00"; else nHours = string.format("%02.f", math.floor(nSeconds/3600)); nMins = string.format("%02.f", math.floor(nSeconds/60 - (nHours*60))); nSecs = string.format("%02.f", math.floor(nSeconds - nHours*3600 - nMins *60)); return nHours..":"..nMins..":"..nSecs end end function QuickApp:stocktime() local Heure = tonumber(os.date("%H", os.time())) --self:debug(Heure) local Minute = tonumber(os.date("%M", os.time())) --self:debug(Minute) ----------------------------------------------------------------- ---------- MISE A JOUR DES VARIABLES POUR L'HISTORIQUE ---------- ----------------------------------------------------------------- -- 3eme if (Heure == tonumber("23") and Minute > tonumber("55")) and (Heure == tonumber("23") and Minute < tonumber("59")) then self:jmoins1() --if (Heure == tonumber("8") and Minute > tonumber("38")) and (Heure == tonumber("8") and Minute < tonumber("40")) then self:jmoins1() end -- 2eme if (Heure == tonumber("23") and Minute > tonumber("50")) and (Heure == tonumber("23") and Minute < tonumber("54")) then self:jmoins2() --if (Heure == tonumber("8") and Minute > tonumber("35")) and (Heure == tonumber("8") and Minute < tonumber("37")) then self:jmoins2() end -- 1er if (Heure == tonumber("23") and Minute > tonumber("45")) and (Heure == tonumber("23") and Minute < tonumber("49")) then self:jmoins3() --if (Heure == tonumber("8") and Minute > tonumber("32")) and (Heure == tonumber("8") and Minute < tonumber("34")) then self:jmoins3() end -- 4eme if (Heure == tonumber("00") and Minute > tonumber("01")) and (Heure == tonumber("00") and Minute < tonumber("05")) then self:RESET_TIME() --if (Heure == tonumber("8") and Minute > tonumber("41")) and (Heure == tonumber("8") and Minute < tonumber("44")) then self:RESET_TIME() end self:debug("Boucle TIME") fibaro.setTimeout(1000 * 60 * 1, function() ---toutes les minutes self:stocktime() end) end
  4. flamalex

    temps utilisation device

    Ok ça roule, je vais refaire tt ça, c’est la pagaille dans le code ca manque de structure la conversion en Time 00:00:00 puis l’affichage des labels et le contrôle du jour suivant, j’suis certain qu’il y a plus simple puis je m’occupe de cette variable QA et comparaison
  5. flamalex

    temps utilisation device

    Là tu m as perdu « donc dans le onInit, vérifier si le statut est le même que celui connu précédemment, ou pas. » et ça aussi c’est intéressant, ça peut me servir aussi pour d’autres applications, c’est Top » On pourrait aussi imaginer détecter un temps anormalement long, qui pourrait indiquer que la box est restée indisponible pendant plusieurs heures, jours ? »
  6. flamalex

    temps utilisation device

    Oui c’est pas mal ça, mais pcq’il y a toujours un mais « en admettant que » la pompe est arrêtée pendant que ma box reboot ? bon, je vais essayer c’est vraiment l’usine à gaz avec toutes les conversions
  7. flamalex

    temps utilisation device

    Le problème avec le code ci dessus la pompe est en marche depuis 2h, la hc3 reboot (tte seule) et lorsqu’il y a un turnoff de la pompe, le temps écoulé est celui entre le reboot et le turnoff et ne prend pas les 2h de marche avant le reboot une idée ? Je sais que le code n’est pas très propre et fait usine à gaz, en l’état il est presque opérationnel à l’exception de ce désagrément
  8. flamalex

    temps utilisation device

    voici le code complet, avec le stockage des valeurs à j-1/-2/-3 entre 23h45 et minuit, réalisé par le Qa et non plus avec GEA function QuickApp:onInit() self:debug("Initialisation du QA compteur tps pompe piscine...") self:updateProperty("deviceIcon", 1120) self.time = tonumber(os.time()) self:refresh() self:Time_CUMUL() self:stocktime() end function QuickApp:refresh() local ADD_TIME_HMS = self:getVariable("ADD_TIME_HMS") ---on lit variable self:updateView("Lbl1", "text", "cumul tps jour: " ..ADD_TIME_HMS.."") local jmoins1 = self:getVariable("j-1") ---on lit variable self:updateView("Lbl2", "text", "cumul tps J-1: " ..jmoins1.."") local jmoins2 = self:getVariable("j-2") ---on lit variable self:updateView("Lbl3", "text", "cumul tps J-2: " ..jmoins2.."") local jmoins3 = self:getVariable("j-3") ---on lit variable self:updateView("Lbl4", "text", "cumul tps J-3: " ..jmoins3.."") self:updateView("last_update", "text", "Dernière MAJ : " .. os.date("%H:%M")) end function QuickApp:RESET_TIME() --à minuit 2minutes on reset time -- Actions to perform every new day (at 00:02) local loopDay = self:getVariable("LOOP_DAY") -- on lit la variable du dernier cycle local newday = os.date('%d') if newday ~= loopDay then self:setVariable("DUREE_LASTE_CYL","00:00:00") end local cycle_day = self:getVariable("DUREE_LASTE_CYL") if newday ~= loopDay then self:updateView("Lbl1", "text", "cumul tps jour: " ..cycle_day.."") end self.loopDay = newday self:updateProperty("value", tonumber(newday)) --on l'affiche ds tuile self:updateView("last_update", "text", "Dernière MAJ : " .. os.date("%H:%M")) end function QuickApp:jmoins1() -- 1 fois par jour à 23h50 , je mémorise la durée de la veille et on l'affiche dans label 1 the_day_before -- donc à 23h45 le addtime devient j-1 local jmoins1 = self:getVariable("ADD_TIME_HMS") ---on lit variable self:setVariable("j-1", jmoins1) self:updateView("Lbl2", "text", "cumul tps J-1: " ..jmoins1.."") end function QuickApp:jmoins2() -- 1 fois par jour à 23h45 , je mémorise la durée de la veille et on l'affiche dans label 2 the_day_before -- donc à 23h50 le addtime devient j-2 local jmoins2 = self:getVariable("j-1") ---on lit variable self:setVariable("j-2", jmoins2) self:updateView("Lbl3", "text", "cumul tps J-2: " ..jmoins2.."") end function QuickApp:jmoins3() -- 1 fois par jour à 23h40 , je mémorise la durée de la veille et on l'affiche dans label 3 the_day_before -- donc à 23h40 le addtime devient j-3 local jmoins3 = self:getVariable("j-2") ---on lit variable self:setVariable("j-3", jmoins3) self:updateView("Lbl4", "text", "cumul tps J-3: " ..jmoins3.."") end function QuickApp:turnOn() self.time = tonumber(os.time()) --il a boot time end function QuickApp:turnOff() self.loopDay = os.date('%d') self:setVariable("LOOP_DAY",self.loopDay) --on ecrit la variable self:Time_CUMUL() self:updateView("last_update", "text", "Dernière MAJ : " .. os.date("%H:%M")) end function QuickApp:Time_CUMUL() local elapsed = os.difftime(os.time(), tonumber(self.time)) -- il s'est arrete et il s'est ecoulé x tps --self:debug("elapsed") local DUREE_LASTE_CYL = self:getVariable("DUREE_LASTE_CYL") -- on lit la variable du dernier cycle --self:debug("DUREE DU DERNIER CYCLE : " ..DUREE_LASTE_CYL.."") local CYCLE_ACTU = elapsed self:setVariable("CYCLE_ACTU",CYCLE_ACTU) --on ecrit la variable --self:debug("CYCLE ACTUEL: " ..CYCLE_ACTU.."") local NEW_DUREE = (DUREE_LASTE_CYL + CYCLE_ACTU) --self:debug("NEW DUREE "..NEW_DUREE.."") self:setVariable("DUREE_LASTE_CYL",NEW_DUREE) --on ecrit la variable local ADD_TIME = self:SecondsToClock(NEW_DUREE); -- on transforme le "compteur" en h min sec 00:00:00 self:updateProperty("log", "Tps Total: "..ADD_TIME.." \r") -- mise à jour du Log (ecriture sur la Tuile en bas) self:setVariable("ADD_TIME_HMS",ADD_TIME) --on ecrit la variable self:updateProperty("value", ADD_TIME_HMS) -- on l'affiche sur tuile (marche pas) local ADD_TIME_HMS = self:getVariable("ADD_TIME_HMS") -- on lit la variable du dernier cycle self:updateView("Lbl1", "text", "cumul tps jour: " ..ADD_TIME_HMS.."") end function QuickApp:SecondsToClock(sSeconds) -- on transforme le "compteur" en h min sec 00:00:00 local nSeconds = tonumber(sSeconds) if nSeconds == 0 then return "00:00:00"; else nHours = string.format("%02.f", math.floor(nSeconds/3600)); nMins = string.format("%02.f", math.floor(nSeconds/60 - (nHours*60))); nSecs = string.format("%02.f", math.floor(nSeconds - nHours*3600 - nMins *60)); return nHours..":"..nMins..":"..nSecs end end function QuickApp:stocktime() local Heure = tonumber(os.date("%H", os.time())) self:debug(Heure) local Minute = tonumber(os.date("%M", os.time())) self:debug(Minute) ----------------------------------------------------------------- ---------- MISE A JOUR DES VARIABLES POUR L'HISTORIQUE ---------- ----------------------------------------------------------------- -- 3eme if (Heure == tonumber("23") and Minute > tonumber("55")) and (Heure == tonumber("23") and Minute < tonumber("59")) then self:jmoins1() --if (Heure == tonumber("8") and Minute > tonumber("38")) and (Heure == tonumber("8") and Minute < tonumber("40")) then self:jmoins1() end -- 2eme if (Heure == tonumber("23") and Minute > tonumber("50")) and (Heure == tonumber("23") and Minute < tonumber("54")) then self:jmoins2() --if (Heure == tonumber("8") and Minute > tonumber("35")) and (Heure == tonumber("8") and Minute < tonumber("37")) then self:jmoins2() end -- 1er if (Heure == tonumber("23") and Minute > tonumber("45")) and (Heure == tonumber("23") and Minute < tonumber("49")) then self:jmoins3() --if (Heure == tonumber("8") and Minute > tonumber("32")) and (Heure == tonumber("8") and Minute < tonumber("34")) then self:jmoins3() end -- 4eme if (Heure == tonumber("00") and Minute > tonumber("01")) and (Heure == tonumber("00") and Minute < tonumber("05")) then self:RESET_TIME() --if (Heure == tonumber("8") and Minute > tonumber("41")) and (Heure == tonumber("8") and Minute < tonumber("44")) then self:RESET_TIME() end self:debug("Boucle TIME") fibaro.setTimeout(1000 * 60 * 1, function() self:stocktime() end) end
  9. flamalex

    temps utilisation device

    oui en effet, ben ce n'est pas encore clair pour moi le tonumber(os.time) dans l'init pour moi, le ON provoqué le start du tonumber(os.time) et le OFF le "end" du os.time puis je déduisais le temps entre les 2 (diff) ..... function QuickApp:onInit() self:debug("Initialisation du QA compteur piscine...") self:updateProperty("deviceIcon", 1120) self.time = tonumber(os.time()) self:refresh() self:Time_CUMUL()
  10. flamalex

    temps utilisation device

    Ah ok ça explique le plantage après un reboot de la box mais comment tu l’initialises ? avant j'avais pensé à un start_time puis un endTime mais je ne m'en sors pas
  11. flamalex

    temps utilisation device

    depuis ce soir, j'ai cette erreur bad argument #2 to 'difftime' (number expected, got nil) sur la ligne suivante, je ne trouve rien sur google, rien sur le difftime, une idée? local elapsed = os.difftime(os.time(), tonumber(self.time)) -- tps écoulé entre le ON et OFF
  12. c'est bon j'ai pu tester, ça fonctionne au top GEA.add({{"TurnOn",id["MOUV_EXT_BURO"]},{"Power+",id["VR_BURO_PORTEFENETRE"], 10}}, -1 , "" , {"Open",id["VR_BURO_PORTEFENETRE"]})
  13. Merci Lazer »Power » en condition, est ce en remplacement de value? (Power+ Power - power ! …..) je n’avais encore jamais vu aurais tu un exemple? Un sujet sur le forum? je n’ai rien trouvé merci exemple --ici il y a detection de mouvement en trigger et si le volet est en mouvement (10 pour 10w) alors il s'ouvre dans cet exemple on ne sait pas si le volet etait en mouvement d'ouverture ou fermeture GEA.add({{"TurnOn",id["MOUV_EXT_BURO"]},{"Power+",id["VR_BURO_PORTEFENETRE"], 10}}, -1 , "" , {"Open",id["VR_BURO_PORTEFENETRE"]})
  14. Bonjour, je cherche à détecter si le volet est en mouvement en utilisant sa conso en temps réel, exemple dans une scene dans GEA ou en Lua, si détection de mouvement exterieur sur une terrasse au moment ou le volet est en mouvement (fermeture) alors stop volet puis retour à la postion initiale comment récupérer cette consommation sur un shutter fibaro?
  15. C’est clair, sans Gea je ne ferai rien ou pas grand chose avec fibaro c’est top
×
×
  • Créer...