-
Compteur de contenus
349 -
Inscription
-
Dernière visite
-
Jours gagnés
4
Tout ce qui a été posté par lamparo
-
Bonsoir à vous, mprinfo, as tu trouvé une solution pour les mails via free? Êtes vous parvenu à vous connecter au serveur pour mise à jour de la date et heure? je voudrais éteindre mon raspberry si la batterie de l'onduleur arrive au bout. je suis une tanche en LUA, j'ai pensé à un truc de ce genre: RPI = Net.FHttp("192.xxx.xx.xx", xx) RPI:GET("/cgi-bin/authLogin.cgi?user=xxxx&plain_pwd=xxxxx&remme=1") suivi d'un "sudo halt" mais je ne sais pas trop comment mettre en forme Si une âme charitable passe par ce sujet JP
- 488 réponses
-
- tuto multimã©dia
- onduleur
-
(et 3 en plus)
Étiqueté avec :
-
Bonsoir à tous, voilà, j'ai terminé l'installation, tout fonctionne Merci pour les bouts de codes linux Laser. J'ai juste une (ou deux) questions, tu parles de fakes devices pour "DEVICE", tu veux parler d'un FGS ou capteur qui viendrait "prendre la puissance de sortie de l'onduleur? Si tu regardes l'imprime écran que j'ai joint, je n'ai rien dans tension, ça vient du fait que pour l'instant je n'ai rien raccordé en sortie de l'onduleur? dans ta capture d'écran, tu as un onglet "Tps Batterie", il n'apparaît pas dans le VD. En tout cas, comme nous disions dans l'armée, tu es un vrais "Bébert" Merci JP
- 488 réponses
-
- 1
-
-
- tuto multimã©dia
- onduleur
-
(et 3 en plus)
Étiqueté avec :
-
Bonsoir à tous, j'ai enfin reçu ma carte, je l'ai configuré, jusque là c'est hyper simple. Sur les conseils de Lazer je décide d'installer Socat sur mon Pi. J'ai de Linux une expérience nulle de chez nulle. Je tappe la première cde: apt-get install socat et toc premier blocage, Putty affiche: à mon avis je n'ai pas les droits ADMIN, il faut certainement ajouter la cde "Root" quelque part......mais ou? Ensuite pour démarrer Socat, je pars de ce point du tuto? "Ensuite, il faut modifier le fichier /etc/rc.local afin d'ajouter le démarrage automatique de socat au boot de la machine, pour cela on peut utiliser l'éditeur nano, ou vi si vous avez une barbe naissante : nano /etc/rc.local Ajouter la ligne suivante à la fin du fichier, en prenant soin de remplacer l'adresse IP de destination par celle de l'onduleur (192.168.1.2 dans l'exemple) /usr/bin/nohup /usr/bin/socat TCP4-LISTEN:10035,fork UDP4:192.168.1.2:161 > /dev/null 2>&1 & Après avoir sauvegardé le fichier et quitté l'éditeur, il faut maintenant exécuter manuellement la commande comme suit, afin de démarrer immédiatement socat sans attendre le reboot (ne pas oublier de remplacer également l'adresse IP correcte) : root@fghc2:~# /usr/bin/nohup /usr/bin/socat TCP4-LISTEN:10035,fork UDP4:192.168.1.2:161 > /dev/null 2>&1 & Utiliser la commande netstat afin de vérifier que socat a bien démarré et écoute sur le port TCP 10035 : root@fghc2:~# netstat -an | awk '$1=="tcp" && $6=="LISTEN" {print $0}' | grep 10035 tcp 0 0 0.0.0.0:10035 0.0.0.0:* LISTEN Vérifier également que le processus socat fonctionne bien en tâche de fond : root@fghc2:~# ps -ef | grep socat root 8618 6253 0 15:24 pts/7 00:00:00 /usr/bin/socat TCP4-LISTEN:10035,fork UDP4:192.168.1.2:161 socat est prêt, on peut fermer la session SSH." par quelle commande je remplace "root@fghc2? Merci pour vos précieux conseils JP
- 488 réponses
-
- tuto multimã©dia
- onduleur
-
(et 3 en plus)
Étiqueté avec :
-
Je vais fouiller pour le ROOT, sinon je me rabattrai sur le Pi. Je te ferai un retour lorsque tout sera fonctionnel, ou si j'ai un blocage ailleurs. En tout cas merci pour tout JP
- 488 réponses
-
- tuto multimã©dia
- onduleur
-
(et 3 en plus)
Étiqueté avec :
-
Bonjour Laser, merci pour ta réponse. Le seul ROOT que je réalise à l'heure actuel concerne Androïd. Linux est un environnement un tantinet abscon pour moi. J'ai un Raspberry PI avec Domoticz d'installé dessus pour gérer mes volets roulants. D'après toi, puis je installer dessus Socat à l'aide de Putty sans mettre la grouille avec Domoticz? Toutefois, je pense que la meilleur solution est de l'installer sur la HC2, si mon Raspberry rend l'âme, je n'ai rien à ré-installer et tout est centralisé. J'ai jeté un coup d'oeil sur le net pour effectuer un ROOT Linux, pour un profane rien de bien simple, il y a divers distributions (Mandriva Mandrake, Debian, Archlinux, Frugalware, Fedora....) La quelle est la bonne sur la HC2 Pour tapper les lignes de cde, je me connecte comment à la box??? Désolé pour toutes ces questions, je parcoure souvent le forum et grâce à vous je progresse, mais là ça devient du grand Mendes :-) JP
- 488 réponses
-
- tuto multimã©dia
- onduleur
-
(et 3 en plus)
Étiqueté avec :
-
Bonsoir à vous, après avoir eu une frayeur au niveau de mon NAS suite à plusieurs coupures de courant, je me suis décidé à installer un onduleur. Comme je ne suis que mécanicien et que fatalement mes connaissances informatiques sont assez limités, j'ai commandé exactement le même matériel que LAZER pour pouvoir m'appuyer sur son tuto. j'ai donc acquis un EATON 5P 850i et une carte réseau, que je reçois demain. Mon point bloquant, pour l'instant, est le Root de la HC2. Comment avoir l'info pour cette manip? Merci à vous JP
- 488 réponses
-
- tuto multimã©dia
- onduleur
-
(et 3 en plus)
Étiqueté avec :
-
Le RFXCOM fonctionne parfaitement, Comme il s'agit de la solution que j'utilise je ne peux que te remonter cette info. Le RFP1000 ajoute de nouvelles fonctions, il faut attendre le retour d'un membre du forum qui l'ai installé. À ta place, partant de zéro, j'opterai pour le RFP1000 et ferai profiter le site de mon expérience. Tu ne risques pas grand chose, au pire des cas tu le renvoies et te fais rembourser. JP
-
Oui, Mitterrand demandait conseil à Elizabeth Teissier. Pendant les années 80, certains leurs prêtent une liaison. Elle l'aurait conseillé sur la guerre du Golfe, Maastricht, et bien d'autres choses. il faut savoir que beaucoup de grands dirigeants d'entreprise consultent aussi ce genre de personnes. ça fait un peu peur
-
C'est une avancée par rapport au RFXcom, faute de mieux. Les chefs d'états on recourt aux voyants, ça fait peur quand même, alors juste un peu de voyance pour mes volets, ça m'irait bien JP
-
Avoir un retour sur la commande "montée" ou "descente"
-
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
-
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
-
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
-
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
-
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.
- 20 réponses
-
- variables
- virtual device
-
(et 1 en plus)
Étiqueté avec :
-
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
-
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
-
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
-
-- 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
-
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.
-
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
-
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
-
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
-
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 ...........
-
Bonsoir à tous, je reviens avec mon absence de carte dans le panneau de localisation. Je me suis connecté sur d'autres PC à distance et toujours aucune carte à l'écran. Le problème vient donc bien de ma HC2. Depuis l'acquisition de mon HC2, cette carte n'a jamais été affichée, étrange quand même. JP