Aller au contenu

Messages recommandés

Posté(e)

 Non, c'est bon, j'ai compris, en fait, j'ai deux messages différents (donc n° différent) pour le on et le off.

Merci.

Posté(e)

Bonjour

 

Je m'arrache les cheveux sur un truc tellement simple que je désespère... Est-ce moi, le lua, ou fibaro qui fait de la merde ? A vous de me le dire ^^ ! 

 

Voici mon code... et les réponses

 

fibaro.png

 

Je cherche juste à  faire une petite fonction qui check régulièrement un état d'une entrée de mon IPX, mais je n'arrive pas a récupérer la valeur, qui est pourtant bien récupéré (voir "réponse : 1")

 

Je ne comprend pas pourquoi "après" affiche encore -1, alors qu'il a bien été pris en compte pourtant.

 

Et pire... Pourquoi le débug "après:" s'affiche avant "réponse :" ! 

 

Éclairez moi SVP ^^

Posté(e)

Hello c'est normal !

La fonction http:request est une fonction asynchrone.

Donc elle est non bloquante et c'est dans le code de success que tu récupères la réponse.

Donc ton debug "après" s'execute tout de suite soit avant que ta requête http aboutisse et donc àce moment làta variable est toujours à-1.

Tu peux aussi constater cela en regardant l'ordre de tes debug et l'horodatage. Tu vois bien que "après" arrive juste avant "réponse"

Posté(e)

ok, je me suis un peu douté de ça... Mais comment faire alors ?

 

J'ai essayé de mettre un "sleep(1000)" avant mon "après" histoire de laisser le temps à  la fonction request de s'executer, mais c'est pareil ! 

 

J'ai même rajouté ça avant le "après" :

 

fibaro:sleep(1000)
fibaro:debug("sleep")
fibaro:sleep(1000)
 
et voici la réponse :
 
[DEBUG] 23:28:42: avant : -1
[DEBUG] 23:28:43: sleep
[DEBUG] 23:28:44: après : -1
[DEBUG] 23:28:44: réponse : 1
 
 
 
Je ne peux pas faire autrement, de manière synchrone, juste histoire de checker ?? (sans passer par un VD...)
Posté(e)

Non car dans une scène tu n'as que http:request pour faire ça...

Je ne vois pas ce qui te pose problème.

Le code qui doit s'exécuter après ton appel et qui a besoin de la valeur en question, tu le mets dans une fonction puis tu appelles cette fonction dans la section success de ta requête. Donc ton code va ainsi s'executer dès que la requête aura aboutie.

Par contre pour bien traiter ton appel, tu devras dans la,section error rappeller relancer ta scene ou ta requête après un petit sllep de 1 seconde par exemple.

Tu vois ce que je veux dire ?

Posté(e)

mais le truc c'est que "tant que la valeur n'a pas changé d'état" et d'autres trucs se sont passé (d'autres entrées, donc ça commence àêtre compliqué), alors je dois rechecker. D'où le fait que je veuille juste checker l'input, faire mes if et tout tranquillement ailleurs, et au besoin, rechecker !

Posté(e)

Et bien je ne vois pas non plus le problème.

Tu fais un appel récrusif tant que tu n'as pas le cha,gement d'état et tes autres conditions.

Sinin, tu peux aussi configurer ton IPX avec un appel push qui lance une scene sur ta fibaro sur cha,gelent d'état.

Ça,serait plus propre d'ailleurs.

Posté(e)

ça devient vite l'usine à  gaz quand on utilise ET des déclenchement push, ET des VD ET des scènes, pour finalement ne faire qu'une seule chose simple... 

 

mais bon ok je vais voir ça alors :( merci quand même

Posté(e)

C'edt,sûr que souvent on est obligé de faire des petites bidouilles pour contourner certains manques mais généralement on finit par trouver une solution propre.

  • 1 mois après...
Posté(e)

Bonjour,

 

 

Je cherche a utiliser de simples "poussoir" pour lancer des scènes via l'ipx800.

Mes entrées on/off fonctionnent très bien en utilisant mon vd et la lecture du json des entrées. Cependant pour les poussoirs, je ne peux pas utiliser cela car forcément je ne vais pas tenir appuyer le BP pendant 30 secondes.

Quel est la meilleure solution ? Utilisez le push je suppose, mais sa va me faire une surcouche par rapport au json...

N'y a t'il pas une bidouille dans l'ipx à  faire afin que lors d'un appui bref, l'état INX passe à  1 pour ne repasser à  0 que lorsqu'on rappui ? 

 

Du coté push, il suffit de mettre cela pour lancer la scène (/api/sceneControl?id=229&action=start)

mais quand je veux rappuyer sur mon bouton, j'aimerai éteindre ma scéne et c'est la que je bug...

 

Merci

  • 1 mois après...
Posté(e)

bonsoir,

 

pas besoin de poser la question ... je suis un boulet lol 

je n'arrive meme pas à  renvoyer la mesure de ma sonde de luminosite de mon ipx800 sur la HC2..... ;(

 

j'ai utilisé le virtual device de kirikoff est je suis toujours en failed....

 

petite question : la donnée que je vais remontée sur la hc2 sera enregistrée pour pouvoir faire un suivi des valeurs par la suite sur les graph de la  hc2???

 

merci a tous 

  • 2 semaines après...
Posté(e)

Bonsoir à  tous

 

Je début avec la HC2 et j'ai un problème pour piloter mon IPX800 V3 en M2M cela fonctionne parfaitement en LUA et commande HTTP mais absolument pas en M2M.

 

Il semble que la HC2 n'envoi pas les requêtes à  l'IPX j'ai utilisé wireshark pour analyser le traffic et apparement la HC2 n'envoie pas les commande à  l'IPX sur le port TCP 9870.

 

Pour m'assurer que cela fonctionne correctement coté IPX j'ai utilisé un petit utilitaire (Packet Sender) pour envoyer les requêtes M2M via mon PC à  l'IPX et la cela fonctionne sans aucun problème donc j'ai surement pas compris comment utiliser l'HC2 et l'IPX en mode M2M si vous pouviez m'éclairer sur le sujet ?

 

Merci d'avance

Posté(e)

Bonsoir à  tous

 

Je début avec la HC2 et j'ai un problème pour piloter mon IPX800 V3 en M2M cela fonctionne parfaitement en LUA et commande HTTP mais absolument pas en M2M.

 

Il semble que la HC2 n'envoi pas les requêtes à  l'IPX j'ai utilisé wireshark pour analyser le traffic et apparement la HC2 n'envoie pas les commande à  l'IPX sur le port TCP 9870.

 

Pour m'assurer que cela fonctionne correctement coté IPX j'ai utilisé un petit utilitaire (Packet Sender) pour envoyer les requêtes M2M via mon PC à  l'IPX et la cela fonctionne sans aucun problème donc j'ai surement pas compris comment utiliser l'HC2 et l'IPX en mode M2M si vous pouviez m'éclairer sur le sujet ?

 

Merci d'avance

 

La seule chose que je n'avais pas tester était de redémarrer la HC2 et après un reboot cela fonctionne !!! avez vous deja constater ce type de problème ?

 

Donc apparement les commandes sont correctement envoyées depuis le redémarrage de la HC2 !

  • 3 semaines après...
Posté(e)

Hello World,

Après recherche je ne retrouve plus comment on fait pour récupérer la valeur d'une sonde de température branchée sur l'IPX.

 

réponse trouvée:

 

HC2 = Net.FHttp("192.168.1.165")
response = HC2:GET("/api/xdevices.json?cmd=30")
 response = json.decode(response)




fibaro:debug(response.AN1)
fibaro:debug(response.AN2)
fibaro:debug(response.AN3)
  • 1 mois après...
Posté(e)

Bonjour,

 

Quelqu'un a-t-il un retour d'expérience avec l'ipx V4 ? J'ai créé un VD en essayant de passer URL ou paramètre M2M mais rien y fait ... Une idée ?

 

Mes essais pour déclencher le relais 1 sans succès (IP et Port renseignés sur le VD) :

 

GET /leds.htm?led0=1 HTTP/1.10x0D0x0A0x0D0x0A

GET /preset.htm?rly0=1 HTTP/1.10x0D0x0A0x0D0x0A

Set011

Posté(e)

Hum moi j'ai fait ça et ça marche très bien mais attention, je ne fais pas de vérification sur les erreurs HTTP en cas d'IPX non joignable par exemple (Laser va me gronder). Ici c'est pour switcher le relais 2 avec un seul bouton dans le VD (allumer/éteindre).

-- Interaction relais 2

local ipx_ip = fibaro:get(fibaro:getSelfId(),"IPAddress")
local selfID = fibaro:getSelfId()
local etat = ""

IPX800 = Net.FHttp(ipx_ip)

response = IPX800:GET("/api/xdevices.json?key=apikey&Get=R")
etat = json.decode(response)

if (etat["R2"] == 1) then
	fibaro:log("Extinction")
	fibaro:call(selfID, "setProperty", "currentIcon", "1034")
	IPX800:GET("/api/xdevices.json?key=apikey&ClearR=2")
else
	fibaro:log("Allumage")
	fibaro:call(selfID, "setProperty", "currentIcon", "1033")
	IPX800:GET("/api/xdevices.json?key=apikey&SetR=2")
end
Posté(e)

Y a aussi MasterBt qui utilise la V4 depuis peu la ^^

 

@BenjyNet, ca m'intérèsse ton morceau de code, car moi mon portail est sur l'ipx (CAME BX74) et j'avais fait deux bouton, On et OFF et avec ton code on peut ne faire que un ?

 

Voici le mien du bouton 

local ip_module = fibaro:get(fibaro:getSelfId(),"IPAddress")
HC2 = Net.FHttp(ip_module)
HC2:setBasicAuthentication("comouk", "bbaablablalblablalbalbaltruc")
response = HC2:GET("/preset.htm?set1=1")

et forcement 0 pour le off

Posté(e)

Mon bout de code c'est pour allumer ma lumière dans le garage. Par contre pour mon portail c'est juste une impulsion normalement pour déclencher l'ouverture. Tu ne devrais donc pas avoir de bouton On/Off. Moi j'ai sur mon relais 1 un délais pour le remettre à0 après passage à1 (fonctionnement impulsionnel quoi). A moins que toi il faille que ton relais soit On pour l'ouverture (et le rester) puis passer àOff pour la fermeture (et le rester). Je sais pas si je suis clair, mais la façon dont tu l'as programmé m'interpelle.

  • 1 mois après...
Posté(e)

@steven

 

Je viens d'installer ton VD, super bien et effectivement, ca peut aider beaucoup ^^

 

Sauf que j'ai ca dans le débug

[DEBUG] 22:19:16: 401 Unauthorized: Password required
[ERROR] 22:19:16: line 8: Expected the end but found invalid token at character 5
[DEBUG] 22:19:16: 401 Unauthorized: Password required
[ERROR] 22:19:16: line 8: Expected the end but found invalid token at character 5
Posté(e)

J'ai pas mis en place la gestion des users/password  :huh:

 

Si quelqu'un l'a fait, c'est volontiers. Sinon, je passerais un peu de temps  :)

  • Upvote 1
Posté(e)

Roh ! Tu déconnes Steven ? On va pas te dire comment faire quand même ??? :D

options = {
	method = 'GET',
        headers = {
                  ['Authorization'] = 'Basic aXvGcc6TreO0PLMdn65=' -- login:pass encodé en Base64
        	  }
	},
Posté(e)

Ben disons que c'est pas dans mes habitudes de lâcher une information sans mettre un vrai morceau de code.

 

D'ailleurs, je doute, de mémoire, que la librairie net.HTTPClient fonctionne dans un VD.

 

En bref,  cela prend du temps de répondre, chose que je n'ai pas vraiment, là , de suite  :)

×
×
  • Créer...