-
Compteur de contenus
1 078 -
Inscription
-
Dernière visite
-
Jours gagnés
14
Tout ce qui a été posté par JossAlf
-
Ha ben non ça marche pas --[[ %% properties 45 value %% globals --]] local etat_portail = fibaro:getValue(45, "value"); fibaro:debug(etat_portail .. " : Test initial de l'état du portail") if fibaro:countScenes() > 1 then -- si la scène est lancée plus d'une fois alors fibaro:debug("Arrêt de la scène car plus de 2 scènes en même temps.") fibaro:abort() -- arrêt de cette lecture du script end -- fin de la condition if (tonumber(etat_portail) == 0) then fibaro:debug("Arrêt de la scène car portail refermé.") fibaro:killScenes(350) end J'ai ça en debug : [DEBUG] 12:24:01: 0 : Test initial de l'état du portail [DEBUG] 12:24:01: Arrêt de la scène car portail refermé. [ERROR] 12:24:01: line 18: attempt to call method 'killScenes' (a nil value) grrrrrr
-
J'ai trouvé figaro:killScenes() mais ça marche pas en V4.056 ? MAJ : Ha ben si ça fonctionne j'avais oublié la majuscule Là du coup ça tuera toutes le instances ! Je teste ...
-
Très juste Alors du coup, comment faire pour tuer la scène qui est en sleep ? (si je puis dire ) OU comment ne pas utiliser un sleep mais attendre 10 minutes pour prévenir que le portail est encore ouvert (et ça pendant tant que le portail reste ouvert) ?
-
Et en plus tu es en V4.042 ?
-
Oui, mais figaro:abort() ne tue pas toutes les instances en cours ?
-
Bonjour, J'ai un problème avec fobaro:abort(). Je suis en 4.056. Je pensais que l'utilisation de cette fonction permettait d'arrêter la scène en cours (comme faire un kill UNIX) ?! Or, dans une de mes scènes, qui vérifie si mon portail est resté ouvert, j'utilise un figaro:sleep de 10 minutes avant d'envoyer une annonce en TTS. Si le portail se referme pendant les 10 minutes je fais un figaro:abort() ce qui devrait tout arrêté ! Mais 10 minutes plus tard, la scène reprend là où elle s'était arrêtée. Avez-vous une explication ? Pourquoi est-ce que figaro:abort() ne tue pas la scène ? Voici la scène : --[[ %% properties 45 value %% globals --]] local etat_portail = fibaro:getValue(45, "value"); fibaro:debug(etat_portail .. " : Test initial de l'état du portail") if fibaro:countScenes() > 1 then -- si la scène est lancée plus d'une fois alors fibaro:debug("Arrêt de la scène car plus de 2 scènes en même temps.") fibaro:abort() -- arrêt de cette lecture du script end -- fin de la condition if (tonumber(etat_portail) == 0) then fibaro:debug("Arrêt de la scène car portail refermé.") fibaro:abort() end if (tonumber(etat_portail) == 1) then local dt = os.date("%H:%M"); -- on attend 10 minutes fibaro:sleep(600*1000); -- on récupère l'état du portail pour voir si il a été fermé etat_portail = fibaro:getValue(45, "value"); fibaro:debug(etat_portail .. "Le portail a été ouvert il y a 10 minutes (avant la boucle)") while (tonumber(etat_portail) == 1) do --Annonce sur la Squeezebox ... fibaro:call(135, "pressButton", "2"); --fin annonce --on attend 15 minutes fibaro:sleep(900*1000); -- Récupération de l'état pour voir s'il n'y a pas de changement etat_portail = fibaro:getValue(45, "value"); fibaro:debug(etat_portail .. " : Test dans la boucle de l'état du portail") end end et le debug de ce matin : [DEBUG] 07:55:39: 1 : Test initial de l'état du portail (ouverture) [DEBUG] 07:56:24: 0 : Test initial de l'état du portail(fermeture) [DEBUG] 07:56:24: Arrêt de la scène car portail refermé. [DEBUG] 08:05:40: 0Le portail est ouvert depuis 10 minutes (avant la boucle) [DEBUG] 08:12:42: 1 : Test initial de l'état du portail(ouverture) [DEBUG] 08:13:21: 0 : Test initial de l'état du portail(fermeture) [DEBUG] 08:13:21: Arrêt de la scène car portail refermé. [DEBUG] 08:22:43: 0Le portail est ouvert depuis 10 minutes (avant la boucle) [DEBUG] 08:33:27: 1 : Test initial de l'état du portail(ouverture) [DEBUG] 08:33:46: 0 : Test initial de l'état du portail(fermeture) [DEBUG] 08:33:46: Arrêt de la scène car portail refermé. [DEBUG] 08:43:28: 0Le portail est ouvert depuis 10 minutes (avant la boucle) Il y a une autre fonction que abort pour tuer une scène en cours avec un sleep ? PS : Je ne veux pas passer par GEA. MAJ : La solution est d'utiliser figaro:killScenes() à la ligne 18 pour arrêter (tuer) toutes les instances en cours !
-
Compte admin. En local avec redirection de port. Envoyé de mon iPhone àl'aide de Tapatalk
-
Oui on est d'accord pour les scènes. Non le téléphone est clean.
-
Oui j'ai la dernière versions de iOS et oui les scènes se lancent depuis l'application fibaro sur l'iPhone. Je suis en 4.056, mais j'ai vu que des 4.07 ne fonctionnent pas non plus. Va comprendre Charles ... Envoyé de mon iPhone àl'aide de Tapatalk
-
Oui même microswitch mais pour un usage ici légèrement différent puisque le but est de savoir si la porte est verrouillée àclé en plus de savoir si la porte est ouverte ou fermée (simplement claquée). J'avais essayé un truc avec les micro poussoirs (que l'on trouve dans les télécommandes portail par exemple http://www.amazon.fr/gp/aw/d/B004OD8DXU/ref=mp_s_a_1_12?qid=1457898340&sr=8-12π=AC_SX236_SY340_QL65&keywords=micro+poussoir) mais la course du bouton était trop petite. Avec les microSwitchs on a plus d'amplitude. Envoyé de mon iPhone àl'aide de Tapatalk
-
Idem. En quelle version es-tu (sur ta hc2) ? Envoyé de mon iPhone àl'aide de Tapatalk
-
Ouep pour ma boite aux lettres j'ai un détecteur avec 2 entrées séparées (chacon j'ai une zibase). A l'ouverture de la porte avant ça envoie 5 photos du facteur ou du livreur par mail, et ça affiche une pastille sur mon téléphone (pour me signifier qu'il y a du courrier à prendre). A l'ouverture de la porte intérieur, ça vire la pastille sur mon téléphone. Ca ma fait penser que j'ai jamais changé les piles depuis 5 ans ?!!!! Et il tourne pas mal vu les pub déposées même la nuit.
-
Topic unique Aeotec Zw096 - Smart Switch 6
JossAlf a répondu à un(e) sujet de couillerot dans Aeon Labs / Aeotec
Pour ma part, je les ai renvoyés ce matin... Peut être un peu vite du coup si on peut jouer sur les paramètres ... Si quelqu'un réussi à les faire fonctionner en 4.56 je referai peut être un essai ... -
Un tutot ? ... Je ne sais pas si c'est nécessaire (c'est tellement basic comme bricolage) mais devant l'insistance. Voilà : http://www.domotique-fibaro.fr/index.php/topic/7790-savoir-si-une-porte-est-fermée-à -clé-ou-non/
-
A la demande générale, voici un petit tuto/bricolage qui va vous permettre de savoir si votre porte est verrouillée ou non. Le principe consiste à placer un contacteur qui va être actionné par le pêne (partie métallique qui entre dans le verrou quand on actionne la clé). En faisant mes fonds de tiroirs, j'ai retrouvé ces 2 contacteurs : http://www.amazon.fr/gp/product/B006XQVH3Y?psc=1&redirect=true&ref_=oh_aui_search_detailpage http://www.amazon.fr/gp/product/B006XQUYHE?psc=1&redirect=true&ref_=oh_aui_search_detailpage Avant de les placer dans la serrure, il faut souder 2 fils sur les 2 broches qui remonteront l'information jusqu'au détecteur (dans mon cas j'ai recyclé un FGK et un HSM02). Après quelques essais, j'ai réussi à les placer pile poil pour que le pêne actionne l'interrupteur sans forcer sur la serrure. Le premier contacteur possède une grande tige que l'on peut tordre. J'ai donc plié la tige afin de créer une sorte de > sur lequel pousse le pêne en fin de course. J'ai calé le contacteur sur les côté pour le centrer par rapport au pêne (POV du pêne - on voit ici la serrure sur sa partie basse) : Les 2 fils sortent sur le côté et sont branchés sur HSM02 avec une soudure en parallèle du reed (commutateur à lames du HSM). Voici ce que ça donne avant les finitions (le contacteur est situé juste au dessus de la vis dans la partie métallique située au dessus du HSM02) : Pour la seconde serrure (celle du garage), j'ai creusé le bois en face du pêne pour insérer le contacteur tout au fond. J'ai placé des cales sur les côtés et derrière. Les 2 fils passent derrière le contacteur par un trou (que j'ai pu percé en biais) pour les brancher sur le FGK : Une fois les essais réalisés, j'ai stabilisé les contacteurs avec du silicone (pour que ça se tienne dans le temps mais que ce soit aussi démontable). Le plus difficile aura été de placer les interrupteurs de manière à ce qu'il soient actionnés par les pênes des serrures sans que ça ne force sur les serrures. Les détecteurs remontent bien l'information verrouillé/déverrouillé. Avec les icônes proposées par Quickdav : #1650 et megabubu : #1654 ou encore Did : #1655 Je vois en un coup d'oeil si je dois aller jusqu'au garage avant d'aller me coucher. Pour les possesseurs de serrures 3 points, il est aussi possible de placer le contacteur en haut/en bas des tiges verticales.
-
Merci pour ce retour. J'aurais préféré un cadenas ouvert et un fermé pour éviter toute erreur d'interprétation. Envoyé de mon iPhone àl'aide de Tapatalk
-
Topic unique Aeotec Zw096 - Smart Switch 6
JossAlf a répondu à un(e) sujet de couillerot dans Aeon Labs / Aeotec
De mon côté les 2 prises ne fonctionnent pas en 4.56. Si la box remonte bien l'état on/off quand je clique sur le bouton de la prise, làbox est incapable de piloter la prise. Un clic sur on ou off depuis l'interface de la hc2 laisse la prise de marbre ... Quelqu'un arrive àl'utiliser en 4.5 ? Envoyé de mon iPhone àl'aide de Tapatalk -
Salut, J'ai placé des capteurs (petit interrupteur branché sur un FGK et soudé sur un vieux HSM02) dans 2 de mes portes pour savoir si leur serrure est verrouillée ou non. Ca fonctionne très bien mais je n'ai pas trouvé d'icône qui pourrait correspondre à serrure verrouillée et déverrouillée. Je pensais à un cadenas ouvert (rouge) et fermé (vert). Auriez-vous ça en stock ou un autre idée ? Je n'ose demandé à Couillerot ...
-
Topic unique Aeotec Zw096 - Smart Switch 6
JossAlf a répondu à un(e) sujet de couillerot dans Aeon Labs / Aeotec
Pas encore reçu. Je suis déçu Si, la terre passe par les petites pattes sur le côté. Comme sur les greenwaves. -
Pas mal ! Tu devrais ouvir un autre topic. Ca sort un peu du cadre de Siri et homekit
-
Topic unique Aeotec Zw096 - Smart Switch 6
JossAlf a répondu à un(e) sujet de couillerot dans Aeon Labs / Aeotec
J'ai cru lire un jour (mais je ne sais plus où) qu'il est toujours ON (ce qui me semble plutôt bien). -
Aeotec AEON LABS - Smart Switch 6 - (EU) ZW096-C16 - Z-Wave Plus à 49,95€ (Livraison gratuite en Prémium) sur http://www.amazon.fr/dp/B01AM6AJDY/ref=pe_386181_40444391_TE_item On le trouve habituellement à 69/70€. J'en ai pris 2...
-
Topic unique Aeotec Zw096 - Smart Switch 6
JossAlf a répondu à un(e) sujet de couillerot dans Aeon Labs / Aeotec
Pour info, le module est à 50€ (49,95€) sur http://www.amazon.fr/dp/B01AM6AJDY/ref=pe_386181_40444391_TE_item Livraison gratuite en Prémium. -
Je te réponds ici aussi : Il y a un truc donné par Steven qui transforme un XML en json : -- This script will request sensors.xml file from a Zibase -- and use it to change global variables. -- Version = "1.0.0" -- Author = "Domotique-Info.fr (Steven Piccand)" -- Info = "Memory is preserved: Object are only load once in memory"-- This program is free software: you can redistribute it and/or modify -- This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. -- This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. -- You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ----- !!!!!remettre cette ligne si on repasse en main loop !!! --local maj = 30 -- Durée en secondes de la mise à jour -- -------------------------------------------------------------------------------------------------------------- -- Check that one and only one instance is in memory -- -------------------------------------------------------------------------------------------------------------- if ((not Zibase) or (Zibase.errors >= 5)) then Zibase = { errors = 0 } -- -------------------------------------------------------------------------------------------------------------- -- Miscellaneous -- -------------------------------------------------------------------------------------------------------------- Zibase.url = fibaro:get(fibaro:getSelfId(), 'IPAddress') Zibase.port = fibaro:get(fibaro:getSelfId(), 'TCPPort') -- -------------------------------------------------------------------------------------------------------------- -- Get the XML from the zibase and return it as a LUA table -- -------------------------------------------------------------------------------------------------------------- Zibase.getXml = function() --local zibaseURL = Net.FHttp("zibase.net"); --response, status, errorCode = zibaseURL:GET("/m/get_xml_sensors.php?device="..Zibase.id.."&token="..Zibase.token); local zibaseURL = Net.FHttp(Zibase.url) response, status, errorCode = zibaseURL:GET("/sensors.xml") return Zibase.iif(response ~= nil, Zibase.newParser().ParseXmlText(response), "") end -- -------------------------------------------------------------------------------------------------------------- -- Put all Sensors values in global variables -- -------------------------------------------------------------------------------------------------------------- Zibase.putSensorsInMemory = function(id) local xmlTable = Zibase.getXml() if (xmlTable) then if (not xmlTable.doc) then Zibase.errors = Zibase.errors+1 return nil end local evs = xmlTable.doc.evs for i in pairs(evs:children()) do local idtmp = evs.ev[i]["@id"] if (evs.ev[i]["@pro"]) then idtmp = evs.ev[i]["@pro"] .. idtmp else if (evs.ev[i]["@type"] == "2") then idtmp = "VS" .. idtmp elseif (evs.ev[i]["@type"] == "6") then idtmp = "CS" .. idtmp elseif (evs.ev[i]["@type"] == "7") then idtmp = "OS" .. idtmp elseif (evs.ev[i]["@type"] == "8") then idtmp = "VR" .. idtmp elseif (evs.ev[i]["@type"] == "10") then idtmp = "WS" .. idtmp end end if (not id) then fibaro:setGlobal(idtmp.."_V1", evs.ev[i]["@v1"]/10) fibaro:setGlobal(idtmp.."_V2", evs.ev[i]["@v2"]) elseif ((id ~= nil) and (idtmp == id)) then values = {} values[1] = evs.ev[i]["@v1"] values[2] = evs.ev[i]["@v2"] return values end end end return nil end -- -------------------------------------------------------------------------------------------------------------- -- Get the values (v1 and v2) of a sensor from the zibase -- -------------------------------------------------------------------------------------------------------------- Zibase.getSensorValues = function(id) if (id ~= nil) then return Zibase.putSensorsInMemory(id) else return nil end end -- -------------------------------------------------------------------------------------------------------------- -- Get the value from a variable from the zibase -- -------------------------------------------------------------------------------------------------------------- Zibase.getVariable = function(num) local xmlTable = Zibase.getXml() if (xmlTable) then if (not xmlTable.doc) then Zibase.errors = Zibase.errors+1 return "" end local vars = xmlTable.doc.vars for i in pairs(vars:children()) do if (vars.var[i]["@num"] == num) then return vars.var[i]["@val"] end end end return "" 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) -- ------------------------------------------------------------------------------------------------------------- Zibase.iif = function(condition, iftrue, iffalse) if (condition) then return iftrue end return iffalse end -- ------------------------------------------------------------------------------------------------------------- -- Return a random number from 1 to 100 -- ------------------------------------------------------------------------------------------------------------- Zibase.random = function() return math.random(100) 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 -- ------------------------------------------------------------------------------------------------------------- Zibase.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, "<", "<"); 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 -- ------------------------------------------------------------------------------------------------------------- -- Send a message in the default chat frame if debug mode is activated -- param : sMessage (message to display) -- return : <none> -- ------------------------------------------------------------------------------------------------------------- Zibase.putSensorsInMemory() local time = os.date("le %d.%m.%Y à %H:%M:%S") if (Zibase.errors > 0) then time = "Erreur : " .. Zibase.errors end fibaro:call(fibaro:getSelfId(),"setProperty","ui.Label1.value",time) fibaro:call(fibaro:getSelfId(),"setProperty","ui.Label3.value","http://domotique-info.fr") ----- !!!!!remettre cette ligne si on repasse en main loop !!! --fibaro:sleep(maj*1000) Une autre piste : http://www.domotique-info.fr/2014/02/utiliser-zibase-passerelle-enocean-pour-le-home-center-2/
-
Cherche du côté des tutots de Steven (récupération dès données de la zibase par exemple). Tu trouveras le moyen de lire les valeurs d'un fichier xml. Je te réponds là : #2 Envoyé de mon iPhone à l'aide de Tapatalk