BenjyNet Posté(e) le 1 avril 2015 Signaler Posté(e) le 1 avril 2015 Pourquoi tu veux du TCP ? Le HTTP te suffit pas ?
MasterBT Posté(e) le 6 avril 2015 Signaler Posté(e) le 6 avril 2015 Hello, Je présentes la situation: Couple HCl + ipx800 + 3 X880 Pour 9 VR, 5 Eclairage & autre commande pour Sarah. J'utilise le push des relais de l'ipx pour mettre à jour via une scène l'état de l'éclairage ou du VR (Variable + icon) Jusque la aucun probléme, Par contre c'est dans l'autre sens que je rencontre qq soucis. Je commande l'ipx avec la HCL (scène & co) en m2m. Mais la commande ne passe pas à 100% des cas. Donc niveau WAF c'est vraiment pas ça. Je n'arrive pas à trouvais la raison. J'aurais préféré que ca ne marche pas du tout, au moins ca serait plus facile de Débug mais là .. Je dirais que dans 70% des cas ça passe puis de temps en temps.. Que dalle.
Gazous Posté(e) le 6 avril 2015 Signaler Posté(e) le 6 avril 2015 Pourquoi tu veux du TCP ? Le HTTP te suffit pas ? Si en fait je n'avais pas la bonne version de la doc et je n'avais pas vu que les relais étaient polissables en http aussi... Donc mon souci est réglé
Gazous Posté(e) le 6 avril 2015 Signaler Posté(e) le 6 avril 2015 @MasterBT, peux-tu décrire ce qui ne fonctionne pas exactement ? Parce que làc'est un peu vague pour pouvoir t'aider. C'est quel type de commande qui ne passe pas entre ta HCL et ton IPX ?
MasterBT Posté(e) le 6 avril 2015 Signaler Posté(e) le 6 avril 2015 Ah yes, Des commandes de bases comme du setXX1 ou du setXX0 via un VD, dans 7 cas par exemple la commande va bien être exécutée (et donc ouvrir un fermer le relais) mais dans 30% des cas ( à la louche) il ne va rien se passer. je coche bien "en attente de la réponse", reset de la HCL et de l'ipx. Pour les relais avec un Delay off, je fais un Setxx1p. (j'ai test avec est sans, et j'ai environ le même % d'échec) Ainsi si par exemple je fais une scéne de coupure de l'ensemble des lumière et fermeture des volets, l'ensemble des relais ne recoivent pas les ordres. Autre exemple, j'ai un Motion Sensor qui doit allumer la lumière de la cuisine quand qq1 passe devant. en 80% de cas ok, puis des fois rien, la commande est bien envoyée mais pas de réponse de l'ipx. D'ailleurs, je crois bien que j'ai certains Delay off qui ne marche pas non plus à 100%. Ps: j'ai vu ton sujet plus haut, je suis avec authentification et mes commandes Set passent (mise à par mon problème actuel) Ps2: j'ai test, le push de l'ouverture et fermeture des relais fonctionne à 100% des cas, je l'utilise afin d'avoir un retour d'état sur la HCL. Edit: Quand j'envois la commande en m2m et que le relais ne s'active pas, j'entends quand même qq chose au niveau de l'ipx; mais quand je regarde au niveau du status.xml, rien n'a changé. Je penses que je vais aller faire un tour directement sur le fofo de GCE, car je pense que l'HCL envoie bien la commande dans 100% des cas mais que l'ipx fait de la merdre.
Gazous Posté(e) le 6 avril 2015 Signaler Posté(e) le 6 avril 2015 Ok, mais tu coup tu utilises uniquement l'API TCP je suppose car il me semble que la HCL ne te permet pas de mettre du LUA dans ton VD ? Moi je suis passé en HTTP pour 2 raisons : l'authentification et surtout parce que j'avais un petit peu le même problème que toi. Je me suis retrouvé dans des cas où les commandes TCP ne passaient plus. Pour la mise à jour des status, je fais du polling de l'API JSON car cela me permet d'être sà»r d'avoir une information fraîche.
Rem's Posté(e) le 6 avril 2015 Signaler Posté(e) le 6 avril 2015 Hello Master BT, Tu pourrais me dire quel bout de code tu mets pour mettre à jour l'état ...? D'avance merci pour ton retour
Rem's Posté(e) le 6 avril 2015 Signaler Posté(e) le 6 avril 2015 D'ailleurs, je ne sais pas comment je m'y prend, mais je n'arrive pas non plus à envoyer des push ....
MasterBT Posté(e) le 7 avril 2015 Signaler Posté(e) le 7 avril 2015 @rem's, ton image est vraiment petite, mais je crois que Enable n'est pas coché. @Gazous, oui Je balance que en Tcp, je trouve ca plus simple et plus propre que en http (d'ailleurs faut que je regarde car de mémoire en Preset tu dépasse pas le relay 8) Oui je ne peut pas mettre de code LUA Pour mettre à jour l'état, il y a le lien de ma signature, mais en gros à la fermeture du relais je lance une scéne en push qui met à jour le VD + une Variable et inversement à l'ouverture du relais. Ca marche nikel dans 100% des cas, et ca permet de pas faire tourner de scène en continu.
Gazous Posté(e) le 8 avril 2015 Signaler Posté(e) le 8 avril 2015 Mais si ton IPX800 est configuré avec une authentification login/mdp, comment fait tu pour faire des appels TCP authentifiés ??? Tu les renseignes où tes credentials ? Si ça intéresse quelqu'un, voici une fonction qui permet de procéder à un switch de l'IPX en HTTP authentifié directement depuis une SCENE function switchRelay(relayId, newState) local http = net.HTTPClient() http:request("http://"..IPXIP.."/preset.htm?set"..relayId.."="..newState, { options = { method = 'GET', headers = {['Authorization'] = 'BASIC XXXXXXXXXXXXXXXXX'}, }, success = function(response) fibaro:debug("OK") end, error = function(err) fibaro:debug("Error: " ..err) end }) end XXXXXXXXXXXXXXXXX = "<login>:<mdp>" de l'IPX à encoder en base64 (https://www.base64encode.org)
MasterBT Posté(e) le 8 avril 2015 Signaler Posté(e) le 8 avril 2015 En fait j'utilise un version du firmware pour lequel l'authen est que sur l'html et pas sur le m2m
Gazous Posté(e) le 8 avril 2015 Signaler Posté(e) le 8 avril 2015 Ha bon, une ancienne version alors ?
Rem's Posté(e) le 8 avril 2015 Signaler Posté(e) le 8 avril 2015 Ben en fait ensablé est coché ... Vous passer le couple admin:password@adresse IP dans la case serveur et le port 80 ...?? Merci de votre aide
MasterBT Posté(e) le 9 avril 2015 Signaler Posté(e) le 9 avril 2015 @Gazous, oui je suis resté volontairement sur la 3.05.42 @Rem's: 1ére case serveur: Ip HC2 2éme le port 3éme: Login:pass: 4éme: Enable coché. Et dans push 1 ou 2 la requête url à envoyée en fermeture du relais ou ouverture.
MasterBT Posté(e) le 9 avril 2015 Signaler Posté(e) le 9 avril 2015 Tiens au passage, pour mon problème de m2m qui ne passe pas à100% des cas, ce n'est que sur les X880 et non sur les relais de l'ipx, donc 100% de réussite sur les 8 premier relais et, ca merde sur les autres. J'ai ouvert un post sur le forum de GCE.
east Posté(e) le 20 mai 2015 Signaler Posté(e) le 20 mai 2015 Bonjour, J'essaye de mettre en place une IPX800 et une HC2 pour la gestion de mes lumières. Tout fonctionne bien independament mais il y a un truc ou je bloque concernant le changement d'icone selon le retour d'etat. J'ai mixé plusieurs bouts de code et il doit avoir un truc que j'ai mal fais : local status = ""local ip_module = fibaro:get(fibaro:getSelfId(),"IPAddress")HC2 = Net.FHttp(ip_module)response = HC2:GET("/api/xdevices.json?cmd=20")fibaro:debug(response)response = json.decode(response)status = status ..response.OUT1status = string.gsub(status, "1", " â– ON" )status = string.gsub(status, "0", " â–¡ OFF")fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Label1.value", status)local icon = "1"local etat = fibaro:getGlobalValue("status")if (etat == "1") then icon "115"elseif (etat == "0") then icon = "116"endfibaro:call(id_module, "setProperty", "currentIcon", icon) Pouvez-vous m'aider SVP ? merci d'avance
pepite Posté(e) le 27 mai 2015 Signaler Posté(e) le 27 mai 2015 Bonjour Bnjour, Qualqu'un a deja essaye cela ? Quid avec la HC2 ? Ca remonte ? http://www.domadoo.fr/fr/peripheriques/1940-gce-electronics-capteur-humidite-temperature-et-luminosite-sht-x3.html
Nico Posté(e) le 27 mai 2015 Signaler Posté(e) le 27 mai 2015 Remonte comment ? Il faut interroger l'IPX par son API depuis la HC2 puis convertir la donnée récupérée, cela fonctionne sans souci. Moi je le fais sur une sonde de température.
BenjyNet Posté(e) le 27 mai 2015 Signaler Posté(e) le 27 mai 2015 Bah vi ça marche nickel. Faut que j'en achète un capteur comme ça d'ailleurs.
Arbu-jl Posté(e) le 27 mai 2015 Signaler Posté(e) le 27 mai 2015 Hello, En effet, cela fonctionne bien. J'ai un virtuel device qui est actionné par GEA Ca donne cela... J'ai encore un soucis que je n'ai pas eu le temps de résoudre, c'est sur l'humidité, sur lequel, j'ai un soucis avec la virgule. J'avais repris à l'époque un bout de code sur ce forum ou un autre que j'ai ensuite adapté.... avec les pieds... :-) désolé, je ne me rappel plus qui est à l'origine de ces quelques lignes. --[[ %% autostart %% properties %% globals --]] fibaro:debug("process start"); selfId = fibaro:getSelfId(); local domaine = "192.168.0.28",80; if (AN1==nil) then AN1 = ""; end if (AN2==nil) then AN2 = ""; end if (AN3==nil) then AN3 = ""; end --ne charger en mémoire uniquement que à la premiere execution if(refreshUI==nil) then function refreshUI(temp, lum, hum) fibaro:call(selfId,"setProperty","ui.temperature.value",temp); fibaro:call(selfId,"setProperty","ui.luminosite.value",lum); fibaro:call(selfId,"setProperty","ui.humidite.value",hum); fibaro:call(selfId,"setProperty","ui.Time.value", os.date("%d %b à %H:%M:%S")) end; end function round(num, dec) local mult = 10^(dec or 0) return math.floor(num * mult + 0.5) / mult -- return math.floor(num * mult + 0.5) / mult end; function round1(num, dec) local mult = 10^(dec or 1) return math.floor(num * mult + 0.5) / mult -- return math.floor(num * mult + 0.5) / mult end; function round2(num, dec) local mult = 10^(dec or 3) return math.floor(num * mult + 0.5) / mult -- return math.floor(num * mult + 0.5) / mult end; --ne charger en mémoire uniquement que à la premiere execution if(getExt==nil) then function getExt(retry) retry = retry or 0 -- Setting up the connection data local FHTE = Net.FHttp(domaine, 80); -- Netatmo extérieur local response = FHTE:GET("/api/xdevices.json?cmd=30"); -- decoding json string to table if (response~= nil) then local result = nil; result = json.decode(response); if (result ~= nil) then -- prevent: attempt to index field 'body' (a nil value) if (result ~= nil) then AN1 = round1((result.AN1 * 0.00323 - 1.63) / 0.0326) or "n.c"; AN2 = round(result.AN2 * 0.09775) or "n.c"; --AN3 = round((result.AN3 * 0.00323 / 3.3) - 0.1515) / 0.00636 / (1.0546 - (0.00216 * (660 * 0.00323 - 1.63) / 0.0326)) or "n.c"; AN3 = round2(((result.AN3) * 0.00323 / 3.3)-0.1515) / 0.00636 / (1.0546 - (0.00216 * ((result.AN3)* 0.00323 - 1.63) / 0.0326)) or "n.c"; fibaro:debug(AN1) fibaro:debug(AN2) fibaro:debug(AN3) -- variable globale pour info sms local msg = AN1; fibaro:setGlobal("AN1", msg); local msg = AN2; fibaro:setGlobal("AN2", msg); local msg = AN3; fibaro:setGlobal("AN3", msg); return true; else fibaro:debug("IPX800 : erreur le " .. os.date()); if (result.error ~= nil) then fibaro:debug("error code: "..result.error.code..", message: "..result.error.message); end end else fibaro:debug("IPX800 : erreur decodage json le " .. os.date()); end else fibaro:debug("IPX800 :la reponse est null !"); end if ((retry or 5)< 5) then fibaro:debug("Retry #"..retry.."process, please wait..."); fibaro:sleep(5000); return getExt(tonumber(retry+1)); else return false; end end; end local function main() -- demande au service web les informations... local resExt = false; local status, err = pcall(function () resExt = getExt(); end); fibaro:debug("Récupération des données extérieurs : " .. tostring(resExt)); if (status == false) then fibaro:debug("err: "..tostring(err or 'n.c')); end -- affichage infos dans module virtuel refreshUI( AN1.." °C", AN2.." %", AN3.." %" ); -- tempo de 30 secondes fibaro:sleep(6*1000); end -- lance le script à chaque loop main();
Gazous Posté(e) le 27 mai 2015 Signaler Posté(e) le 27 mai 2015 Ce module m'intéresse aussi. Il nécessite combien de fils ? Est-il nécessaire de l'alimenter ?
Gazous Posté(e) le 27 mai 2015 Signaler Posté(e) le 27 mai 2015 Merci et il se raccorde àquel niveau de l'IPX ?
BenjyNet Posté(e) le 27 mai 2015 Signaler Posté(e) le 27 mai 2015 Entrées analogiques, t'en auras 3 de prises sur les 4 dispos
Messages recommandés