Phil1789 Posté(e) le 11 février 2018 Signaler Partager Posté(e) le 11 février 2018 (modifié) J'utilise une HC2 depuis quelques temps déjà, mais je reste un niveau très basic. J'ai également une zibase que j'utilise avec des modules et des interrupteurs. J'aimerais savoir s'il est possible d'interconnecter une zibase à une HC2 et pouvoir utiliser des interrupteurs chacon? Merci de vos réponses Modifié le 11 février 2018 par Lazer Message déplacé Lien vers le commentaire Partager sur d’autres sites More sharing options...
jojo Posté(e) le 11 février 2018 Signaler Partager Posté(e) le 11 février 2018 Le spécialiste dans ce domaine c'est@Nico Envoyé de mon Nexus 5 en utilisant Tapatalk Lien vers le commentaire Partager sur d’autres sites More sharing options...
Nico Posté(e) le 12 février 2018 Signaler Partager Posté(e) le 12 février 2018 Yes, tu peux sans souci. Par contre il te faut créer des scénarios pour cela qui appelle la HC2 par son API. L'objectif c'est d'allumer qque chose dans la HC2 depuis ton inter Chacon, c'est bien ç a? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Phil1789 Posté(e) le 13 février 2018 Auteur Signaler Partager Posté(e) le 13 février 2018 Merci pour ta réponse, c'est bien ce que je souhaite faire, comment dois-je procéder? Encore merci Lien vers le commentaire Partager sur d’autres sites More sharing options...
Phil1789 Posté(e) le 14 février 2018 Auteur Signaler Partager Posté(e) le 14 février 2018 Peux-tu me tuyauter sur ce sujet. Merci Lien vers le commentaire Partager sur d’autres sites More sharing options...
Steven Posté(e) le 19 février 2018 Signaler Partager Posté(e) le 19 février 2018 Pour faire simple. Lors de l'appui du bouton 1 de mon module EnOcean, voici ce que ma zibase fait. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Phil1789 Posté(e) le 19 février 2018 Auteur Signaler Partager Posté(e) le 19 février 2018 Merci pour ce message, mais je suis débutant, et j'aimerais surtout savoir comment faire pour que ma HC2 reconnaissent ma zibase et interfère sur ces modules. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Steven Posté(e) le 19 février 2018 Signaler Partager Posté(e) le 19 février 2018 En bref, tu veux savoir l'inverse de ce que tu as demandé 2 posts plus haut ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
minos Posté(e) le 20 février 2018 Signaler Partager Posté(e) le 20 février 2018 Salut pour ma part , j 'arrive à récupérer les données (T° et Hygro) d'une sonde Oregon: Pour cela , j'ai fait deux variables dans la HC2: ensuite un VD: voilà !! Par contre , je n'arrive pas à récupérer les infos d'un chacon (detecteur ouverture de porte) en faisant pareil , création de variable +VD.... ben KO rien .... si quelqu'un a une idée ... je suis preneur .. merci et bonne journée. Minos Lien vers le commentaire Partager sur d’autres sites More sharing options...
Phil1789 Posté(e) le 20 février 2018 Auteur Signaler Partager Posté(e) le 20 février 2018 Pas du tout, je réexplique ma demande initiale: J'ai une HC2 qui contrôle un certain nombre de modules et une zibase qui en contrôle d'autres. Essentiellement, la zibase contrôle des modules prises qui fonctionnent soit avec un smartphone, soit avec des interrupteurs radio (chacon) ce qui me convient parfaitement. Je n'ai actuellement pas trouvé d'équivalent chez fibaro. Ce que je souhaite, c'est qu'au moyen de l'interface Fibaro, je puisse actionner les modules chacon, rattachés à ma zibase. Je ne suis pas un spécialiste en électronique, je recherche donc une solution simple. merci Lien vers le commentaire Partager sur d’autres sites More sharing options...
Steven Posté(e) le 20 février 2018 Signaler Partager Posté(e) le 20 février 2018 @minos Mon dieu, tu dois être le dernier sur la planète à utiliser ce VD Pourrais-tu me donner le contenu de ton fichier sensor.xml s'il te plait ? http://<adresse zibase>/sensor.xml Principalement la section suivante : <evs> <ev type="10" pro="WS" id="133703" gmt="1514985510" v1="21964" v2="4" lowbatt="1"/> <ev type="8" pro="VR" id="630027392" gmt="1519069530" v1="1" v2="0" lowbatt="0"/> ... <ev type="6" pro="CS" id="625060767" gmt="1514189766" v1="1" v2="0" lowbatt="0"/> ... <ev type="8" pro="VR" id="1331037448" gmt="1511916211" v1="1" v2="0" lowbatt="0"/> </evs> Lien vers le commentaire Partager sur d’autres sites More sharing options...
Steven Posté(e) le 20 février 2018 Signaler Partager Posté(e) le 20 février 2018 @Phil1789 Sur le site domotique-info.fr tu trouveras un tuto avec le VD en question, créé dans les années 2000 Recherche "passerelle zibase". Je ne peux pas te donner de lien plus précis, ce site est interdit à mon boulot. Lien vers le commentaire Partager sur d’autres sites More sharing options...
minos Posté(e) le 20 février 2018 Signaler Partager Posté(e) le 20 février 2018 @Steven Il y a 4 heures, Steven a dit : Mon dieu, tu dois être le dernier sur la planète LOL!! voir de l'univers... Tiens voilà ce que tu demandes ( je n'ai pas/plus beaucoup de modules ) mais bon si je trouve la parade je pourrais ressortir ceux du fond d'un tiroir.... <evs> <ev type="7" pro="OS" id="4196984324" gmt="1519143044" v1="225" v2="33" lowbatt="1"/> <ev type="8" pro="VR" id="2748959296" gmt="1518966416" v1="1" v2="0" lowbatt="0"/> <ev type="10" pro="WS" id="132856" gmt="1508322232" v1="38348" v2="12" lowbatt="0"/> <ev type="10" pro="WS" id="131780" gmt="1508383470" v1="43745" v2="255" lowbatt="0"/> <ev type="8" pro="VR" id="2128071232" gmt="1518285518" v1="1" v2="0" lowbatt="0"/> <ev type="10" pro="WS" id="131652" gmt="1514580738" v1="27782" v2="255" lowbatt="0"/> <ev type="6" pro="CS" id="1394812297" gmt="1519139890" v1="1" v2="0" lowbatt="0"/> <ev type="6" pro="CS" id="1394812296" gmt="1509276804" v1="1" v2="0" lowbatt="0"/> <ev type="7" pro="OS" id="4196977672" gmt="1509374468" v1="332" v2="18" lowbatt="0"/> <ev type="10" pro="WS" id="131643" gmt="1517518838" v1="42106" v2="255" lowbatt="0"/> <ev type="8" pro="VR" id="2748959240" gmt="1511028981" v1="1" v2="0" lowbatt="0"/> <ev type="8" pro="VR" id="2368875142" gmt="1512916270" v1="1" v2="0" lowbatt="0"/> <ev type="7" pro="OS" id="4196964608" gmt="1512939700" v1="825" v2="138" lowbatt="0"/> <ev type="6" pro="CS" id="1394812313" gmt="1519139758" v1="1" v2="0" lowbatt="0"/> </evs> merci Minos Lien vers le commentaire Partager sur d’autres sites More sharing options...
Phil1789 Posté(e) le 20 février 2018 Auteur Signaler Partager Posté(e) le 20 février 2018 merci, le site domotique-info.fr est vraiment très bien fait merci pour ton aide, je pense pouvoir m'en sortir, même pour un néophyte!! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Steven Posté(e) le 21 février 2018 Signaler Partager Posté(e) le 21 février 2018 @minos J'ai tout réinstallé le VD et j'ai bien la remontée de mon CSXXXXXXX_V1 Voici le code que j'ai dans mon VD derrière le bouton Rafraichir. -- 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. 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 index = 1 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"]) fibaro:setGlobal(idtmp.."_V2", evs.ev[i]["@v2"]) fibaro:debug(idtmp) 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([%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.Label0.value",time) Lien vers le commentaire Partager sur d’autres sites More sharing options...
minos Posté(e) le 21 février 2018 Signaler Partager Posté(e) le 21 février 2018 @Steven oups ... j'ai vérifiée mon fichier xml... celui du haut c 'est pas le bon... <evs> <ev type="7" pro="OS" id="4196984324" gmt="1519242278" v1="212" v2="33" lowbatt="1"/> <ev type="6" pro="CS" id="1394812313" gmt="1519242302" v1="1" v2="0" lowbatt="0"/> <ev type="6" pro="CS" id="1394812297" gmt="1519242244" v1="1" v2="0" lowbatt="0"/> </evs> dans le suivi d'activité de la zibaze : 21/2/2018 20:50:17 Received radio ID (433Mhz Noise=2035 Level=4.0/5 Chacon ON Batt=Ok) Porte Garage (CS1394812313) => ouverture de porte 21/2/2018 20:51:10 Received radio ID (433Mhz Noise=2051 Level=4.5/5 Chacon OFF Batt=Ok): CS1394812297 => fermeture de porte même en rafraîchissant /fermant le navigateur , la valeurs du fichier xml sont toujours pareilles ... v1="1" v2="0" je récupère bien les infos dans mes variables ... mais toujours 1... normal à mon avis vu que le fichier xml ne change pas le soucis serait au niveau du fichier xml qui ne change ... malgré ouverture/fermeture du detecteur ...?? Bizarre...non? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Steven Posté(e) le 22 février 2018 Signaler Partager Posté(e) le 22 février 2018 Je n'utilise plus ma Zibase pour l'instant, mais pourrais-tu faire un test. Changer une variable de la Zibase selon l'état de la porte du garage et voir si le fichier sensors.xml prend en compte cette variable dans la section : <vars> <var num="0" val="0"/> <var num="1" val="0"/> <var num="2" val="0"/> <var num="3" val="0"/> <var num="4" val="0"/> <var num="5" val="0"/> <var num="6" val="0"/> <var num="7" val="0"/> <var num="8" val="0"/> <var num="9" val="0"/> <var num="10" val="0"/> <var num="11" val="0"/> <var num="12" val="0"/> <var num="13" val="0"/> <var num="14" val="0"/> <var num="15" val="2"/> <var num="16" val="0"/> <var num="17" val="1"/> <var num="18" val="-1"/> <var num="19" val="-1"/> <var num="20" val="243"/> <var num="21" val="174"/> <var num="22" val="0"/> <var num="23" val="0"/> <var num="24" val="190"/> <var num="25" val="0"/> <var num="26" val="-1"/> <var num="27" val="-1"/> <var num="28" val="-1"/> <var num="29" val="500"/> <var num="30" val="1"/> <var num="31" val="-32762"/> </vars> Si cela fonctionne, on pourra ce baser là dessus. Lien vers le commentaire Partager sur d’autres sites More sharing options...
minos Posté(e) le 23 février 2018 Signaler Partager Posté(e) le 23 février 2018 @Steven hello, j 'ai regardé pour changer une variable ...mais en fait je vois pas comment faire .... suis une buse je pense !!! Le 22/02/2018 à 10:06, Steven a dit : Changer une variable de la Zibase selon l'état de la porte du garage Lien vers le commentaire Partager sur d’autres sites More sharing options...
Steven Posté(e) le 23 février 2018 Signaler Partager Posté(e) le 23 février 2018 Je ne sais plus, non plus, exactement, mais c'est un truc du style. Pour toi, le périphérique est ton capteur d'ouverture du garage et je ne suis pas sûr que cela soit I0 ... il faudra faire des test entre I0, I1 et I2 Lien vers le commentaire Partager sur d’autres sites More sharing options...
minos Posté(e) le 23 février 2018 Signaler Partager Posté(e) le 23 février 2018 Bon , j'étais sur la même piste que toi vu ton ton imprime écran . Rien de mieux , la variable ne change pas .... je ne vois pas .... merci en tout cas de ton aide en attendant Lien vers le commentaire Partager sur d’autres sites More sharing options...
Steven Posté(e) le 23 février 2018 Signaler Partager Posté(e) le 23 février 2018 Alors crée 2 scénarios depuis ta Zibase. Le premier va mettre la variable V20 à 1 si la porte est ouverte et tu fais la même mais avec l'ID : CS1394812297 et la variable V20 à 0 Lien vers le commentaire Partager sur d’autres sites More sharing options...
minos Posté(e) le 23 février 2018 Signaler Partager Posté(e) le 23 février 2018 bon j 'ai fait comme tu m'as dit ... les scénari tournent bien dans le suivi d'activité .. avec une petite récup de l' affichage de la valeur de la variable V20 qui est bonne lors de l'ouverture ..: 23/2/2018 17:47:41 Print: v20=-00001 (HFFFF) String=1 Fermeture de la porte : 23/2/2018 17:56:32 Print: v20=-00001 (HFFFF) String=0 ça c'est bon ... par contre dans le fichier xml .... <ev type="7" pro="OS" id="4196984324" gmt="1519405012" v1="221" v2="31" lowbatt="1"/> <ev type="6" pro="CS" id="1394812313" gmt="1519404914" v1="1" v2="0" lowbatt="0"/> <ev type="6" pro="CS" id="1394812297" gmt="1519404964" v1="1" v2="0" lowbatt="0"/> bizarre ...non ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Steven Posté(e) le 23 février 2018 Signaler Partager Posté(e) le 23 février 2018 Dans le XML ce qui nous intéresse maintenant est là dedans : <vars> <var num="20" val="1"/> .. </vars> Tu dois avoir 1 ou 0 selon l'état de ton détecteur. Lien vers le commentaire Partager sur d’autres sites More sharing options...
minos Posté(e) le 23 février 2018 Signaler Partager Posté(e) le 23 février 2018 ben c 'est la prise de tête...!! ouverture: <var num="20" val="-1"/> fermeture: <var num="20" val="-1"/> ..... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Steven Posté(e) le 26 février 2018 Signaler Partager Posté(e) le 26 février 2018 Bon ben ne reste que la solution inverse, soit faire que la Zibase envoi l'information à la HC2. - Créer un VD avec un label et 2 boutons (Ouvert et Fermer) ... voir document joint - Faire que la Zibase presse sur le bouton correspondant : Sur ouverture du garage, créer un scénario qui effectuer "commander par http" avec l'url suivante : http://<user>:<password>@<IP_HC2>/api/callAction?deviceID=<ID_DU_VD>&name=pressButton&arg=2 Sur fermeture du garage, créer un scénario qui effectuer "commander par http" avec l'url suivante : http://<user>:<password>@<IP_HC2>/api/callAction?deviceID=<ID_DU_VD>&name=pressButton&arg=3 Ensuite, aucun problème pour reprendre tout cela dans GEA ou n'importe quel autre scénario, il te suffira de mettre ceci dans l'entête %% properties <ID_DU_VD> ui.Label1.value Puis pour GEA, voici un exemple : GEA.add({"Label", <ID_DU_VD>, "Label1", "Ouvert"}, -1, "Ouverture de la porte du garage") GEA.add({"Label", <ID_DU_VD>, "Label1", "Fermé"}, -1, "Fermeture de la porte du garage") GEA.add({"Label", <ID_DU_VD>, "Label1", "Ouvert"}, 10*60, "La porte du garage est ouverte depuis plus de #durationfull#", {"Repeat"}) Porte_Garage.vfib Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés