G.RozNCo
Membres confirmés-
Compteur de contenus
28 -
Inscription
-
Dernière visite
-
Jours gagnés
1
G.RozNCo a gagné pour la dernière fois le 21 mai 2021
G.RozNCo a eu le contenu le plus aimé !
À propos de G.RozNCo
- Date de naissance 20/10/1980
Profile Information
-
Sexe :
Homme
-
Ville :
Tenteling
-
Intéret :
Dans le désorde:
Bricolage
Cuisine
Informatique
Peche
Equitation
Chimie
Jardinage
Electronique
Usinage
Airsoft -
Box
Home Center 2
Home Center 3
Jeedom -
Version
4
Visiteurs récents du profil
2 166 visualisations du profil
G.RozNCo's Achievements
-
Bonjour à tous... Je reviens à la charge, quitte à passer pour une andouille... je suis navré je ne comprends pas, j'ai surement un loupé dans mon raisonnement logique. Je ne parviens toujours pas à arrêter une routine de timer cyclique... Est ce qu'une âme charitable serait présente? => Je souhaites faire un module à 3 boutons fonctionnant comme cela: [Toujours ON] [Toujours OFF] [Cycle ON-OFF-ON-OFF...] avec comme paramètres : Durée d'un cycle %ON Nombre de cycles Je pensais que ce code ferait l'affaire, mais une fois dans le "Mode Cyclique" impossible de modifier quoi que ce soit... (d’où mon Watchdog) function QuickApp:B_Cycle() self:setVariable("Mode","AUTO") --Definition des paramètres Ratio_ON= ( self:getVariable("Cycle") * self:getVariable("Duree")/100 ) Ratio_OFF= ( self:getVariable("Duree") ) - Ratio_ON Watchdog = self:getVariable("Watchdog")*60/self:getVariable("Duree") --Definition de la durée totale while self:getVariable("Mode") =="AUTO" and Watchdog > 0 do self:T_ON(Ratio_ON) self:T_OFF(Ratio_OFF) Watchdog = Watchdog - 1 end self:debug("Sortie Mode AUTO") end function QuickApp:T_ON(Timer) hub.call(tonumber(self:getVariable("Modul_id")),"turnOn") Timer=Timer *60*10 while Timer > 0 and self:getVariable("Mode") =="AUTO" do hub.sleep(100) Timer=Timer-1 end end function QuickApp:T_OFF(Timer) hub.call(tonumber(self:getVariable("Modul_id")),"turnOff") Timer=Timer *60*10 while Timer > 0 and self:getVariable("Mode") =="AUTO" do hub.sleep(100) Timer=Timer-1 end end function QuickApp:onInit() self:setVariable("Watchdog", 12) hub.alert('push', { 2 }, os.date('%H:%M') .. "Initialisation", false,"" ) self:debug("Initialisation") end
-
Merci beaucoup, ces explications !
-
Merci pour l'idée j'essaie ça ce weekend. Je ne vois pas trop ou s'arrête la fonction setTimeout Je ne me représente pas le déroulement temporel de cette QA.
-
G.RozNCo a commencé à suivre Caméra TAPO C100 , Stopper une routine QA , Quick Apps et 2 autres
-
Bonjour à tous, J'essais de faire une QA minuteur modulable, et je coince aux modification pendant un cycle. Le but etant d'activer un module pendant une durée définie (entre 5 et 30min) toutes les 5-60minutes, avec la possibilité de modifer le cycle et la durée mais également de forcer l'allumage ou l'extinction. La QA se lance proprement , mais reste bloqué dans la routine "cycle", et je n'arrives ni a la modifier ni a la forcée (ON ou OFF). Je me doutes que mes timers sont les probèmes ... La fonction "SetTimeout" est peut etre plus adaptée, mais du coup la pause entre les commande n'es pas prise en compte. Avez vous des idées? Merci d'avance. function QuickApp:B_ON(event) self:updateView("Label_Info", "text", "ON... "..os.date('%H:%M')) self:setVariable("Mode","ON") self:onInit() end function QuickApp:B_Off(event) self:updateView("Label_Info", "text", "OFF... "..os.date('%H:%M')) self:setVariable("Mode","OFF") self:onInit() end function QuickApp:B_Cycle() self:debug("Cycle: " , self:getVariable("Cycle"), " on/off | " , self:getVariable("Duree"), "min") self:updateView("Label_Info", "text", os.date('%H:%M').." Cycle: ON/OFF "..self:getVariable("Cycle").."% | "..self:getVariable("Duree").. "min") self:setVariable("Mode","AUTO") self:onInit() end function QuickApp:onInit() self:debug("Init",self:getVariable("Mode")) if self:getVariable("Mode") == "ON" then hub.call(tonumber(self:getVariable("Modul_id")),"turnOn") elseif self:getVariable("Mode") == "OFF" then hub.call(tonumber(self:getVariable("Modul_id")),"turnOff") elseif self:getVariable("Mode") =="AUTO" then local Ratio_ON= ( self:getVariable("Cycle") * self:getVariable("Duree")/100 ) local Ratio_OFF= ( self:getVariable("Duree") ) - Ratio_ON Timer=Ratio_ON *60 hub.call(tonumber(self:getVariable("Modul_id")),"turnOn") while Timer > 0 and self:getVariable("Mode") =="AUTO" do hub.sleep(1000) Timer=Timer-1 end Timer=Ratio_OFF *60 hub.call(tonumber(self:getVariable("Modul_id")),"turnOff") while Timer > 0 and self:getVariable("Mode") =="AUTO" do hub.sleep(1000) Timer=Timer-1 end self:onInit() else self:setVariable("Mode","OFF") end end
-
TOP! Merci pour ton aides!
-
Bonjour, Est ce que quelqu'un aurait une explication concernant le déroulé des fonctions, ou plutot leur timming? Dans ce code lorsque je lance la fonction "Bouton_Read()" je m'attends a avoir [data sent] puis ma reponse "MB_Reponse = self:read()" et enfin [send DONE X] et [read DONE X]. Mais j'obtiens un déroulé complètement different et pas de return exploitable. Seule la fonction "onDataReceived(data)" recoit une réponse. Une idée ou mon erreur se situe? [28.05.2024] [09:18:28] [DEBUG] [QUICKAPP135]: send DONE X [28.05.2024] [09:18:28] [DEBUG] [QUICKAPP135]: read DONE X [28.05.2024] [09:18:28] [DEBUG] [QUICKAPP135]: Data: / MB_Reponse: / GetVar MB_Reponse: 0701040441973333[28.05.2024] [09:18:28] [DEBUG] [QUICKAPP135]: data sent -- Variables local data local MB_Reponse local MB_Float32, MB_Signe, MB_Exposant, MB_Mantisse -- function QuickApp:Float32toReal(MB_Float32) -- Conversion Float32 en Real MB_Signe = math.pow(-1, math.fmod( MB_Float32, 2 )) MB_Exposant = math.pow( 2, math.modf( MB_Float32 / 8388608 ) - 127 ) MB_Mantisse = 8388608 + math.fmod( MB_Float32, 8388608 ) return (( MB_Signe * MB_Mantisse * MB_Exposant ) / 8388608) end --function Float32toReal function QuickApp:Bouton_Read() self:send(string.char(0x01,0x00,0x00,0x00,0x00,0x06,0x01,0x04,0x00,0x48,0x00,0x02)) MB_Reponse = self:read() QuickApp:debug("Data: ", data, "/ MB_Reponse: ",MB_Reponse, "/ GetVar MB_Reponse: ", self:getVariable("MB_Reponse")) end function QuickApp:onDataReceived(data) self:setVariable("MB_Reponse",data) end function QuickApp:onInit() local ModBus self:trace("onInit") self.ip = self:getVariable("MultiCell_IP") self.port = tonumber(self:getVariable("MultiCell_Port")) self.ModBus = net.TCPSocket() -- creation of a TCPSocket instance self:connect() end function QuickApp:connect() -- a method to open a TCP connection. self.ModBus:connect(self.ip, self.port, { -- connection to the device with the specified IP and port success = function() -- the function will be triggered if the connection is correct self:trace("Connected ") -- if the connection is successful, the data readout loop will be called --self:read() -- launching a data readout end, error = function(err) -- a function that will be triggered in case of an incorrect connection, e.g. timeout self:disconnect() --self.sock:close() -- closing the socket self:debug("connection error",err) fibaro.setTimeout(5000, function() self:connect() end) -- re-connection attempt (every 5s) end, }) end function QuickApp:disconnect() -- a method to close the TCP connection. self.ModBus:close() -- closing the socket self:trace("disconnected") end function QuickApp:send(strToSend) -- sending command self.ModBus:write(strToSend, { success = function() -- the function that will be triggered when the data is correctly sent self:debug("data sent") end, error = function(err) -- the function that will be triggered in the event of an error in data transmission self:debug("error while sending data") end }) self:debug("send DONE X") end function QuickApp:read() self.ModBus:read({ -- reading a data package from the socket success = function(data) --self:setVariable("MB_Reponse",data) self:onDataReceived(data) -- handling of received data --self:debug("read DONE") return data end, error = function() -- a function that will be called in case of an error when trying to receive data, e.g. disconnecting a socket self:error("response error" , error) self:disconnect() --self.sock:close() -- socket closed fibaro.setTimeout(5000, function() self:connect() end) -- re-connection attempt (every 5s) end }) self:debug("read DONE X") end function QuickApp:HexDumpString(str,spacer) return ( string.gsub(str,"(.)", function (c) return string.format("%02X%s",string.byte(c), spacer or ""); --convertion décimal en hexa end)) end
-
Merci pour la réponse. Je vais regarder cela en détail ce soir, parce que là je suis perdu. Mais c'est sûrement dû à une étroitesse d'esprit.
-
Il y a clairement de nombreux sujet concernant les variables local et global. Je penses avoir mal compris le "NON Local"... Les variables sont local ou global, c'est cela?
-
Merci pour ta reponse... peut tu me dire comment déclarer une variable non locale?
-
Bonjour à tous... Je suis passé il y a peu d'une HC2 à une HC3, et je rames avec les QA... Est ce qu'une âme charitable pourrais m'éclairer 1 points: Comment utiliser une variable (son contenu évidement) d'une fonction à l'autre au sein d'une QA?
-
Topic unique Piloter Un Poêle À Pellets
G.RozNCo a répondu à un(e) sujet de acidric dans Chauffage et Energie
Bonjour, Est ce que qq1 a lié un Rika avec une HC3? -
Bonjour, Ma HC2 viens de s'éteindre... le disque système est introuvable... :(( pourriez vous a nouveau partager l'image de la clé recovery de la HC2 ou l'image de la clé interne? Milles merci!
-
La tapo m'intrigue... Est elle fonctionnelle avec un HC2
-
Et voici ... MB_Float32 = tonumber("4199999A",16) MB_Signe = math.fmod(MB_Float32, 2) MB_Exposant = math.modf(MB_Float32 / 8388608) - 127 MB_Mantisse = ( 8388608 + math.fmod(MB_Float32,8388608) ) MB_int = math.pow(-1,MB_Signe) * (MB_Mantisse * math.pow(2,MB_Exposant) ) / 8388608 fibaro:debug(MB_Signe .. " " .. MB_Exposant .. " " .. MB_Mantisse)
-
Le problème c'est que la conversion se fait en Binaire, en Decimale je pêche...