Welcome to Domotique-fibaro

 

Inscrivez-vous maintenant pour accéder à toutes nos fonctionnalités. Une fois inscrit et connecté, vous serez en mesure de contribuer à ce site en soumettant votre propre contenu ou en répondant au contenu existant. Vous serez en mesure de personnaliser votre profil, de recevoir des points de réputation comme une récompense pour la soumission de contenu, tout en communiquant avec d'autres membres via votre boîte de réception privée, et bien plus encore! Ce message sera supprimé une fois que vous vous êtes connecté.

 

Register now to gain access to all of our features. Once registered and logged in, you will be able to contribute to this site by submitting your own content or replying to existing content. You'll be able to customize your profile, receive reputation points as a reward for submitting content, while also communicating with other members via your own private inbox, plus much more! This message will be removed once you have signed in.

lamparo

Membres confirmés
  • Compteur de contenus

    56
  • Inscription

  • Dernière visite

Réputation sur la communauté

5 Neutral

À propos de lamparo

  • Rang
    Membre interessé
  • Date de naissance 09/02/1964

Profile Information

  • Sexe :
    Male
  • Box
    Home Center 2
  • Version
    4.1

Visiteurs récents du profil

119 visualisations du profil
  1. Avoir un retour sur la commande "montée" ou "descente"
  2. Le plus simple est RFXcom+Raspberry Pi+Domoticz, il y a plein de tuto sur le net la dessus. Nico a piqué ma curiosité, je ne vois pas comment tu peux réaliser ceci
  3. Bonsoir, perso j'utilise le RFXcom pour gérer mes volets SOMFY. Mais ce RFP1000 me tente beaucoup. Nico, pour le rendre "compatible" avec notre HC2, utilise t'on la même configuration que le RFXcom, soit Raspberry Pi et Domoticz? JP
  4. Tuto HC2

    Salut Cybersquat, super si tout fonctionne Le miens met, mini, 3 bonnes minutes avant d'être opérationnel, par contre, il s'éteint relativement vite, une petite minute. Jp
  5. Tuto HC2

    Salut Pépite, un tuto, je peux mettre les codes relatifs aux boutons du VD, comme ça tout sera centralisé sur ce post, je tiens encore à signaler que j'ai tout glané sur le forum. Pour démarrer le QNAP --[[ %% properties %% globals --]] -- Wake On Lan v 1.0.0 [02-2013] -- Copyright © 2013 Jean-christophe Vermandé -- convert MAC adress, every 2 Chars (7-bit ASCII), to one Byte Char (8-bits) function convertMacAddress(address) local s = string.gsub(address, ":", ""); local x = ""; -- will contain converted MAC for i=1, 12, 2 do x = x .. string.char(tonumber(string.sub(s, i, i+1), 16)); end return x; end fibaro:log("Start process"); local _selfId = fibaro:getSelfId(); -- MAC adress local _macAddress = convertMacAddress(":xx:xx:xx:xx:xx:xx"); -- Create Magic Packet 6 x FF local _magicPacket = string.char(0xff, 0xff, 0xff, 0xff, 0xff, 0xff); -- Broadcast Address local _broadcastAddress = "255.255.255.255"; -- Default port used local _wakeOnLanPort = 9; fibaro:sleep(750); for i = 1, 16 do _magicPacket = _magicPacket .. _macAddress; end fibaro:log("Magic packet successfully created"); fibaro:sleep(1000); socket = Net.FUdpSocket(); socket:setBroadcast(true); local bytes, errorCode = socket:write(_magicPacket, _broadcastAddress, _wakeOnLanPort); --check for error if errorCode == 0 then fibaro:log("Successfully sent"); else fibaro:log("Transfer failed"); end -- clean up memory socket = nil; fibaro:sleep(1000); fibaro:log("Please wait for the server startup."); Pour le ping --[[ %% properties %% globals --]] -- Ping v 1.0.1 [05-2013] -- Copyright © 2013 Jean-christophe Vermandé fibaro:log("Start process"); local _deviceIp = "xxx.xxx.x.x"; local _devicePort = xxxx; local _maxRetryProcess = 5; -- recursive function to ping device local function _ping(retry) retry = retry or 0; --open the socket local tcpSocket = Net.FTcpSocket(_deviceIp, _devicePort); --set the read timeout tcpSocket:setReadTimeout(250); --notify user fibaro:log("Search on the local network, try #" .. retry .. " please wait..."); fibaro:sleep(250); --send packet local bytes, errorCode = tcpSocket:write("test"); --check for error if errorCode == 0 then return true; else if retry < _maxRetryProcess then fibaro:log("Retry process, please wait..."); fibaro:sleep(1000); return _ping(retry + 1); end return false; end end --ping device, secure with pcall to catch errors. local f, result = pcall(_ping); if (f) then if (result == true) then fibaro:call(4, "sendPush", "QnaP On") --fibaro:log("Device has been found, is awake and listening."); else fibaro:call(4, "sendPush", "QnaP Off") --fibaro:log("Device was not found!"); end else fibaro:log("Error: " .. result); end Et le VD WOL_QNAP.vfib
  6. Bonsoir à vous, je remonte ce sujet car j'aimerai afficher dans l'étiquette d'un VD, la valeur de consommation d'un FGS223. Je récupère la valeur via le json, mais je ne sais pas si c'est possible d'afficher la valeur récupérée via l'étiquette, en la renommant par exemple. A la place de "consommation", je voudrais afficher la valeur récupérée via json.
  7. Tuto HC2

    Salut Pépite, oui j'arrive à le démarrer, l'arrêter et envoyer un ping dessus pour voir son état J'ai passé du temps à fouiller sur le forum, c'est grâce à tous les béberts du site que j'y suis arrivé, un grand merci à vous tous. JP
  8. Tuto HC2

    J'ai réussi en supprimant les variables du début du code et entrant directement l'adresse IP et le port. Recopie dans ton VD le code ci-dessous (en renseignant ton IP, port, login et password, ça devrait fonctionner. if (not QNAP) then QNAP = {} QNAP.globalvariable = "" -- -------------------------------------------------------------------------------------------------------------- -- Obtient le XML et le retourne sous forme de table LUA -- -------------------------------------------------------------------------------------------------------------- QNAP.getTokenFromXml = function() --local QNAP2URL = Net.FHttp(ip,port); local QNAP2URL = Net.FHttp("xxx.xxx.x.x", xxxx); response = QNAP2URL:GET("/cgi-bin/authLogin.cgi?user=login&plain_pwd=password&remme=1"); xmlTable = QNAP.iif(response ~= nil, QNAP.newParser().ParseXmlText(response), ""); if (xmlTable.QDocRoot ~= nil) then qsidstr = xmlTable.QDocRoot.authSid:value(); if (string.len(qsidstr)>0) then fibaro:debug("Qtoken founded"); qsidstr = qsidstr:gsub("[".."<![CDATA[".."]", ''); qsidstr = qsidstr:gsub("[".."]".."]", ''); qsidstr = qsidstr:gsub("["..">".."]", ''); fibaro:debug(qsidstr); response = QNAP2URL:GET("/cgi-bin/sys/sysRequest.cgi?subfunc=power_mgmt&count=0.1234&sid="..qsidstr.."&apply=shutdown"); if (string.find(response, "OK")) then fibaro:log("Power Off Server") else fibaro:log("ERROR") end end end end -- ------------------------------------------------------------------------------------------------------------- -- Teste la condition et retourne la valeur true ou false -- ------------------------------------------------------------------------------------------------------------- QNAP.iif = function(condition, iftrue, iffalse) if (condition) then return iftrue end return iffalse end -- ------------------------------------------------------------------------------------------------------------- -- Ceci est une version modifiée par Steven 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 -- ------------------------------------------------------------------------------------------------------------- QNAP.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 QNAP.getTokenFromXml(); @+ JP
  9. Tuto HC2

    Bonsoir à vous, je suis toujours sur ma tentative d'arret de mon QNAP par un VD. J'ai mis des debug pour voir un peu ou va le programme. Lorsque je fais un débogue, je lis le 1 et le 7. ça saute donc dès le if (xmlTable.QDocRoot ~= nil) then . Je ne comprends pas bien ce code un peu abscons. Qu'est ce qui empêche de satisfaire la condition? Si un cador peu me dépanner, que je me couche, ou meurs moins bête JP
  10. -- on extrait l'heure et minute (%d+) est un digit local heure, minute = string.match(NomDate, "(%d+):(%d+)") -- On récupère l'heure et date actuelle sous forme de tableau Alors là c'est trop fort, j'utilise ce code depuis 6 mois dans mes scènes d'alarme et volets roulants et aucun problème, la cerise sur le pompon est que le code que j'ai est correct alors que je n'ai fait que recopier cette partie du programme dans l'éditeur de HC2 TOOLKIT
  11. Tuto HC2

    Salut Pepite, j'ai rien trouvé sur Google, je suis allé poser la question sur le site de labomatik, je verrai bien si j'arrive à me dépatouiller. j'ai mis des débug pour voir ou il va, il ne rentre pas dans la boucle: if (xmlTable.QDocRoot ~= nil) then qsidstr = xmlTable.QDocRoot.authSid:value() Je ne comprends pas cette fonction, alors je bloque grave.
  12. Tuto HC2

    if (not QNAP) then QNAP = {} QNAP.qnap_ip = fibaro:get(fibaro:getSelfId(), "IPAddress"); QNAP.port = fibaro:get(fibaro:getSelfId(), "TCPPort"); QNAP.globalvariable = "" -- -------------------------------------------------------------------------------------------------------------- -- Obtient le XML et le retourne sous forme de table LUA -- -------------------------------------------------------------------------------------------------------------- QNAP.getTokenFromXml = function() local QNAP2URL = Net.FHttp(QNAP.qnap_ip,QNAP.port); response = QNAP2URL:GET("/cgi-bin/authLogin.cgi?user=LOGIN_NAS&plain_pwd=PASSWORD_NAS&remme=1"); xmlTable = QNAP.iif(response ~= nil, QNAP.newParser().ParseXmlText(response), ""); if (xmlTable.QDocRoot ~= nil) then qsidstr = xmlTable.QDocRoot.authSid:value(); if (string.len(qsidstr)>0) then fibaro:debug("Qtoken founded"); qsidstr = qsidstr:gsub("[".."<![CDATA[".."]", ''); qsidstr = qsidstr:gsub("[".."]".."]", ''); qsidstr = qsidstr:gsub("["..">".."]", ''); fibaro:debug(qsidstr); response = QNAP2URL:GET("/cgi-bin/sys/sysRequest.cgi?subfunc=power_mgmt&count=0.1234&sid="..qsidstr.."&apply=shutdown"); if (string.find(response, "OK")) then fibaro:log("Power Off Server") else fibaro:log("ERROR") end end end end -- ------------------------------------------------------------------------------------------------------------- -- Teste la condition et retourne la valeur true ou false -- ------------------------------------------------------------------------------------------------------------- QNAP.iif = function(condition, iftrue, iffalse) if (condition) then return iftrue end return iffalse end Bonsoir à vous, j'ai utilisé le code de @Krikroff pour démarrer mon QNAP à distance et cela fonctionne parfaitement. Je cherche maintenant à l'éteindre, pour cela j'ai inséré le code ci-dessus dans mon VD, mais..nada, ça ne fonctionne pas. Quand je le passe dans le débug RAS (enfin si, il manque un "end" à la fin). Si quelqu'un a une piste. Merci à vous. JP
  13. Tuto HC2

    Bonsoir Pepite, merci pour tes précieux conseils. Je ne pensais pas pouvoir gérer un NAS comme un PC. Je vais tester le code de Krikrof. Je te tiendrai au courant :-) @+ JP
  14. Tuto HC2

    bonsoir à vous. je possède un QNAP et voudrais avoir la possibilité de le démarrer via la HC2. Comme le demande cybersquat, peut on ajouter un bouton "start" sur le VD? Merci à vous
  15. J'ai appelé le support en france...............ils ne parlent que l'anglais C'est un comble d'avoir un support dans un pays et ne pas parler la langue locale. J'ai eu du mal à faire réinitialiser mon compte qui ne était totalement inaccessible, alors expliquer que je n'ai jamais eu accès à la carte ...........