Aller au contenu

mprinfo

Membres confirmés
  • Compteur de contenus

    14 329
  • Inscription

  • Dernière visite

  • Jours gagnés

    240

Tout ce qui a été posté par mprinfo

  1. Il peut depuis le temps qu'il ce repose dans un tiroir lol Envoyé de mon SM-G900F en utilisant Tapatalk
  2. regarde dans le top ici des icônes did àposter Envoyé de mon SM-G900F en utilisant Tapatalk
  3. mprinfo

    Meteoalerte

    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
  4. mprinfo

    Meteoalerte

    MDR je me suis déjàfais avoir aussi Envoyé de mon SM-G900F en utilisant Tapatalk
  5. mprinfo

    Hc2 Usb Recovery Tweaks

    Petit pour @jojo
  6. mprinfo

    Meteoalerte

    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
  7. mprinfo

    Moteurs Tryba

    n'est pas tryba qui veut
  8. 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
  9. Donc prévoit des frites je viens manger Envoyé de mon SM-G900F en utilisant Tapatalk
  10. Et la météo lol Envoyé de mon SM-G900F en utilisant Tapatalk
  11. 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
  12. jojo tu es toujours en retard que fais tu donc de tes journée lol Envoyé de mon SM-G900F en utilisant Tapatalk
  13. Il est trop fort @did enfin cela dépend pourquoi lol Envoyé de mon SM-G900F en utilisant Tapatalk
  14. 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
  15. En natif pour garde l'adresse mac il y a une solution si besoin demande moi Envoyé de mon SM-G900F en utilisant Tapatalk
  16. 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
  17. mprinfo

    Meteoalerte

    Euh ben je sais pas trop je regarde pas vraiment Envoyé de mon SM-G900F en utilisant Tapatalk
  18. Oui j'aurais dis pareil DSM en natif pour voir si cela fonctionne Envoyé de mon SM-G900F en utilisant Tapatalk
  19. C'est le loup qui ce mord la qu'eux ton histoire Envoyé de mon SM-G900F en utilisant Tapatalk
  20. Oui juste un câble croisé suffit car notre hc2 àun accès en local Envoyé de mon SM-G900F en utilisant Tapatalk
×
×
  • Créer...