Bonjour,
j’ai récemment acheté une carte relais ip chinoise 8 sorties et je souhaiterai la contrôler avec le plugin script, (seul plugin permettant je pense de communiquer avec facilement).
Pour l’envoie de commande, une simple requête http avec le port qui change en fonction des sorties fonctionne bien :
Normalement dans la partie de droite, en faisant un clic droit sur la balise sélectionnée - « font » en l’occurrence - et en choisissant Copy > Copy Selector cela donne directement la séquence à mettre. Je pense que tu auras le même enchaînement qu’on voit en bas, à savoir body > center > center > center > p > font
Le résultat de la requête est du texte qu’il faudra interpréter OFF ou ON C’est pour cela que rien ne s’affiche quand vous cliquez Tester. En passant par les engrenages à gauche de Tester, il y a
Pour accéder au relay suivant, il faut ajouter center > à chaque fois
Bien vu pour la valeur. J’avais testé et je ne voyais rien non plus, surtout que ça faisait même planter l’affichage dans le dashboard. Il faut dire que le code html de la page de départ est bien pourri.
Par contre, la commande génère une erreur dans le testeur d’expression. J’ai réussi à avoir quelque chose qui semble fonctionner en choisissant une commande de type binaire ou numérique, puis dans Configuration > Formule de calcul en mettant (substr(#value#,0,2) == "ON")?1:0
Avec votre formule dans un virtuel, je n’arrive pas à faire fonctionner.
Bien que OFF je récupère toujours 1 sur le virtuel.
Compte-tenu de l’excellente qualité du html (structure et data ) je serais plutot parti sur un script dédié.
Avec cette méthode j’ai ‹ ‹ un retour › ›, en revanche j’ai l’impression qu’après un certain temps (moins de 1 min) la valeur 1 ou 0 du retour disparaît pour ne rien avoir.
Au pire, je corrigerai ça avec de l’écriture dans des variables, mais par curiosité savez-vous pourquoi ?
C’est sur qu’avec une carte à 30e sur amazon j’imagine qu’ils ont fait des économies sur ça aussi
Si je ne dis pas de bêtises, c’est parce qu’en fait en remplissant en face des actions la colonne « Divers » cela vient écrire directement la valeur dans l’info :
Relay 01 on exécute la commande http puis met la commande Relay 01 à 1
Le script se rafraichit et la commande Relay 01 va chercher l’info en html mais renvoie une valeur vide
En fait, on fait plutôt cela quand on ne peut pas avoir de retour, on simule un état. Dans un tel cas, on ne remplirait rien pour la partie requête de la commande Relay 01. En fait, cela donne l’impression d’avoir un retour, mais je pense qu’il est faussé. Enfin, ça semble être ce qu’il se passe mais pas 100% sûr.
Effectivement y’a un soucis. Je viens de tester en rajoutant des guillemets et ça semble bon (substr(#value#,0,2) == "ON")?"1":"0"
Tout à fait d’accord sur la qualité
Comme ça m’énervait tout à l’heure, j’avais commencé à partir d’un autre script que j’utilise, de type bloc code dans un scénario. J’étais arrivé à cela qui fonctionnait :
Je suis resté dans le plugin script.
Compte-tenu de la m… que fait l’extraction de données de ce html le mieux est que seul 1(ON) 0(OFF) -1(Inconnu,pb xPATH) -2(erreur nombre d’arguments) remonte
Mon script HtmlBoolean.php dans plugins/script/data
Ah oui si on pouvait rester dans le plugin script comme ici c’est le top,
Cette solution à l’air vraiment bien,
J’ai voulu l’a tester mais j’ai ces erreurs lors de l’enregistrement :
Si je ne dis pas de bêtises, c’est parce qu’en fait en remplissant en face des actions la colonne « Divers » cela vient écrire directement la valeur dans l’info :
Relay 01 on exécute la commande http puis met la commande Relay 01 à 1
Le script se rafraichit et la commande Relay 01 va chercher l’info en html mais renvoie une valeur vide
En fait, on fait plutôt cela quand on ne peut pas avoir de retour, on simule un état. Dans un tel cas, on ne remplirait rien pour la partie requête de la commande Relay 01. En fait, cela donne l’impression d’avoir un retour
Oui c’était la ‹ ‹ solution de facilité › ›, car en théorie seul l’envoi de requête pour les relais peut les actionner, donc si lors de l’envoi de cette dernière on commande le retour d’état au passage… ça passe même si ça manque de fiabilité …
Seul petit dernier problème, les 4 derniers relais se trouve sur une 2 eme page mais avec la même adresse ip local et même port, et je n’ai pas leurs retour, je pense que l’ajout /center est limité à la 1ere moitié de relais
En effet, et si je rafraîchi la page en enlevant le /43 je reste sur la page des relais de 5 à 8, c’est pour cela que je précisais que c’était la même adresse, /42 sert a revenir sur les relais de 1 à 4.
Bon j’ai quand même tenté ceci pour le Etat relay 5: