-
Compteur de contenus
4 434 -
Inscription
-
Dernière visite
-
Jours gagnés
201
Tout ce qui a été posté par Steven
-
Topic unique Récupérer La Temperature Max De La Veille
Steven a répondu à un(e) sujet de Allan2b dans Chauffage et Energie
A moins que je ne me trompe, àchaque changement de valeur. -
Topic unique Récupérer La Temperature Max De La Veille
Steven a répondu à un(e) sujet de Allan2b dans Chauffage et Energie
16 est bien l'ID du module virtuel qui contient le bouton dans l'ID est TempPiscine ? Car aucune raison que cela ne fonctionne pas. -
Topic unique Récupérer La Temperature Max De La Veille
Steven a répondu à un(e) sujet de Allan2b dans Chauffage et Energie
'$A1' ... ne devrait-il pas être '$A' tout simplement ? -
Faut faire la demande ici : http://www.domotique-fibaro.fr/index.php/topic/1588-banque-icones-hc2-et-hcl/
-
Normalement, ce script doit s'exécuter automatiquement à chaque changement de consommation de ta prise. N'oublie pas de créer la variable globale : LAVELINGE
-
100% d'accord avec @jojo et désolé de t'avoir induit en erreur avec le "value"
-
Topic unique Récupérer La Temperature Max De La Veille
Steven a répondu à un(e) sujet de Allan2b dans Chauffage et Energie
En effet, ce code ne va s'exécuter qu'une seule fois puisque, comme tu le précise, il n'y a pas de boucle sauf si tu le met dans le main loop d'un module virtuel (dans ce cas, il sera exécuté toutes les 3 secondes) Par contre, je n'aime pas du tout ce genre de code qui s'exécute en boucle pour rien. En effet, si la valeur ne change pas, il n'y a aucune raison de faire un appel http pour rien. De plus, faire des appel http dans un main loop est souvent source de plantée de la HC2 Le meilleur moyen est de traiter l'information ainsi : L'IPX envoi la valeur à la HC2 (uniquement quand la valeur change) L'HC2 traite la valeur et la stocke Voici comment je fais (purement personnel). J'ai un Module Virtuel qui va recevoir les données de l'IPX ( 1 label par valeur reçu ). Ce module est caché. J'au un scénario qui va écouter les changement du Module Virtuel ci-dessus et qui va traiter l'information. Exemple : J'ai un module virtuel (id 484) avec un label "ConsoGlobal" (représente la consommation électrique de ma maison) . Sur mon IPX j'ai ajouté ceci sur mon analogue cette rquête va mettre à jour le label ConsoGlobal avec la valeur de mon analog 5 : Ensuite j'ai un scénario qui va récupérer les changement de libellé sur le module virtuel caché et qui va les traiter : --[[ %% properties 484 ui.ConsoGlobal.value --]] actions = { ["ui.ConsoGlobal.value"] = function(value) fibaro:debug(value) local valueTempok = tonumber(value) * 0.323 - 50 local valueTempokstr = " "..string.format("%.2f", valueTempok).." °C" fibaro:setGlobal("valueTemp_piscine", valueTempok) fibaro:call(283, "setProperty", "ui.Label1.value", valueTempokstr) end, } -- =============================== -- Démarrage du script -- =============================== local trigger = fibaro:getSourceTrigger() if (trigger.type == "property") then property = trigger.propertyName device = trigger.deviceID value = fibaro:getValue(device, property) actions[property](value) end Ce script peux gérer plein de bouton. Et voilà .... tordu ... non ? 3 avantages à ce procédé : il est instantané (des que la valeur change, tout ce met à jour), il ne s'exécute que lorsque cela est nécessaire et pour finir, on a pas besoin de variable globale puisque le label "ConsoGlobal" est toujours présent et toujours à jour. Donc au lieu de faire fibaro:getGlobalValue(...) on peux faire fibaro:getValue(484, "ui.ConsoGlobal.label"). -
Topic unique Récupérer La Temperature Max De La Veille
Steven a répondu à un(e) sujet de Allan2b dans Chauffage et Energie
Arggg, non, sauf si tu as pu installer le Virtual Sensor de Krikroff : http://www.domotique-fibaro.fr/index.php/topic/2164-plugin-virtual-sensor/ Désolé de ne pas avoir tout lu, j'ai juste lu le sujet et partagé sans réfléchir un morceau de code. -
Topic unique Récupérer La Temperature Max De La Veille
Steven a répondu à un(e) sujet de Allan2b dans Chauffage et Energie
Il suffit d'envoyer ce code àpartir de n'importe quand pour avoir la température max de la veille : function getMaxTempYesterday(id) local t = os.date("*t") t.day = t.day - 1 local debut = os.time{year=t.year, month=t.month, day=t.day, hour=0, min=0, sec=0} local fin = os.time{year=t.year, month=t.month, day=t.day, hour=23, min=59, sec=59} local res = api.get("/temperature/"..debut.."/"..fin.."/compare/devices/temperature/"..id) return res[1].max end local max_hier = getMaxTempYesterday(442) fibaro:debug("La température maximum était de " .. max_hier) . 442 est l'id de mon capteur de température. -
Oups, en effet, désolé pour le END Remplace la ligne local conso = fibaro:getValue(id_wallplug, "value") par local conso = tonumber(fibaro:getValue(id_wallplug, "value"))
-
Ce genre d'erreur est assez fréquent lorsque l'on reçoit un flux json qui n'a pas été correctement fini (latence réseau, micro-coupure, ...) Pour éviter de planter le tout, j'utilise personnellement le pcall : http://www.lua.org/pil/8.4.html
-
Je ne vois pas de propriété du nom "deviceIcon" mais "icon" Et ne pas oublié que lorsque l'on change directement le json, le rafraîchissement n'est pas automatique, il faut recharger la page voir relancer l'application Android/iPhone.
-
J'y connais rien en Xbox, mais perso, j'ai mis la WII sur un wallplug que j'allume et j’éteins selon l'heure. C'est pour éviter que JE joue trop longtemps
-
Si on se base sur la consommation électrique, c'est assez simple. Il te faut d'abord créer une variable global (exemple : "LAVELINGE") qui sera utilisée pour savoir si le lave linge est en cours de lavage ou non. Puis utiliser le script suivant ... NON TESTE Il faut remplace le 100 par l'ID de ton wallplug (dans l'entête ET id_wallplug = XXX) Et l'ID de ton portable (id_portable = XXX) Cela devrait fonctionner --[[ %% properties 100 value --]] local id_wallplug = 100 local id_portable = 2 local consoArret = 4.6 -- en dessous de cette valeur on considère le lave-linge comme arrêté local globalVariable = "LAVELINGE" local conso = fibaro:getValue(id_wallplug, "value") local status = fibaro:getGlobalValue(globalVariable) -- la 1ère fois, la variable est vide donc on l'initialise à OFF if (status == "") then fibaro:setGlobal(globalVariable, "OFF") if (conso <= consoArret) then -- arret de la machine if (status ~= "OFF") then -- si le status n'est pas encore à OFF, on averti l'utilisateur de la fin fibaro:call(id_portable, "sendPush", "Fin du cycle de lavage") end fibaro:setGlobal(globalVariable, "OFF") else if (status ~= "RUNNING") then -- si le status n'est pas encore à RUNNING, on averti l'utilisateur du démarrage fibaro:call(id_portable, "sendPush", "Démarrage du lavage") end fibaro:setGlobal(globalVariable, "RUNNING") end
-
Besoin daide Aide Code Lua Et Wallplug Pour Coupure Multiroom
Steven a répondu à un(e) sujet de gargamel01000 dans Support
Alors Ton script actuel ne fonctionnera que : Au démarrage de ta box ou sauvegarde de ton script Lorsque la variable JourChome va changer Donc à 17h00 et 8h00 rien ne se passera. Voici donc une proposition .. NON TESTEE mais que devrait te donner une bonne base, voir plus. --[[ %% autostart --]] while true do -- date du jours local currentDate = os.date("*t") -- heure actuel au format HH:mm local heure = string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) -- jour de travail local jourdetravail = fibaro:getGlobalValue("JourChome") == "NON" if (heure == "17:00") then -- allumage fibaro:call(150, "turnOn") elseif (heure == "08:00" and jourdetravail) then -- éteindre fibaro:call(150, "turnOff") end -- on attend 1 minute fibaro:sleep(60*1000) end Cordialement -
local toto = {"Global", "...", "..."} local titi = {"Global", "...", "..."} local tutu = {"Global", "...", "..."} GEA.add( {toto, titi}, ...., {tutu} )
- 12 330 réponses
-
- support
- script lua
-
(et 1 en plus)
Étiqueté avec :
-
Excellente idée. J'ai modifié mon VD ainsi que le code pour prendre en compte ta remarque.
-
Image de la chambre + Bouton on/off + Retour d'état + Compatibilité HC2 = Imperihome
-
A première vue,doorid contient une valeur qui n'est pas un ID reconnu. Il faudrait vérifier les ID.
- 215 réponses
-
- Module virtuel
- alarme
-
(et 1 en plus)
Étiqueté avec :
-
Je confirme
- 12 330 réponses
-
- support
- script lua
-
(et 1 en plus)
Étiqueté avec :
-
GEA.add( {{"Value+", 189, 25},{"Label", 347, "state", "Arme"},{"Label",483,"Label1","Ouvert"}},-1,"Température élevée - Fermeture Volets",{{"VirtualDevice", 483, "3"}}) Te manquais juste une paire de { } pour englober les actions {{"VirtualDevice", 483, "3"}}
- 12 330 réponses
-
- support
- script lua
-
(et 1 en plus)
Étiqueté avec :
-
C'est pas le soleil mais le pastis
-
Heuu , le triple click est déjà pris en compte dans sceneActivation Triple Click 15 = S1 25 = S2 Donc pourquoi calculer si le simple click a été activé 3x ?
-
Cela ne va pas mettre à jour les données de fibaro mais juste mettre les heures ... les vrais de vrais dans un VD. Ci dessous le code du main loop. if (not SunTools) then SunTools = { decalage = 2, daylightsavings = true, lat = 0, long = 0, getLatLong = function(Self) if (Self.lat == 0 or Self.long == 0) then HC2 = Net.FHttp("127.0.0.1", 11111) response = HC2:GET("/api/settings/location") response = json.decode(response) Self.lat = response.latitude Self.long = response.longitude fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblLatLong.value", Self.lat .. "/" .. Self.long) end end, getData = function(Self) HC2 = Net.FHttp("api.sunrise-sunset.org") response = HC2:GET("/json?lat="..Self.lat.."&lng=".. Self.long) response = json.decode(response) local rise = Self:toHour(response.results.sunrise) local set = Self:toHour(response.results.sunset) local duree = response.results.day_length fibaro:debug(response.results.sunrise .. " -> " .. rise) fibaro:debug(response.results.sunset .. " -> " .. set) fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblSunrise.value", rise) fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblSunset.value", set) fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblLength.value", duree) end, toHour = function(Self, s) local pattern = "(%d+)%d+)%d+) (%a+)" local h,m,s,am = s:match(pattern) local decalage = Self.decalage if (Self.daylightsavings and not os.date("*t", os.time()).isdst) then decalage = decalage - 1 end h = h + decalage if (am == "PM") then h = h + 12 end if (h > 23) then h = 0 end return h .. ":" .. m .. ":" .. s end, } end if (not instance) then instance = { lastrun = 0, every = 1 } fibaro:debug("first run") end SunTools:getLatLong() diff = os.date("*t", os.difftime(os.time(), instance.lastrun)) if (diff.hour > instance.every) then SunTools:getData() instance.lastrun = os.time() end . . Edit : code modifié pour prendre en compte le décalage horaire précisé par Barelle ICI
-
J'ai eu le même soucis .. un relais grillé .. pas ma faute comme toujours. En changeant de relais, je n'ai plus de soucis.