Aller au contenu

pepite

Membres confirmés
  • Compteur de contenus

    9 579
  • Inscription

  • Dernière visite

  • Jours gagnés

    59

Tout ce qui a été posté par pepite

  1. pepite

    Support Gea

    Donc depuis GEA tu peux agir en fonction de la valeur de la variable en déclanechement instantané. C'est pas simple tout de même ce que tu fais : - scene button --> scène modification de variables --> GEA pour lancer les actions. alors qu'1 seule scène pour le Button suffirait non ?
  2. Ah pardon, je croyais que tu utilisais la scene d'envois de plusieurs messages/plusieurs scènes. Si tu veux un else, tu peux faire comme ceci, mais ce n'est pas utile. je trouve plus parlant de l'ecrire comme ceci mais c'est personnel ;-) local portailFerme = tonumber(fibaro:getValue(61, "value")) == 1 if portailFerme then fibaro:call(169, "pressButton", 1) else fibaro:debug("Portail déjà ouvert") end
  3. pepite

    Jeedom Smart

    RFX Com, ZWAVE et BLuetooth ?
  4. pepite

    Support Gea

    Bonjour @971jmd, CentralSceneEvent n'est pas implémenté par défaut dans GEA (contrairement à SceneActivation). Tu seras obligé de jouer avec les function et cela va alourdir le code GEA. Plus simple et plus propre à maintenir je trouve d'avoir une scène à part, un peu comme pour la télécommande NODON ;-) puisque cela fait appel à plusieurs fonctions en fonction du nombre de clik Voir avec les avis des experts, ceci n'est que MON avis perso ;-)
  5. @Did, t'as raison c'est bien aussi comme ceci avec la photo de la cam. Quand tu auras recu la new cam ;-) ce sera tres simple de cliquer sur un bouton du VD pour afficher l'image de la cam sur imperihome ;-) Je dirais non pour ta question, @mprinfo me corrigera au cas où mais comme ceci cela doit fonctionner J'ai quand même l'impression que tu as mis au mauvais endroit du code l'id de ton tel non ? tu l'as mis dans la declaration de la fonction ou dans une ligne semblable à ce qu'il y a après "Début du programme" ? dans une ligne sendPush ? function sendPush(idPortable, titre, message, IdScene) if (type(IdScene) == "table") then -- Si nous avons plusieurs scenes a lancer dans un tableau {} for i = 1, #IdScene do local scenes = api.get("/scenes/"..IdScene[i]) if scenes == nil then fibaro:debug("La scene iD : "..IdScene[i].." N'existe pas") else for i = 1, #idPortable do local NomScene = scenes.name fibaro:debug("Nom de la scene a lancer "..NomScene) api.post('/mobile/push', { ["mobileDevices"]={idPortable[i]}, -- ID du telephone ["message"]=tostring(message), -- La question que l'on veut posser ["title"]=tostring(titre.." - "..NomScene), -- titre de la question ["category"]='RUN_CANCEL', -- 'YES_NO' ou 'RUN_CANCEL' ["data"]={["sceneId"]=IdScene[i]} -- ID de la scéne que l'on veut lancer } ); end end end elseif (type(IdScene) == "number") then -- Si nous avons une seule scéne à executer local scenes = api.get("/scenes/"..IdScene) if scenes == nil then fibaro:debug("La scene iD : "..IdScene.." N'existe pas") else for i = 1, #idPortable do local NomScene = scenes.name fibaro:debug("Nom de la scene a lancer "..NomScene) api.post('/mobile/push', { ["mobileDevices"]={idPortable[i]}, -- ID du telephone ["message"]=tostring(message), -- La question que l'on veut posser ["title"]=tostring(titre), -- titre de la question ["category"]='RUN_CANCEL', -- 'YES_NO' ou 'RUN_CANCEL' ["data"]={["sceneId"]=IdScene} -- ID de la scéne que l'on veut lancer } ); end end end end
  6. alors là oui, je suis d'accord avec @Cardane, c'est ta scène qu'il faut modifier. Partage là si tu veux qu'on te donne un avis.
  7. Bon ce qui voudrait dire, que même si on prend toutes nos précautions, on est jamais à l'abri si cela vient d'un des composants ou autre. ;-) Ca me fait penser, merci @Lazer, tous les modules du grenier dans une boite de derivation ;-) + 1 pour le fil pilote gere avec un thermostat sans passer par celui du seche serviette
  8. La laisser ouverte oui, mais reste à savoir si l'appli en arrière plan permet de voir le Popup.
  9. Bonjour, Arrêter non (sauf erreur de ma part..) mais pour lancer un scénario depuis l'appli, tu vas dans "Scenarios" à côté de "Températures", puis tu cliques sur le symbole "play" de la scène et elle part ;-)
  10. Ah ben justement @Cardane, je me demandais si on pouvait spécifier un ID particulier de device ? En fait par défaut, il prend tous les IDs de devices déclarés et "cochés" dans acces control ;-) @Did, le code sur domotique info est pour un Popup, le code de @mprinfo est pour les Interactive Push..très proche tu me diras ;-) dans leur fonctionnement les 2 te permettent de lancer une scene. Pour les popup j'utilise cela si tu veux, déclenché sur un label local message = fibaro:getValue(idVDMaison, "ui.Popup.value") --local message = " test Popup ;-)" HomeCenter.PopupService.publish({ title = "GEA", subtitle = os.date("%H:%M:%S - %d.%m.%Y"), contentTitle = "Information", contentBody = message, img = "../img/topDashboard/info.png", type = "Warning", buttons = {{ caption = "Quitter", sceneId = 0 }} }) fibaro:debug("Valeur Label Popup : " ..message.. " - " ..os.date("%H:%M:%S - %d.%m.%Y"))
  11. Re petit UP @Nico, je dirais NON je l'utilise que pour une chose, le passage de Présent à absent et si mon appli ets fermée, ce qui est le cas 99 % du temps puisque les puhs passent appli fermée, je dois ouvrir l'appli pour voir le popup. Mais en arriere plan, ca le fait je pense, je testerai J'y trouve quand même un interet ca reste au niveau de l'appli. Sinon, j'enchaine, je ne me suis jamais posée la question mais est-il possible de renseigner un ID pour n'envoyer le popup que sur un tel ? Merci
  12. ah..t'as commandé une Hiikvision ? Je pense que oui c'est faisable. tu utilises quel code de domotique info ?
  13. pepite

    Mon Test Jeedom

    Bonne info ca @PITP2 Merci j'espere que tout roule ;-)
  14. @Did, utilises tu "IMPERIHOME" ? L'idée : - tu recois un Interactive Push sur ton tel avec la question - Si tu dis oui, cela lance une scene qui t'ouvre l'image de la CAM sur la tablette la scène ou VD je ne sais plus pour interfacer Pushullet avec la HC2 ne fonctionne plus pour le moment, il y a un bug, ..que je n'ai pas trouve, et je n'ai pas embêté le @master avec ca.
  15. pepite

    Plus de push :-)

    Bonjour messieurs, Très simple, n'importe quel push ne fonctionne pas. Pour mes tests j'ai juste fait un simple sendPush fibaro:call(id, "sendPush", "test") Tu n'as pas à t'excuser, tu n'y es pour rien du tout, c'est ma box qui ne veut pas de ton code modifié ;-) et je serais incapable d'écrire ce que vous partagez, je ne vais pas me plaindre quand même. Faudrait que je tente avec la version non modifiée tiens. Et le plus dingue c'est le comportement différent sur les 2 tels, WAF et le mien : - WAF : plus aucune connexion possible à l'appli - le mien : connexion OK, mais plus de push alors que les Interactive Push : OK, et les Popup OK aussi ;-) Bizarre bizarre vous avez dit bizarre ;-)
  16. T'aurais pas meilleur temps de tenter le support ? Ca t evite les manips:-)
  17. pepite

    Plus de push :-)

    oui, voilà il est aussi sur le post de @MAM78 -- -------------------------------------------------------------------------------------------------------------- -- Check that one and only one instance is in memory -- -------------------------------------------------------------------------------------------------------------- if ((not Vacances) or (Vacances.errors >= 5)) then Vacances = { departement = "77", varglobal = "VacScolaire", varglobalJ = "VacScolaireJ", varglobalJ1 = "VacScolaireJ1", errors = 0 } -- -------------------------------------------------------------------------------------------------------------- -- URL -- -------------------------------------------------------------------------------------------------------------- Vacances.url = "telechargement.index-education.com" -- -------------------------------------------------------------------------------------------------------------- -- Optenir le fichier XML -- -------------------------------------------------------------------------------------------------------------- Vacances.getXml = function() local URL = Net.FHttp(Vacances.url) response, status, errorCode = URL:GET("/vacances.xml") return Vacances.iif(response ~= nil, Vacances.newParser().ParseXmlText(response), "") end -- -------------------------------------------------------------------------------------------------------------- -- Rerecher la zone par rapport au numéro de département -- -------------------------------------------------------------------------------------------------------------- Vacances.getZone = function(xmlTable) if (xmlTable) then if (not xmlTable.root) then Vacances.errors = Vacances.errors+1 return "" end local academies = xmlTable.root.academies for i in pairs(academies:children()) do local academie = academies.academie[i] local zone = academie["@zone"] local nom = academie["@libelle"] for j in pairs(academie:children()) do local dep = academie.departement[j] if (type(dep) ~= "nil") then fibaro:call(fibaro:getSelfId(), "setProperty", "ui.LabelZone.value", "["..zone.."] " .. nom) if (academie.departement[j]["@numero"] == Vacances.departement) then return zone, nom end else if (academie.departement["@numero"] == Vacances.departement) then return zone, nom end end end end end return "" end -- -------------------------------------------------------------------------------------------------------------- -- Rechercher le libellé d'un congé -- -------------------------------------------------------------------------------------------------------------- Vacances.getLibelle = function(xmlTable, num) if (xmlTable) then if (not xmlTable.root) then Vacances.errors = Vacances.errors+1 return "" end local libelles = xmlTable.root.libelles for i in pairs(libelles:children()) do if (libelles.libelle[i]["@id"] == num) then local l = libelles.libelle[i]:value() for k = 1, string.len(l)-1 do local c = string.sub(l, k, k) local d = string.byte(c) fibaro:debug(c .. " " .. d) end return libelles.libelle[i]:value():gsub(string.char(235), "ë"):gsub(string.char(233), "é") end end end return "" end -- -------------------------------------------------------------------------------------------------------------- -- Obtenir les dates futures des vacances par rapport à la zone -- -------------------------------------------------------------------------------------------------------------- Vacances.getDatesFuture = function(xmlTable, zone, date) if (xmlTable) then if (not xmlTable.root) then Vacances.errors = Vacances.errors+1 return "" end local calendrier = xmlTable.root.calendrier local index = 1 local envacance = false for i in pairs(calendrier:children()) do local zonecal = calendrier.zone[i] if (zonecal["@libelle"] == zone) then --return libelles.libelle[i]:value() for j in pairs(zonecal:children()) do local datedeb = Vacances.getDateFormat(zonecal.vacances[j]["@debut"]) local datefin = Vacances.getDateFormat(zonecal.vacances[j]["@fin"]) fibaro:debug("Index"..index.." Deb:"..os.date("%d.%m.%Y", datedeb).." Fin:"..os.date("%d.%m.%Y", datefin).." Date:"..os.date("%d.%m.%Y", os.time())) if (os.time() > datedeb and os.time() < datefin) then local msg = os.date("%d.%m.%Y", datedeb) .. " - " .. os.date("%d.%m.%Y", datefin) .. " | " ..Vacances.getLibelle(xmlTable, zonecal.vacances[j]["@libelle"]) fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Label"..index..".value", msg) fibaro:debug("En vacances") fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Label0.value", "En vacances") fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Label10.value", "OUI") envacance = true --fibaro:setGlobal(Vacances.varglobal, "0") fibaro:call(fibaro:getSelfId(), "setProperty", "ui."..Vacances.varglobal..".value", "0") --fibaro:setGlobal(Vacances.varglobalJ, "OUI") fibaro:call(fibaro:getSelfId(), "setProperty", "ui."..Vacances.varglobalJ..".value", "OUI") index = index + 1 end if (os.time()+24*60*60 > datedeb and os.time()+24*60*60 < datefin) then fibaro:debug("En vacances J+1") fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Label11.value", "OUI") --fibaro:setGlobal(Vacances.varglobalJ1, "OUI") fibaro:call(fibaro:getSelfId(), "setProperty", "ui."..Vacances.varglobalJ1..".value", "OUI") end if (datedeb > os.time()) then local msg = os.date("%d.%m.%Y", datedeb) .. " - " .. os.date("%d.%m.%Y", datefin) .. " | " ..Vacances.getLibelle(xmlTable, zonecal.vacances[j]["@libelle"]) fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Label"..index..".value", msg) if (not envacance and index == 1) then fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Label0.value", "Reste " .. Vacances.delai(datedeb) .. " jours" ) fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Label10.value", "NON") --fibaro:setGlobal(Vacances.varglobal, Vacances.delai(datedeb).."") fibaro:call(fibaro:getSelfId(), "setProperty", "ui."..Vacances.varglobal..".value", Vacances.delai(datedeb).."") --fibaro:setGlobal(Vacances.varglobalJ, "NON") fibaro:call(fibaro:getSelfId(), "setProperty", "ui."..Vacances.varglobalJ..".value", "NON") fibaro:debug("Pas en vacances aujourd'hui") if (datedeb > os.time()+24*60*60) then fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Label11.value", "NON") --fibaro:setGlobal(Vacances.varglobalJ1, "NON") fibaro:call(fibaro:getSelfId(), "setProperty", "ui."..Vacances.varglobalJ1..".value", "NON") fibaro:debug("Pas en vacances demain") end end index = index + 1 end end end end end end -- -------------------------------------------------------------------------------------------------------------- -- Transforme une date en string en date exploitable -- -------------------------------------------------------------------------------------------------------------- Vacances.getDateFormat = function(sdate) year,month,day = sdate:match("(%d+).(%d+).(%d+)") return os.time({day=day,month=month,year=year,hour=0,min=0,sec=0}) end -- -------------------------------------------------------------------------------------------------------------- -- Calcule le nombre de jours entre 2 dates -- -------------------------------------------------------------------------------------------------------------- Vacances.delai = function(dated) diff = os.difftime(dated, os.time()) return math.floor(diff / (60*60*24)) end -- ------------------------------------------------------------------------------------------------------------- -- Test the condition and return true or false param depending of the result -- param : condition (condition to test) -- iftrue (result to return of condition if true) -- iftfalse (result to return of condition if false) -- ------------------------------------------------------------------------------------------------------------- Vacances.iif = function(condition, iftrue, iffalse) if (condition) then return iftrue end return iffalse end -- ------------------------------------------------------------------------------------------------------------- -- This is a modified version of Corona-XML-Module by Jonathan Beebe which in turn -- is based on Alexander Makeev's Lua-only XML parser . -- see https://github.com/Cluain/Lua-Simple-XML-Parser -- ------------------------------------------------------------------------------------------------------------- Vacances.newParser = function() parseXml = {} parseXml.FromXmlString = function(value) value = string.gsub(value, "&#x([%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, "<", "<"); 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 -- ------------------------------------------------------------------------------------------------------------- -- RUN -- ------------------------------------------------------------------------------------------------------------- fibaro:debug("Lecture du fichier distant ...") local xmlTable = Vacances.getXml() if (Vacances.errors > 0) then time = "Erreur : " .. Vacances.errors fibaro:debug(time) else fibaro:debug("Recherche de la zone pour le département : " .. Vacances.departement .. " ...") local zone, nom = Vacances.getZone(xmlTable) fibaro:debug(Vacances.departement .. " ==> [" .. zone .. "] " .. nom) Vacances.getDatesFuture(xmlTable, zone, os.time()) end
  18. pepite

    Support Gea

    Comme ceci GEA.add(id["PORTE"], 30, "", {{"Inverse"}, {"function", function() fibaro:call(id["CLIM"], "setMode", "?") end }}) id["PORTE"] : signifie porte "ouverte" {"Inverse"} : inverse la valeur de la 1ère condition : "porte ouverte --> porte fermée" Et mets ceci dasn tes favoris ;-) le WIKI (la bible GEA ;-) )) https://gea.piccand.me/doku.php/start
  19. pepite

    Plus de push :-)

    Bon ben coupable trouvé - Désinstallation des 2 VDs installés Jeudi soir :push OK - Ajout VD Vacances scolaire (origine @Steven) modifié de @MAM78 : push KO - Suppression VD Vacances Scolaire : push OK - Ajout Détection Présence (origine @sebcbien) modifé de @mprinfo : pusk OK Conclusion : coupable est le VD Vacances Scolaire ;-) Mais j'ai relu le code avec mes maigres connaissances mais je ne vois pas ce qui cloche. J'ai donc mis le nez dans tous les Vds et les Scenes et merci @mprinfo, j'ai mis les IDs dans ....un LABEL local TelPepite = fibaro:getValue(72, "ui.TelPepite.value") local TelWaf = fibaro:getValue(72, "ui.TelWaf.value")
  20. pepite

    Support Gea

    @flacon030, Bon tu commences fort avec l'utilisation de function : cela permet d'appeler du code fibaro et lua non implementé par défaut dans GEA Conseil : prends l'habitude de déclarer tes variables "id" en majuscules (je l'ai fait sur la ligne que je te propose), rien d'obligatoire, c'est une "fausse norme" que l'on a pris, donné par les experts essaie ca GEA.add(id["SENSOR_GAUCHE"], 30, "", {{"function", function() fibaro:call(id["CONTROL_CLIM"], "setMode", "0") end }})
  21. pepite

    localisation utilisateur

    je ne parlais pas e moi, mamis de vous les experts, je ne me permettrais pas..sinon.. Tu en veux Mardi ? ;-)
  22. pepite

    Plus de push :-)

    Rien du tout ;-) mais je n'ai pas rejoue avec auj, dans les combles en train de poser des plaques de polyu ;-) Vais retenter, c'est quand même bizarre comme comportement ;-) Vais deja essayer de reconnecter le WAF avant de supprimer mon tel et ne plus pouvoir me connecter ;-) Vais peut-etre renlever les VDs testés jeudi mais je ne vois vraiment pas le rapport
  23. pepite

    localisation utilisateur

    oui @mprinfo a raison, faut bien commencer. Et sache que je pose enormement de questions, et sur ce forum de nombreuses reponses, juste super
  24. pepite

    localisation utilisateur

    Caracteres de comparaison : 1 : ~= different 2 : == egal
  25. pepite

    localisation utilisateur

    Un fibaro ID unique et 1 user par personne :-)
×
×
  • Créer...