-
Compteur de contenus
14 371 -
Inscription
-
Dernière visite
-
Jours gagnés
245
Tout ce qui a été posté par mprinfo
-
-
Ben tu parles anglais donc au boulot pour la traduction lol Moi je parle que lorrain Envoyé de mon SM-G900F en utilisant Tapatalk
-
Compatible V3-V4-Lite Aeon Labs - Dsd37 - Répéteur / Amplificateur De Signal Z-Wave
mprinfo a répondu à un(e) sujet de p78ch201 dans Aeon Labs / Aeotec
Il peut depuis le temps qu'il ce repose dans un tiroir lol Envoyé de mon SM-G900F en utilisant Tapatalk -
regarde dans le top ici des icônes did àposter Envoyé de mon SM-G900F en utilisant Tapatalk
-
Chez moi cela fonctionne comme je t'ai dis j'ai le code de steven -- -------------------------------------------------------------------------------------------------------------- -- MeteoAlerte est est script qui va vérifier les alertes méteo du site vigilance.meteofrance.com -- Le site retournant des informations XML, le script va donc les parser. -- Author = "Steven Piccand" -- Version = "V1.40" -- V1.10 - Isolation des éventuelles erreurs -- V1.20 - Envoi possible sur plusieurs smartphones -- V1.30 - Correction problème Main Loop -- V1.40 - Correction status plus ajout personnalisation icone -- V2.00 - Ajout du risque (nouveauté de Météofrance -- -------------------------------------------------------------------------------------------------------------- if (not MeteoAlerte) then MeteoAlerte = {} -- !!! VOS PARAMETRES !!! MeteoAlerte.dep = "54" -- votre département local IdTel = fibaro:getGlobal("TelPascal") fibaro:debug("ID du tel : "..IdTel) MeteoAlerte.smartphone = {IdTel} -- {70,71} vos portables ou envoyé la notification push en cas d'alerte MeteoAlerte.niveauAlerte = 3 -- le niveau minimum d'alerte pour être notifié MeteoAlerte.globalvariable = "" -- Nom de la variable globale a renseigné -- -------------------------------------------------------------------------------------------------------------- -- Obtient le XML et le retourne sous forme de table LUA -- -------------------------------------------------------------------------------------------------------------- MeteoAlerte.getXml = function() local MeteoAlerteURL = Net.FHttp("vigilance.meteofrance.com"); response, status, errorCode = MeteoAlerteURL:GET("/data/NXFR34_LFPW_.xml"); fibaro:debug("Status : "..status.." - ErrorCode : "..errorCode) return MeteoAlerte.iif(response ~= nil, MeteoAlerte.newParser().ParseXmlText(response), "") end -- -------------------------------------------------------------------------------------------------------------- -- Va chercher les valeurs du départements -- Modifie les valeurs des labels -- Envoi un push si nécessaire -- Met a jour une variable globale -- -------------------------------------------------------------------------------------------------------------- MeteoAlerte.getData = function() local messages = {"<inconnu>", "Aucune", "Attention", "Danger", "!! EXCEPTIONNEL !!"} local risques = {"Pas de vigilance particulière", "Vent violent", "Pluie-innondation", "Orages", "Innondation", "Neige-Verglas", "Canicule", "Grand-froid", "Avalanche", "Vagues-submersion"} local icones = {-1, -1, -1, -1, -1} local result = 0 local risque = 0 local crue = 0 local xmlTable = MeteoAlerte.getXml() if (xmlTable) then local evs = xmlTable.cartevigilance for i in pairs(evs:children()) do if (evs:children()[i]:name() == "datavigilance") then if (evs:children()[i]["@dep"] == MeteoAlerte.dep) then result = tonumber(evs:children()[i]["@couleur"]) fibaro:debug("Vigilance trouvée : " .. result) if (#evs:children()[i]:children() > 0) then for j = 1, #evs:children()[i]:children() do if (evs:children()[i]:children()[j]:name() == "crue") then crue = tonumber(evs:children()[i]:children()[j]["@valeur"]) fibaro:debug("Crue trouvée : ".. crue) elseif (evs:children()[i]:children()[j]:name() == "risque") then risque = tonumber(evs:children()[i]:children()[j]["@valeur"]) fibaro:debug("Risque trouvée : ".. risque) end end end end end end end fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblVigilance.value", messages[result+1]) fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblCrue.value", messages[crue+1]) fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblRisque.value", risques[risque+1]) fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblUrl.value", "http://vigilance.meteofrance.com/") local icone_id = icones[math.max(result+1, crue+1)] if (icone_id > -1) then fibaro:debug("Icone " .. icone_id) fibaro:call(fibaro:getSelfId(), "setProperty", "currentIcon", icone_id); end fibaro:log("Dernière mise àjour : " .. os.date("%c")) fibaro:debug("Vérification envoi par push") if (result >= MeteoAlerte.niveauAlerte or crue >= MeteoAlerte.niveauAlerte) then fibaro:debug("Envoi nécessaire") if (type(MeteoAlerte.smartphone) == "table") then for i = 1, #MeteoAlerte.smartphone do fibaro:call(MeteoAlerte.smartphone[i], "sendPush", "MeteoAlerte [".. MeteoAlerte.dep .." = " .. messages[result+1] .. "] | [crue = " .. messages[crue+1] .. "] | [risque = " .. risques[risque+1].."]") end end end if (result and MeteoAlerte.globalvariable and MeteoAlerte.globalvariable ~= "") then fibaro:setGlobal(MeteoAlerte.globalvariable, tostring(result)) end return true end -- ------------------------------------------------------------------------------------------------------------- -- Teste la condition et retourne la valeur true ou false -- ------------------------------------------------------------------------------------------------------------- MeteoAlerte.iif = function(condition, iftrue, iffalse) if (condition) then return iftrue end return iffalse end -- ------------------------------------------------------------------------------------------------------------- -- Ceci est une version modifiée de Corona-XML-Module par Jonathan Beebe qui a son tour -- est basée sur Alexander Makeev's Lua-only XML parser . -- see https://github.com/Cluain/Lua-Simple-XML-Parser -- ------------------------------------------------------------------------------------------------------------- MeteoAlerte.newParser = function() parseXml = {} parseXml.FromXmlString = function(value) value = string.gsub(value, "([%x]+)%;", function(h) return string.char(tonumber(h, 16)) end); value = string.gsub(value, "([0-9]+)%;", function(h) return string.char(tonumber(h, 10)) end); value = string.gsub(value, "'", "'"); value = string.gsub(value, ">", ">"); value = string.gsub(value, "<", "<"); value = string.gsub(value, "&", "&"); return value; end parseXml.ParseArgs = function(node, s) string.gsub(s, "(%w+)=([\"'])(.-)%2", function(w, _, a) node:addProperty(w, parseXml.FromXmlString(a)) end) end parseXml.ParseXmlText = function(xmlText) local stack = {} local top = parseXml.newNode() table.insert(stack, top) local ni, c, label, xarg, empty local i, j = 1, 1 while true do ni, j, c, label, xarg, empty = string.find(xmlText, "<(%/?)([%w_:]+)(.-)(%/?)>", i) if not ni then break end local text = string.sub(xmlText, i, ni - 1); if not string.find(text, "^%s*$") then local lVal = (top:value() or "") .. parseXml.FromXmlString(text) stack[#stack]:setValue(lVal) end if empty == "/" then -- empty element tag local lNode = parseXml.newNode(label) parseXml.ParseArgs(lNode, xarg) top:addChild(lNode) elseif c == "" then -- start tag local lNode = parseXml.newNode(label) parseXml.ParseArgs(lNode, xarg) table.insert(stack, lNode) top = lNode else -- end tag local toclose = table.remove(stack) -- remove top top = stack[#stack] if #stack < 1 then error("XmlParser: nothing to close with " .. label) end if toclose:name() ~= label then error("XmlParser: trying to close " .. toclose.name .. " with " .. label) end top:addChild(toclose) end i = j + 1 end local text = string.sub(xmlText, i); if #stack > 1 then error("XmlParser: unclosed " .. stack[#stack]:name()) end return top end parseXml.newNode = function(name) local node = {} node.___value = nil node.___name = name node.___children = {} node.___props = {} function node:value() return self.___value end function node:setValue(val) self.___value = val end function node:name() return self.___name end function node:setName(name) self.___name = name end function node:children() return self.___children end function node:numChildren() return #self.___children end function node:addChild(child) if self[child:name()] ~= nil then if type(self[child:name()].name) == "function" then local tempTable = {} table.insert(tempTable, self[child:name()]) self[child:name()] = tempTable end table.insert(self[child:name()], child) else self[child:name()] = child end table.insert(self.___children, child) end function node:properties() return self.___props end function node:numProperties() return #self.___props end function node:addProperty(name, value) local lName = "@" .. name if self[lName] ~= nil then if type(self[lName]) == "string" then local tempTable = {} table.insert(tempTable, self[lName]) self[lName] = tempTable end table.insert(self[lName], value) else self[lName] = value end table.insert(self.___props, { name = name, value = self[name] }) end return node end return parseXml; end end -- ------------------------------------------------------------------------------------------------------------- -- Démarrage du script -- ------------------------------------------------------------------------------------------------------------- fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblVigilance.value", "...") fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblCrue.value", "...") fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblRisque.value", "...") if (not pcall(function() MeteoAlerte.getData() end)) then local max_retry = 5 local i = 0 while (not stop) do fibaro:debug("Problème d'accès au donn��es ... tentative dans 10mn") fibaro:sleep(10*60*1000) if (not pcall(function() MeteoAlerte.getData() end)) then i = i + 1 if (i >= max_retry) then stop = true end else stop = true end end end
-
MDR je me suis déjàfais avoir aussi Envoyé de mon SM-G900F en utilisant Tapatalk
-
@frederic merci
-
-
-
Petit pour @jojo
-
Moi j'ai celui de steven il fonctionne j'ai cela dans le main loop Regarde bien si tu as bien le bon numéro de bouton car en changeant de place les étiquettes ou boutons on oublie de mettre a jour le pressButton local nbHeure = 12 local i = 0 while true do if (i >= (nbHeure*2) or i == 0) then i = 0 fibaro:call(fibaro:getSelfId(), "pressButton", "5") end fibaro:sleep(30*60*1000) i = i + 1 end
-
n'est pas tryba qui veut
-
Compatible V3-V4-Lite Secure ( Hortsmann ) - Scs317 - Thermostat Mural Z-Wave
mprinfo a répondu à un(e) sujet de Moicphil dans Secure ( Hortsmann )
Bon je crois que mon scs317 est hs plus moyen de l inclure dans la hc2 cela plante vers la fin. Impossible de l associé avec l actionneur je suis un peu déçu par ce module qui àjamais été bien géré par la hc2 Envoyé de mon SM-G900F en utilisant Tapatalk -
Donc prévoit des frites je viens manger Envoyé de mon SM-G900F en utilisant Tapatalk
-
Et la météo lol Envoyé de mon SM-G900F en utilisant Tapatalk
-
Merci jojo super boulot tu aurais du l'appeler désiré. je l'ai déjàinstallé il y a quelques jours lol Envoyé de mon SM-G900F en utilisant Tapatalk
-
jojo tu es toujours en retard que fais tu donc de tes journée lol Envoyé de mon SM-G900F en utilisant Tapatalk
-
Il est trop fort @did enfin cela dépend pourquoi lol Envoyé de mon SM-G900F en utilisant Tapatalk
-
A une période l adresse mac changée àchaque reboot je sais pas si c'est encore d'actualité les clef usb c'est pas très fiable surtout les premiersemestre prix Envoyé de mon SM-G900F en utilisant Tapatalk
-
En natif pour garde l'adresse mac il y a une solution si besoin demande moi Envoyé de mon SM-G900F en utilisant Tapatalk
-
Ah ok il faut les 2 trigger càla scène doit ce lancer toutes les 30 mn Envoyé de mon SM-G900F en utilisant Tapatalk
-
Euh ben je sais pas trop je regarde pas vraiment Envoyé de mon SM-G900F en utilisant Tapatalk
-
Oui j'aurais dis pareil DSM en natif pour voir si cela fonctionne Envoyé de mon SM-G900F en utilisant Tapatalk