Nouveau mode que je ne connaissais pas sur l’IPX800v3 ^^
Je m’explique.
Je développe un plugin pour la Vera et l’IPX permettant de gérer les volets roulants 230V de manière « dimmable »
Cela fait 2 jours que je fais des essais à-tout-va et aucun problème. L’IPX exécute l’ordre envoyé dans la seconde où la Vera l’envoie.
Depuis hier soir, ce n’est plus la même… de temps en temps, l’IPX passe en mode « Je rame à donf » et enchaine avec le mode « je réagis quand je veux ». Du coup, la Vera envoie l’ordre et l’IPX réagit 3 ou 4 secondes après voire au delà de 5 sec et un timeout est retourné à la Vera.
Je peux augmenter le timeout de la Vera mais ça n’arrange pas mon problème car je perds toute la précision.
Je cherche à comprendre ce qu’il se passe.
Question :
Si j’envoie ces 2 commandes successivement : [i]http://192.168.0.111/preset.htm?led2=1[/i] puis [i]http://192.168.0.111/preset.htm?led1=1[/i]
ça a le même impact, en terme de traitement pour l’IPX que si j’avais envoyé [i]http://192.168.0.111/preset.htm?led2=1&led1=1[/i] ?
dans mon script, je lance les 2 requêtes IP, je patiente le temps que le volet arrive à la destination prévue puis je renvoie un ordre de stop. Souvent, c’est cet ordre de stop qui ne passe pas. (timeout sur la Vera)
Je répète que j’ai fait 6/8h de tests sans avoir le moindre problème. Je demandais au volet de bouger de 40 à 45%, il se déplaçait de 160ms x 5 (amplitude de 16sec entre ouvert et fermé) et s’arrêtait immédiatement!!!
Comment puis-je savoir ce qui fait ramer l’IPX comme ça?
Plusieurs pistes possibles :
- ne pas oublier que l’IPX est connectée en 10MB half duplex, donc si elle est au milieu d’un réseau 100MB full duplex (la plupart de nos box) le routeur ou le switch aura tendance à privilégier le 100MB avant de « parler » aux périphériques 10MB
- est-ce que le réseau ne s’est pas trouvé surchargé par un autre poste dans la maison (téléchargement, téléphonie IP, vidéo, jeu ?? etc…)
- est-ce que le routeur lui-même ne s’est pas trouvé surchargé côté internet ? (changement d’IP, FAI qui fait une mise à jour ?? etc…)
Pour les solutions possibles :
- utiliser un switch pro, du genre Cisco, 3Com ou Dell, qui n’aura que faire de la vitesse de connexion et s’adaptera à toutes les situations (pour ma part un Dell 16 ports 10/100/1000MB)
- surveiller que Madame ou les enfants n’utilisent pas le réseau (attention au téléphone ou à la télé avec les offres triple play)
- là c’est un peu + compliqué à surveiller, mais généralement les soucis côté FAI, qui affecteraient le routeur jusqu’à ralentir les flux « privés », se font rares
A creuser… 
Sinon pourquoi ne pas passer par les trames TCP directement (protocole M2M) ?? C’est instantané ! 
Hum… bizarre.
Je te dirais que tous les tests effectués avec depuis mon boulot à mon domicile (port ouvert sur Vera & IPX) ont posé moins de problème.
Les tests à domicile en ont généré beaucoup plus (TV + Lecube + PS3 allumés + Pc portable (pour les tests en wifi) + Freenas (en permanence en 1GB.)
Pour ce qui est du M2M, je ne sais pas si la Vera sait le gérer… je vais me renseigner.
(j’ai posé la question ici au cas où : http://forum.micasaverde.com/index.php/topic,10793.0.html)
Mais ça devient embêtant de se dire que les relations Vera / IPX peuvent être ralenties voire annulées (cas d’un timeout) à cause de la vie dans la maison ^^
Lionel, ça te parle ça?
-- load namespace
local socket = require("socket")
-- create a TCP socket and bind it to the local host, at any port
local server = assert(socket.bind("*", 0))
-- find out which port the OS chose for us
local ip, port = server:getsockname()
-- print a message informing what's up
print("Please telnet to localhost on port " .. port)
print("After connecting, you have 10s to enter a line to be echoed")
-- loop forever waiting for clients
while 1 do
-- wait for a connection from any client
local client = server:accept()
-- make sure we don't block waiting for this client's line
client:settimeout(10)
-- receive the line
local line, err = client:receive()
-- if there was no error, send it back to the client
if not err then client:send(line .. "\n") end
-- done with client, close the object
client:close()
end
Il me semble que tu utilises un peu ce type de commande pour le M2M avec l’IPX.
*** EDIT ***
J’ai retrouvé ton post pour le M2M avec PHP
http://forum.gce-electronics.com/t/faire-du-m2m-en-php/502
Y a pas de raison que je n’arrive pas à faire la même chose en LUA ^^
Merci
Effectivement mon IPX n’est commandée qu’en PHP + socket TCP et protocole M2M. Par contre je ne connais pas le LUA mais ton bout de code ressemble bien à un client TCP pouvant échanger avec le serveur de l’IPX : peut-être une bonne solution à ton problème ?
Excellente même 
On est bien d’accord que le M2M ne peut pas être dynamique?
C’est à dire, une fois le port ouvert, que le serveur PHP ou autres, acquiert la valeur en temps réel?
C’est du one-shot en quelque sorte?
Parce que sinon, ça pourrait remplacer les push non?
Explications du bout de code que je t’ai donné :
[quote]
A simple echo server, using LuaSocket. The program binds to an ephemeral port (one that is chosen by the operating system) on the local host and awaits client connections on that port. When a connection is established, the program reads a line from the remote end and sends it back, closing the connection immediately. You can test it using the telnet program. [/quote]
En quelque sorte, la Vera écoute ce qu’il se passe chez l’IPX, cela peut être notamment un changement d’état d’une entrée non?
*** EDIT ***
j’ai trouvé la liste des commandes dispos pour la Vera:
http://w3.impa.br/~diego/software/luasocket/reference.html
Lionel,
j’ai chargé ton code php dans mon serveur.
Je tourne en php52.
Dans mon phpinfo(), j’ai ça :
Registered Stream Socket Transports tcp, udp, unix, udg
et pourtant :
Fatal error: Call to undefined function socket_create() in /usr/local/www/m2mipx/ipx.php on line 22
Quand je l’exécute… je ne comprends pas là.
J’ai installé php52-sockets.tbz au cas où et vérifier le .dll dans le php.ini mais ça ne marche pas.
Tu as une idée?
Bon, j’ai commandé un synology DS212j
Marre de ce Freenas qui marche à moitié dès que je veux faire du php/mysql…
Pour info,
voici le code qu’il faut utiliser dans un Vera pour piloter un relais ou plusieurs en M2M:
http://forum.micasaverde.com/index.php/topic,10793.0.html
Alors là je sèche, certainement une extension PHP qui manque à ton serveur Freenas… Malgré le « registered blablabla »…
Il me manque l’extension mysqli.dll c’est tout.
Bref, ça m’a saoulé… syno commandé.
Tu tournes sur quoi toi?
Syno DS211j, jamais rencontré de problème avec PHP ou mySQL. Le Linux installé d’origine est super performant, j’en suis content.
je voulais celui là mais il ne se fait plus apparemment.
J’ai commandé le DS212j
http://www.amazon.fr/gp/product/B005TOXMAW/ref=oh_details_o00_s00_i00
ça a l’air d’être le même. J’espère qu’il sera aussi performant! Merci
Oui c’est le même avec + de RAM (256Mo au lieu de 128 pour mon modèle). Conso encore réduite il me semble également : 17W au lieu de 25W pour mon modèle. Le 10W en veille je n’en bénéficie plus
car c’est avec les disques arrêtés, et mes disques ne s’arrêtent plus puisque la base SQL est sollicitée toutes les minutes. 
Du coup, je suis pressé de tester tout ça. Réception lundi ou mardi ^^
La conso, c’est sans les disques non?
Non non, avec les disques justement. C’est pour ça que je disais que le 10W (Syno seul) je ne l’atteindrai plus jamais puisque mes disques tournent tout le temps, le Syno ne peut plus se mettre en veille. Syno prenait 15W de conso des disques car effectivement 7,5W par disque c’est une moyenne « habituelle », sachant que de nos jours certains modèles « green » consomment beaucoup moins, d’autres rapides à 7200trs/min par exemple, avec beaucoup de cache, consommeront peut-être un peu plus.
Donc si le 212J est tombé à 17W, ça veut dire que Syno a beaucoup gagné sur la conso de son NAS seul, « sans disque ».
effectivement, ça consomme pas grand chose par rapport à mon FreeNAS qui tourne 24h/24
Perso, je suis aussi sur synology, anciennement sur DS210. Je suis même sur RS812 et ça fonctionne à la perfection. C’est même dessus que j’ai installé https://sourceforge.net/p/multicardipx800/
Pour des bons tuto sur ce matériel :
http://fredo.servehttp.com/index.htm
Bon j’arrête je dévie.
A+
Thomas
Syno reçu. Installation en moins de 30min ^^
Je vais me renseigner pour savoir comment installer php + mysql maintenant.
PHP et mySQL sont déjà installés par défaut sur les Syno, il suffit juste de cliquer 2 ou 3 trucs dans le panneau de config (onglet services web) pour activer WebStation et mySQL. 