[resolu] M2M et script PHP

Bonjour
Je me lance donc dans la domotisation
J’ai des volets buddendorf type MG en courant porteur.
En pratique si 'j’appuie simultanément sur montée et descente et ensuite je relâche les 2 boutons puis si j’appuie sur montée ou descente cette commande est comprise par le VR qui la communique en CPL aux autres volets.
Je voudrais simuler ce scénario avec mon IPX.
Pour cela ma seule possibilité serait de faire un petit script en PHP sur mon synology.
Mais mon script ne marche pas, je n’arrive pas à avoir une impulsion simultannée sur mes 2 relais d’IPX (programmés avec Ta=0 et Tb=0,5 seconde)
je ne sais pas utiliser correctement les sockets j’ouvre je ferme etc… sinon ca plante l’IPX
Peut’on dans le même socket envoyer 2 infos simultanément?

le code…

Descente centralisée VR

<?php require ( "config.php" ); error_reporting(E_ALL); $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); if ($socket == false) { $texte .= "Echec du socket : " . socket_strerror(socket_last_error()) ; } $result = socket_connect($socket, $ipipx, $port); if ($result == false) { $texte .= "Echec de la connexion : " . socket_strerror(socket_last_error($socket)) ; } socket_write($socket, Set011p); echo $reponse; socket_close($socket); echo $texte; error_reporting(E_ALL); $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); if ($socket == false) { $texte .= "Echec du socket : " . socket_strerror(socket_last_error()) ; } $result = socket_connect($socket, $ipipx, $port); if ($result == false) { $texte .= "Echec de la connexion : " . socket_strerror(socket_last_error($socket)) ; } socket_write($socket, Set021p); $reponse = socket_read($socket, 64); echo $reponse; socket_close($socket); echo $texte; sleep (1); error_reporting(E_ALL); $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); if ($socket == false) { $texte .= "Echec du socket : " . socket_strerror(socket_last_error()) ; } $result = socket_connect($socket, $ipipx, $port); if ($result == false) { $texte .= "Echec de la connexion : " . socket_strerror(socket_last_error($socket)) ; } socket_write($socket, Set011p); $reponse = socket_read($socket, 64); echo $reponse; socket_close($socket); echo $texte; ?>

Merci pour votre aide

Bonjour,

L’API n’indique pas de possibilité d’envoyer 2 (ou plus) entrées en même temps, donc ça semble mal parti…

Essayer d’ouvrir la connexion, faire tous vos trucs, puis la refermer à la fin. Peut être que l’IPX prendra ça pour du simultané selon votre programmation des E/S.

[code]error_reporting(E_ALL);
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket == false) { $texte .= "Echec du socket : " . socket_strerror(socket_last_error()) ; }
$result = socket_connect($socket, $ipx_ip, $ipx_m2m);
if ($result == false) { $texte .= "Echec de la connexion : " . socket_strerror(socket_last_error($socket)) ; }

$msg = ‹ Set011p ›;
socket_write($socket, $msg, strlen($msg));
$reponse = socket_read($socket, 64);
$msg = ‹ Set021p ›;
socket_write($socket, $msg, strlen($msg));
$reponse = socket_read($socket, 64);

socket_close($socket);[/code]

@AZRAYEN
Merci ca marche nickel!
j’avais imaginé une autre solution en utilisant un relai branché sur une entrée digital et utiliser la possibilité d’actionner 2 relais en même temps, mais cela consommait un relai et une entrée…

sujet résolu!

content de voir que ça a pu de dépanner :slight_smile: