Forum eedomus
https://forum.eedomus.com/

[Store] Gestion des cartes-relais chinoises
https://forum.eedomus.com/viewtopic.php?f=50&t=8094
« Précédent  Page 4 sur 6  Suivant »
Auteur:  rover820i [ 06 Mars 2021 10:19 ]
Sujet du message:  Re: [Store] Gestion des cartes-relais chinoises

Attention pour gérer finement les entrées ce n'est pas l'idéal car il y a toujours une latence. Ce n'est pas comme sur un IPX où on peut faire du push et donc avoir un retour immédiat de l'entrée. Là, ça ne fonctionne que par polling. Moi ça ne me pose pas de souci d'avoir 5 à 10s de retard sur l'ouverture de mes registres motorisés, mais pour de la détection d'ouverture ce n'est pas terrible, car il suffit d'ouvrir et refermer avant le polling pour que ça ne soit pas détecté.
Auteur:  tom62440 [ 06 Mars 2021 10:39 ]
Sujet du message:  Re: [Store] Gestion des cartes-relais chinoises

Moi ça ne me dérange pas, pour gérer mon remplissage de piscine 10 secondes de retard ce n'est pas grave.
Auteur:  rover820i [ 06 Mars 2021 14:21 ]
Sujet du message:  Re: [Store] Gestion des cartes-relais chinoises

je viens de mettre à jour le script dédié TCP en faisant 3 boucles de 6 secondes (en 30 secondes) au lieu de 5 boucles de 5 secondes.

Dis-moi si c'est mieux ;)

Le port TCP est par défaut 1234 sur le périphérique.

Les input ne sont pas visibles sur la page web du périphérique.
Auteur:  tom62440 [ 06 Mars 2021 14:56 ]
Sujet du message:  Re: [Store] Gestion des cartes-relais chinoises

ouiiiiiiii :) mais:
- toujours Operation timed out after 40001 milliseconds with 0 bytes received
- L'entrée 1 n'active rien dans eedomus
- l'entrée 2 s'appelle entrée 1 dans eedomus
- L'entrée 3 s'appelle entrée 2 dans eedomus
- L'entrée 4 s'appelle entrée 3 dans eedomus
- L'entrée 5 s'appelle entrée 4 dans eedomus
- L'entrée 6 s'appelle entrée 5 dans eedomus
- L'entrée 7 s'appelle entrée 6 dans eedomus
- L'entrée 8 s'appelle entrée 7 dans eedomus
- J'arrive bien à activer mes sorties, mais je n'ai pas de retour d'état des sorties.

C'est déjà beaucoup mieux, je suis rassuré et c'est réactif ;)
Auteur:  rover820i [ 06 Mars 2021 15:04 ]
Sujet du message:  Re: [Store] Gestion des cartes-relais chinoises

Non il n'y a pas de retour d'état si tu actives manuellement les sorties en dehors d'eedomus.

A l'origine j'avais créé le script en séparant les E/S et en contrôlant les sorties uniquement depuis eedomus.

Tu dois avoir une version différente du mien, car les entrées étaient décalées sur ma box.

Tu peux éditer le script local netrelayinputtcp.php et à la ligne 20, modifier :

Code : Tout sélectionner
                  $valeurListe = $i-1;


par

Code : Tout sélectionner
                  $valeurListe = $i;
Auteur:  tom62440 [ 06 Mars 2021 15:26 ]
Sujet du message:  Re: [Store] Gestion des cartes-relais chinoises

Merci génial, ça correspond maintenant mais la 1 ne fonctionne toujours pas.
Tu ne sais pas comment je pourrai l'activer?

j'ai ce défaut qui s'affiche maintenant :
La règle [10947564] s'est déclenchée 6 fois en une minute, afin d'éviter une saturation son exécution est suspendue pendant une minute.

Veuillez contrôler les critères et actions de vos rêgles ou les désactiver afin d'éviter ce problème.
Auteur:  rover820i [ 06 Mars 2021 15:44 ]
Sujet du message:  Re: [Store] Gestion des cartes-relais chinoises

A quoi correspond cette règle ?
Auteur:  rover820i [ 06 Mars 2021 15:50 ]
Sujet du message:  Re: [Store] Gestion des cartes-relais chinoises

Pour connaitre les valeurs de tes entrées, crée un script intitulé netrelaytest.php et exécute le sur ta box, et donne-moi ici le résultat. Prends soin d'activer les entrées 1 et 8 sur ton netrelay :

Code : Tout sélectionner
<?php
$ip = '192.168.1.166';
$port = '1234';

$socket = socket_create( AF_INET, SOCK_STREAM, SOL_TCP );
socket_connect($socket, $ip, $port);
socket_write($socket, 'state=?');
$out = socket_read($socket, 2048);
echo $out;
?>
Auteur:  tom62440 [ 06 Mars 2021 16:04 ]
Sujet du message:  Re: [Store] Gestion des cartes-relais chinoises

voici voila
{"cmd":"state","output":"00000000","input":"10000001","sn":"v6248447194e3882"}
Auteur:  rover820i [ 06 Mars 2021 17:10 ]
Sujet du message:  Re: [Store] Gestion des cartes-relais chinoises

Ce n'est pas logique que le script d'origine ne fonctionne pas.

Peux-tu me donner la sortie de ça STP :

Code : Tout sélectionner
<?php
$ip = '192.168.1.166';
$port = '1234';

$socket = socket_create( AF_INET, SOCK_STREAM, SOL_TCP );
socket_connect($socket, $ip, $port);
socket_write($socket, 'state=?');
$out = socket_read($socket, 2048);
echo $out;
$out2 = explode(",", $out);
$out2 = explode(":", $out2[2]);
$out2 = str_replace('"', '', $out2[1]);
echo '<br />'.$out2;

// ici je teste pourquoi je n'avais pas utilisé la fonction adhoc (mais y'a une raison forcément...)
$outtest = sdk_json_decode($out);
echo '<br />'.$outtest->{'input'};
?>
Auteur:  tom62440 [ 06 Mars 2021 18:18 ]
Sujet du message:  Re: [Store] Gestion des cartes-relais chinoises

Voila

{"cmd":"state","output":"00000000","input":"10000001","sn":"v6248447194e3882"}
10000001
Auteur:  rover820i [ 06 Mars 2021 22:01 ]
Sujet du message:  Re: [Store] Gestion des cartes-relais chinoises

Le résultat est normal.

Je vais t'envoyer dès que possible une liste de scripts à tester.
Auteur:  rover820i [ 06 Mars 2021 22:56 ]
Sujet du message:  Re: [Store] Gestion des cartes-relais chinoises

Bon j'ai fait des tests de mon côté avec installation, RAS. J'ai les bons retours de valeur, et les input s'affichent bien sur eedomus.

Quelques rares timeout mais rien de particulier.

Voici le script initial que j'avais créé avant de faire un plugin, et que j'utilise sur ma box (1 mise à jour toutes les 10 secondes)

Nom : maj-relayv6.php
Code : Tout sélectionner
<?php
$apiList = Array('Code API input1', 'Code API input2', 'Code API input3', 'Code API input4', 'Code API input5', 'Code API input6', 'Code API input7', 'Code API input8'); // tu peux utiliser les périphériques input créés par le programme initial

for($j = 0; $j <= 2; $j++) {
                $socket = socket_create( AF_INET, SOCK_STREAM, SOL_TCP );
                socket_connect($socket, '192.168.1.166', '1234');
                socket_write($socket, 'DUMP');
                $out = socket_read($socket, 2048);
                echo $out;
                $out2 = explode("\n", $out);
                for($i = 9; $i <= 16; $i++) {
                    $valeurListe = $i-9;
                    $apiNum = $apiList[$valeurListe];
                    $etat = explode(" ", $out2[$i]);
                    if($etat[0] == "IH") {
                        setValue($apiNum, '1');
                        }
                    else {
                        setValue($apiNum, '0');
                        }
                }
                socket_close($socket);
    sleep(9);
    }
?>



----

Périphérique à créer :

Actionneur HTTP => Valeur : 0 / Description : Verif entrées / URL : http://localhost/script/?exec=maj-relayv6.php

Macro à mettre pour cet actionneur HTTP :
- Attendre 0mn puis Verif entrées
- Attendre 30s puis Verif entrées

---

Règle à créer :

- Tous les jours, toutes les heures, toutes les minutes

- Périphérique Vérification des entrées => macro mise à jour auto

Ensuite, tu lances manuellement la macro de l'actionneur HTTP

Et normalement, tes entrées devraient se mettre à jour...
Auteur:  tom62440 [ 07 Mars 2021 11:34 ]
Sujet du message:  Re: [Store] Gestion des cartes-relais chinoises

Désolé je ne comprend pas tout, je rajoute ce script ou je supprime tout?
Auteur:  tom62440 [ 07 Mars 2021 11:59 ]
Sujet du message:  Re: [Store] Gestion des cartes-relais chinoises

j'ai tout créer comme tu m'as dit, mais l'entrée 1 ne fonctionne toujours pas
Auteur:  Essam10 [ 08 Mars 2021 09:52 ]
Sujet du message:  Re: [Store] Gestion des cartes-relais chinoises

Est ce qu'on sait faire une Maj ou alors il faut installer reinstaller?
Auteur:  rover820i [ 08 Mars 2021 17:32 ]
Sujet du message:  Re: [Store] Gestion des cartes-relais chinoises

C'est vraiment étrange que l'entrée 1 ne fonctionne pas.

Le code api est bon ?

Après la ligne $etat = explode(" ", $out2[$i]);

Rajoute :

echo $etat[0].' : api '.$apiNum.'<br/>';

Et donne moi le résultat d'une exécution manuelle avec l'entrée 1 et l'entrée 7 activées.
Auteur:  tom62440 [ 08 Mars 2021 18:57 ]
Sujet du message:  Re: [Store] Gestion des cartes-relais chinoises

c'était bien dans le script netrelay.php ?

Donc j'ai fait ca :

<?php
$apiList = getArg("apis", $mandatory = true);
$ip = getArg("ip", $mandatory = true);
$port = getArg("port", $mandatory = true);

$apiList = explode(":", $apiList);

for($j = 0; $j <= 5; $j++) {
$socket = socket_create( AF_INET, SOCK_STREAM, SOL_TCP );
socket_connect($socket, $ip, $port);
socket_write($socket, 'DUMP');
$out = socket_read($socket, 2048);
//echo $out;
$out2 = explode("\n", $out);
for($i = 9; $i <= 16; $i++) {
$valeurListe = $i-9;
$apiNum = $apiList[$valeurListe];
$etat = explode(" ", $out2[$i]);
echo $etat[0].' : api '.$apiNum.'<br/>';
echo $etat[0].' : ';
if($etat[0] == "IH") {
setValue($apiNum, '1');
echo $valeurListe.' : '.$apiNum.' ON <br />';
}
else {
setValue($apiNum, '0');
echo $valeurListe.' : '.$apiNum.' OFF <br />';
}
}
socket_close($socket);
sleep(5);
}
?>


Et comme résultat j'ai ça :

Erreur : Veuillez préciser la valeur de l'argument apis afin d'appeler ce script Editer.

Exemple : http://192.168.10.31/script/?exec=netrelay.php&apis=xxx
Auteur:  rover820i [ 08 Mars 2021 22:45 ]
Sujet du message:  Re: [Store] Gestion des cartes-relais chinoises

Non, à mettre dans le script que tu as spécifiquement créé suite à mon dernier message.
Auteur:  rover820i [ 09 Mars 2021 17:03 ]
Sujet du message:  Re: [Store] Gestion des cartes-relais chinoises

Dans le script maj-relayv6.php
Page 4 sur 6 Le fuseau horaire est UTC+1 heure