Aller au contenu

flamalex

Membres confirmés
  • Compteur de contenus

    819
  • Inscription

  • Dernière visite

  • Jours gagnés

    4

Tout ce qui a été posté par flamalex

  1. --================================ function QuickApp:BTN_PRESENT() self:updateProperty("value",true) self:setVariable("statut", "present") -- on renseigne la variable self:getVariable("statut") --on lit la variable print ("etat:",statut) self:debug(statut) self:updateView("Lbl1", "text", statut) -- on affiche la variable dans label --self:updateView("Lbl1", "text", "Status: "..statut) --self:updateView("Lbl1", "text", "prez" ) end function QuickApp:BTN_ABSENT() self:updateProperty("value",false) -- on change le statut du QA self:setVariable("statut", "absent") --on modifie variable self:getVariable("statut") --on lit la variable print ("etat:",statut) self:debug(statut) self:updateView("Lbl1", "text", statut) -- on affiche la variable dans label --self:updateProperty("satut", statut) --self:updateView("Lbl1", "text", "Abs" ) end Hello, dans un QA, via 2 BTN je modifie une variable "statut" (present/absent), une fois modifiée, je souhaite la récupérer pour l'afficher dans un label (recuperer la valeur de la variable et non pas comme dans le code ici afficher un text) comment afficher une variable dans un label? merci nota: le print et le debug m'affiche rien et nil j'essaie de comprendre (il doit y avoir une notion de variable dans QA ou fonction () ..... )
  2. ok, j'obtiens 8 secondes pour l'absence, c'est good. ce qui compte c'est la présence en moins de 3 sec, c'est top il me reste à coller des variable "ABSENT" "PRESENT" dans le code pour les recup dans GEA ou pour les forcer
  3. ok, peut on passer le scheduler en seconde? est ce que moi "0,2" minute fonctionne? self.maxRetry_Process = 2 -- nombre max de ping de recherche self.scheduler_value = 0,2 -- minutes entre 2 recherches de téléphone self.check_wait = 5 -- secondes entre 2 ping
  4. @Dragoniacs oui en réduisant ceci j'ai obtenu 1 minute self.maxRetry_Process = 5 -- nombre max de ping de recherche self.scheduler_value = 1 -- minutes entre 2 recherches de téléphone self.check_wait = 5 -- secondes entre 2 ping EDIT 1: j'ai supprimé le mainloop: résultat, je rétablis le wifi du phone, il me trouve de suite (3 sec), apres avoir clic sur le BP mais j'ai toujours un temps de retour élevé lorsque il faut me signaler l'absence je coupe le wifi sur le phone, je clic sur BP FIND, il lui faut 1 min pour me dire que je suis absent EDIT 2: il y a ceci à modifier? --check for error if self.foundUser == false then if retry < self.maxRetry_Process then fibaro.sleep(self.check_wait*1000); self:FindMac(retry + 1);
  5. @Dragoniacs top merci observation(s): - je coupe le wifi sur le phone, je clic sur BP FIND, il lui faut 2 à 3 min pour me dire que je suis absent - à l'inverse, je rétablis le wifi du phone, il me trouve de suite, sans que je clic sur le BP je souhaiterai que des le clic sur BP il trouve ou pas instantanément le phone EDIT 1: j'ai supprimé le mainloop: résultat, je rétablis le wifi du phone, il me trouve de suite (3 sec), apres avoir clic sur le BP mais j'ai toujours un temps de retour élevé lorsque il faut me signaler l'absence je coupe le wifi sur le phone, je clic sur BP FIND, il lui faut 1 min pour me dire que je suis absent
  6. En as tu un qui fonctionne ? as tu réussi à faire fonctionner un QA thermostat auto, comme celui préconisé par @Lazer sur la 1ere page? je m’explique, il y a 2 sujets: - je n’arrive pas à récupérer les données de la consigne heating cooling et setmode De ce QA thermostat auto, pour ensuite les exploiter. - 2eme sujet : n’arrivant pas à trouver de solution pour sujet ci dessus, je souhaite reproduire le vd clim daikin de ma hc2, donc il me faut du slider……
  7. @Dragoniacs bonjour, pourrais tu mettre ton QA (celui ci dessus avec ton ID30, heating et cooling) en partage, sur un autre poste nous essayons de faire le même pour une PAC DAIKIN. merci (je débute sur hc3 )
  8. Salut couillerot, alors oui ça j'avais bien noté, n'ayant pas de pluviomètre netatmo ma source d'info est " (source : WeatherBit)" je souhaitais savoir si on pouvait changer celle ci (la source) uniquement pour "Précipitations ce jour" par une autre source comme meteo france 24h (mais ça va devenir une usine à gaz )
  9. Bonjour, @Dragoniacs ta source est "Pluie 24h" passes tu par weatherB ou meteofrance (pluie dans l'heure....24h....) ?
  10. Oh oui volontiers ça serait cool @Dragoniacs pourrais tu publier une le V1.2 avec le BP check if phone is present ? j'avais ceci dans le BP check sur HC2 fibaro:call(759, "sendDefinedPushNotification", "99"); fibaro:sleep(6*1000); fibaro:log("Starting process"); local variable_globale_phone = "Phone_Alex"; local thismodule=fibaro:getSelfId() local _deviceIp = fibaro:get(thismodule, 'IPAddress') local _devicePort = fibaro:get(thismodule, 'TCPPort') local _maxRetryProcess = 5; local time = tonumber(os.time()); local maxtime = 14; function SecondsToClock(sSeconds) 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 -- recursive function to ping device local function _ping(retry) retry = retry or 0; -- notify state local elapsed = os.difftime(os.time(), tonumber(time)); local msg = "Boucle #".. retry .." depuis "..SecondsToClock(elapsed); fibaro:log(msg); -- check for no more than 30 seconds if elapsed > maxtime then return false; end --open the socket local tcpSocket = Net.FTcpSocket(_deviceIp, _devicePort); fibaro:debug(_deviceIp .. " " .. _devicePort) --set the read timeout tcpSocket:setReadTimeout(250); --send packet local bytes, errorCode = tcpSocket:write("test"); fibaro:debug(errorCode) --check for error if errorCode == 0 then --******* return true; else if retry < _maxRetryProcess then fibaro:log("Retry process, please wait..."); fibaro:sleep(1*750); return _ping(retry + 1); end return false; end end --ping device, secure with pcall to catch errors. local f, result = pcall(_ping); local Lock_Away = fibaro:getGlobal("Lock_Away") if (f) then if result == true then fibaro:log("Appareil a été trouvé."); fibaro:setGlobal(variable_globale_phone,"Present") else fibaro:log("Appareil non trouvé!"); fibaro:setGlobal(variable_globale_phone,"Absent") end else fibaro:log("Error: " .. f); end et ceci dans la boucle principale --[[ %%autostart %%properties %%globals ]]-- local thismodule = fibaro:getSelfId(); local status = fibaro:getGlobal("Phone_Alex") if status == "Absent" then fibaro:call(thismodule, "setProperty", "currentIcon", 1075) fibaro:setGlobal("PRESENCE","non") end if status == "Present" then fibaro:call(thismodule, "setProperty", "currentIcon", 1074) fibaro:setGlobal("PRESENCE","oui") end fibaro:sleep(1000); pour info: dans le VD HC2, l'appui sur le BP check provoquait la recherche de l'ip fixe du phone sur le port 62078 (vu la fiabilité, j'aimerai reproduire exactement la même chose sur HC3, merci)
  11. @Julien92130 bonjour, dans ton message du 16 juin, tu fais état de l’utilisation d’une QA avec slider, pourrais tu nous partager ton expérience ça serait sympa, merci
  12. Je dis: « sur déclenchement barrière multi faisceau, push notification sur 2 phones, afin de les réveiller pour qu’ils accrochent le wifi si ils sont dans la zone wifi, puis un push sur le Bp check du vd presence, qui a pour effet de pinger sur ARP et voir si un des 2 phones apparaît, si oui alors actions divers » pour info, c’est hyper fiable, je l’utilise depuis 7 ans sur hc2. le fait de l’utiliser ou non sur une alarme n’est pas la question ni le problème, je n’ai d’ailleurs pas précisé l’alarme ni même le contexte. la question est: ou est passé le Bp check presence qu’il y avait sur le vd d’origine, qui lui permettait de fiabiliser les actions. j’espère avoir été un peu plus clair. Merci
  13. Moi non plus! mais ce n’est pas ce que je dis.
  14. Help! please
  15. J'arrive à intégrer les températures actuelles OK, (ok pour la lecture aircon/get_sensor_info) mais comment fonctionne la récupération des températures de consigne chaud/froid du QA "Système HVAC automatique" "coolingThermostatSetpoint et heatingThermostatSetpoint" Je ne trouve rien sur le net, concernant l'exploitation de ce QA alors c'est vrai, j'arrive 2 ans après avec mes questions , mais ça fait 3 semaines que je suis sur ce QA , j'avais un super VD DAIKIN sur HC2 et j'essaie de le reproduire en partant de tous les QA que je trouve sur le net pour comprendre (idem pour mon VD arrosage) quel galère mais je dois très probablement mal chercher je souhaite reproduire ceci sur hc3
  16. as tu regardé ceci (puis passer par une variable)
  17. Merci @Krikroff oui en effet, c'est mieux ainsi local screenOn = jsonTable.screenOn -- Get the values -- convertir en chaine caracteres local myString = tostring(screenOn) self:debug("Etat_Ecran: ", screenOn) self:setVariable("Etat_Ecran", myString) self:updateView("Lbl2", "text", "Etat Ecran = "..myString.."")
  18. Bonjour, dans mon QA, sur appui du BP j'ai une erreur sur " main.lua:64: attempt to concatenate a boolean value (local 'screenOn') " la valeur True ou False s'affiche bien dans le panneau variable du QA face à "Etat_Ecran" mais ne veut pas l'afficher dans mon Label 2 à l'aide please !!!! PS: la ligne 64: self:updateView("Lbl2", "text", "Etat Ecran = "..screenOn.."..") --- Lire etat tablette --==== function QuickApp:Etat_TAB() local http = net.HTTPClient() http:request("http://192.168.1.17:2323/?type=json&cmd=home&password=xxxxx",{ options={ headers = {Accept = "application/json"}, method = 'GET'}, success = function(response) --self:debug("response status:", response.status) --self:debug("headers:", response.headers["Content-Type"]) apiResult = response.data print(apiResult) jsonTable = json.decode(apiResult) -- JSON decode from api to lua-table ---------------------------------------------- -- Récupération des données ---------------------------------------------- local currentPageUrl = jsonTable.currentPageUrl -- Get the values self:debug("Page actuelle: ", currentPageUrl) local screenOn = jsonTable.screenOn -- Get the values self:debug("Etat_Ecran: ", screenOn) ---------------------------------------------- -- Création des variables de QuickApp création ou la mise à jour d'une variable ---------------------------------------------- self:setVariable("Page actuelle", currentPageUrl) self:setVariable("Etat_Ecran", screenOn) --== lecture de la valeur d'une variable -- self:getVariable("NOM_DE_LA_VARIABLE") --afficher données dans label self:updateView("Lbl1", "text", "Page actuelle = "..currentPageUrl .. "..") self:updateView("Lbl2", "text", "Etat Ecran = "..screenOn.."..") --self:updateProperty("Lbl2", "Etat Ecran = "..screenOn".."") end, error = function(error) self:debug('error: ' .. json.encode(error)) end }) end --=========
  19. Merci @fastvd pour ces explications je comprends bien mon utilisation est un peu « détournée » je m’explique, lorsque l’alarme est activée TOTAL, alors les 2 phones sont forcés en absent. Si alarme désactivée ils sont forcés en présent. A quoi me sert le Ping? Eh bien, si je rentre et qu’une barrière extérieur me détecte alors la box envoie une notification sur les 2 phones pour les réveiller si l’un des 2 phones accroche le wifi, alors c’est ma femme ou moi qui rentrons et donc désactivation alarme. sur la hc2 je faisais 3 vérifications en 15secondes afin d’être certain. je souhaite reproduire la même chose sur hc3, mais étant débutant sur celle ci, je suis perdu (sur plusieurs sujets)
  20. Bonjour, je cherche désespérément à incrémenter ce module avec les valeurs température intérieure, température ext, et humidité et les afficher dans un label Daikin_AC (1).fqa de plus le "set mode" n'actionne rien edit: je cherche à intégrer ceci dans le main, mais j'avoue de pas y arriver je ne sais pas ou --=============================================== -- AFFICHAGE des temperature in/out et humidité --=============================================== function QuickApp:onInit() self:debug("OnInit") self.http = net.HTTPClient({timeout=3000}) self:loop("") end -- Fonction pour formater le retour de l'API function split(s) local pattern = "/" local maxsplit = -1 local s = s local t = {} local patsz = #pattern while maxsplit ~= 0 do local curpos = 1 local found = string.find(s, pattern) if found ~= nil then table.insert(t, string.sub(s, curpos, found - 1)) curpos = found + patsz s = string.sub(s, curpos) else table.insert(t, string.sub(s, curpos)) break end maxsplit = maxsplit - 1 if maxsplit == 0 then table.insert(t, string.sub(s, curpos - patsz - 1)) end end output = t end -- Fonction d'arrondi function round(number, precision) local fmtStr = string.format('%%0.%sf',precision) number = string.format(fmtStr,number) return number end function QuickApp:loop(text) local interval = 3600 -- PAC SALON local url = "http://" .. "192.168.1.245" .. "/aircon/get_sensor_info" self.http:request(url, { options={ headers = {Accept = "application/json"}, method = 'GET'}, success = function(response) --self:debug("response status:", response.status) --self:debug("headers:", response.headers["Content-Type"]) apiResult = response.data print(apiResult) -- exemple de retour : --ret=OK,htemp=24.0,hhum=40,otemp=8.0,err=0,cmpfreq=0,mompow=1 ---------------------------------------------- -- Récupération des données ---------------------------------------------- htemp = string.sub(apiResult, 14, 17) hhum = string.sub(apiResult, 24, 25) --otemp = string.sub(apiResult, 33, 36) otemp = string.sub(apiResult, 33, -26) ---------------------------------------------- -- Création des variables de QuickApp ---------------------------------------------- self:setVariable("htemp", htemp) self:setVariable("hhum", hhum) self:setVariable("otemp", otemp) --afficher données self:updateView("Lbl1", "text", "Temp. INT = "..htemp .. "°C") self:updateView("Lbl2", "text", "HUMID = "..hhum .. "%") self:updateView("Lbl3", "text", "Temp. EXT = "..otemp .. "°C") end, error = function(error) self:debug('error: ' .. json.encode(error)) end }) -- LOOP fibaro.setTimeout(tonumber(interval)*1000, function() -- Vérifie toutes les n secondes les nouvelles données self:loop(text) end) end --================================================= --===================================================
  21. Bonjour, j'ai cru comprendre que ça ne pingait pas mais peut on adapter pour pinger dans la HC2, si détection par capteur extérieur (trigg-1 dans GEA) donc appui sur BP "Check if iphone is Present" du VD IP Smartphone Presence Check V1.2-- Copyright © 2014 Sébastien Jauquet. , alors notif sur phone, ça le réveillait et donc accroche du wifi (si présent) et ping le code du VD avec un BP sur la HC2 était celui ci, est il possible de l'adapter sur la HC3? -- IP Smartphone Presence Check V1.2 -- Copyright © 2014 Sébastien Jauquet. -- http://www.domotique-fibaro.fr/index.php/topic/2613-detection-de-pr%C3%A9sence/ --Using code from: -- Ping v 1.0.1 [05-2013] -- Copyright © 2013 Jean-christophe Vermandé -- http://www.domotique-fibaro.fr/index.php/topic/109-ping-dun-%C3%A9quipement-r%C3%A9seau/page-2 fibaro:call(759, "sendDefinedPushNotification", "99"); fibaro:sleep(6*1000); fibaro:log("Starting process"); local variable_globale_phone = "Phone_Alex"; local thismodule=fibaro:getSelfId() local _deviceIp = fibaro:get(thismodule, 'IPAddress') local _devicePort = fibaro:get(thismodule, 'TCPPort') local _maxRetryProcess = 5; local time = tonumber(os.time()); local maxtime = 14; function SecondsToClock(sSeconds) 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 -- recursive function to ping device local function _ping(retry) retry = retry or 0; -- notify state local elapsed = os.difftime(os.time(), tonumber(time)); local msg = "Boucle #".. retry .." depuis "..SecondsToClock(elapsed); fibaro:log(msg); -- check for no more than 30 seconds if elapsed > maxtime then return false; end --open the socket local tcpSocket = Net.FTcpSocket(_deviceIp, _devicePort); fibaro:debug(_deviceIp .. " " .. _devicePort) --set the read timeout tcpSocket:setReadTimeout(250); --send packet local bytes, errorCode = tcpSocket:write("test"); fibaro:debug(errorCode) --check for error if errorCode == 0 then --******* return true; else if retry < _maxRetryProcess then fibaro:log("Retry process, please wait..."); fibaro:sleep(1*750); return _ping(retry + 1); end return false; end end --ping device, secure with pcall to catch errors. local f, result = pcall(_ping); local Lock_Away = fibaro:getGlobal("Lock_Away") if (f) then -- if (result == true) and (Lock_Away == "Unlocked") then if result == true then fibaro:log("Appareil a été trouvé."); fibaro:setGlobal(variable_globale_phone,"Present") -- évolution future possible: stocker la date et l'heure de la dernière présence détectée -- fibaro:setGlobal("Present_Phones",os.time()) else fibaro:log("Appareil non trouvé!"); fibaro:setGlobal(variable_globale_phone,"Absent") end else fibaro:log("Error: " .. f); end
  22. YES c'est top, c'est GOOD pour l'IPX, nickel chapeau Merci
  23. dans la hc2 je faisais ceci fibaro:call(fibaro:getSelfId(),"setProperty","ui.Label1.value",inva29/100) fibaro:call(fibaro:getSelfId(),"setProperty","ui.Label2.value",inva30-2500) la V29 n'est pas branchée, donc normal, 0 mail il faudra que je fasse la /100 la V30 affiche, sans la conversion, 2798 et devrait m'afficher 298 (2798-2500) EDIT: {device = {name = "PH piscine", type = "MultilevelSensor"}, value = {command = "Get", argument = "VA" , pin = "VA29", formula = function(value) return tools:round(value/100, 1) end}}, {device = {name = "ORP piscine", type = "MultilevelSensor"}, value = {command = "Get", argument = "VA" , pin = "VA30", formula = function(value) return tools:round(value-2500, 1) end}}, c'est OK COOL
×
×
  • Créer...