Bonjour,
Nous souhaitons commander notre carte DMX VM502 depuis une application JavaScript.
Au départ, nous avons une suite binaire de 8 caractères, que nous souhaitons appliquer à notre carte :
“01010101”
Par exemple, pour enclencher un relais sur deux.
Nous avons examiné le code JavaScript de la page d’accueil de votre carte, dont nous avons reproduit l’IP 192.168.1.10 dans la barre d’adresse de Firefox.
Nous accédons parfaitement à votre application de contrôle, grâce à laquelle nous enclenchons et déclenchons les relais et pouvons programmer des timers.
Jusque là, tout va bien.
Le problème est qu’il faut impérativement passer par votre page d’accueil, pour contrôler les relais.
Nous souhaitons la contrôler depuis notre application JavaScript.
Par exemple, en envoyant une requête Ajax à votre carte DMX VM502 Ce qui heurte la same origin policy.
En soi, j’ai déjà programmé des requêtes Ajax cross-domain Il suffit de programmer, en tête du PHP-cible
header(‘Access-Control-Allow-Origin: *’);
Et le script-cible accepte les requêtes Ajax de toutes provenances.
Le problème est que je n’ai pas accès au serveur (votre carte DMX) pour y autoriser les Ajax de toutes provenance.
Ou en provenance d’une IP déterminée.
Pourriez-vous, dès lors, m’expliquer comment contrôler votre DMX VM502 depuis un script extérieur ?
Sans passer par une solution lourde, avec installation et compilation d’exécutables.
A la rigueur, nous pouvons encore programmer, sur notre serveur, une requête Ajax qui invoque un script PHP-cible, qui, à son tour, exécute une commande PHP contenant une commande système Nous avons déjà essayé ceci :
<?php // Commande de contrôle de la carte DMX if ( isset($_POST['dmxIp']) && strlen($_POST['dmxIp']) > 0 && isset($_POST['dmxPort']) && strlen($_POST['dmxPort']) > 0 && isset($_POST['relay']) && strlen($_POST['relay']) > 0 ) { //echo('Relays : '.$_POST['relay']); $fp = stream_socket_client('tcp://'.$_POST['dmxIp'].':'.$_POST['dmxPort'], $errNo, $errStr, 5); if($fp) { // Exécuter la commande while(!feof($fp)) { echo(fgets($fp)); } fclose($fp); } else { echo('Erreur '.$errNo.' '.$errStr); } } else { echo('Bad DMX IP and port params'); } ?>ou $_POST[‘dmxIp’] vaut 192.168.0.10, l’adresse affichée sur le cadran de la carte DMX et $_POST[‘dmxPort’] vaut 9760
Quant à $_POST[‘relay’], inutilisé, il contient la chaîne “01010101”
correspondant à l’état à donner aux relais.
Merci pour votre réponse.
Christian Mascart.
NB, je n’ai pas trouvé la VM502 dans les topics. J’ai pris le VM201, qui me semble s’en rapprocher le plus.