[Plugin Tiers][Sujet Principal] Plugin Modbus
Re: [Officiel] Plugin Modbus
Petite info sur la mise à jour du plugin 2.1.
Sous la valeur Paramètre , il y a maintenant à la place de paramètres Json, le champ : valeur de retour(optionnel)
ce champ permet de définir la valeur de retour de registre .
Par exemple sur la copie d'écran , j'écris 2 dans le registre 12 et ensuite le registre 12 se remet à 0 .
La valeur du registre serra donc brève , comme l’appuie sur un bouton poussoir , cette comparaison n'est pas anodine .. car cette modif me sert à ça, simuler un BP dans un registre .
Mon installation domotique est basé sur un Crouzet M3 et à ce jour 100% compatible avec le plugin Modbus (tcp/ip)
si des personnes sont intéressés par Le Crouzet M3 et son fonctionnement dans Jeedom je prendrais le temps pour faire un topic complet .
Sous la valeur Paramètre , il y a maintenant à la place de paramètres Json, le champ : valeur de retour(optionnel)
ce champ permet de définir la valeur de retour de registre .
Par exemple sur la copie d'écran , j'écris 2 dans le registre 12 et ensuite le registre 12 se remet à 0 .
La valeur du registre serra donc brève , comme l’appuie sur un bouton poussoir , cette comparaison n'est pas anodine .. car cette modif me sert à ça, simuler un BP dans un registre .
Mon installation domotique est basé sur un Crouzet M3 et à ce jour 100% compatible avec le plugin Modbus (tcp/ip)
si des personnes sont intéressés par Le Crouzet M3 et son fonctionnement dans Jeedom je prendrais le temps pour faire un topic complet .
- Pièces jointes
-
- Modif modbus.png (24.07 Kio) Consulté 1203 fois
JEEDOM (que la domotique soit avec toi )
Re: [Officiel] Plugin Modbus
MErci @Bebel27 !
Re: [Officiel] Plugin Modbus
Merci beaucoup TMartinez pour la mise à jour !!!sam1989 a écrit :Bonsoir,
Je voulais savoir si quelqu'un rencontre le même probleme que moi et s'il y a une solution.
J'arrive parfaitement a écrire des bits et des mots du RPI vers l'API
Par contre en ce qui concerne la lecture de l'API sur le RPI, je vois bien le passage des bits de 0 à 1 mais pas l'inverse. L'état du bit que je lis reste à 1 sur le RPI même s'il est repassé à 0 sur l'API
Avez vous une solution ?
En ce qui concerne la lecture des mots, elle se fait correctement mais le délais de rafraichissement et relativement long, est-ce normal ?
Merci !
Maintenant pour moi la lecture et l'écriture de bits et de mots fonctionne parfaitement !
J'aurais encore une question :
Est-il possible de passer un paramètre dans la valeur d'écriture d'un mot ?
Je m'explique :
Imaginons que je lis le mot de registre 1970 appelé "MW1970" et que j'écris le mot de registre 1971 appelé "MW1971".
Je souhaiterais écrire la variable MW1970 (que je lis) dans la variable MW1971 (que j'écris).
J'ai essayé à tout hasard d'écrire #[AUTOMATE][API1][MW1970]# dans la case paramètre de la variable "MW1971" mais ça ne marche point...
As tu déjà essayé de faire un truc du genre ?
Re: [Officiel] Plugin Modbus
Salut sam1989
je pense qu'avec un scénario c'est possible de faire ce que tu souhaites
je pense qu'avec un scénario c'est possible de faire ce que tu souhaites
JEEDOM (que la domotique soit avec toi )
Re: [Officiel] Plugin Modbus
Et tu ferais comment Bebel27 ?
En ajoutant un libélé après la variable ?
Du genre ça #[AUTOMATE][API1][MW1970][la_variable_a_recopier]# ?
En ajoutant un libélé après la variable ?
Du genre ça #[AUTOMATE][API1][MW1970][la_variable_a_recopier]# ?
Re: [Officiel] Plugin Modbus
Tu fais un scenario déclencher par le changement d’état de ton registre .
tu met code et tu écris ça :
$id=??; //à la place des ?? tu mets l'id de ton MW1970
$cmd=cmd::byId($id);
$result=$cmd->execCmd(); //récupération de la valeur du registre
//-----------------------
// Valeur dans variables
//-----------------------
$scenario->setData(MW_1970,($result)); //valeur global MW_1970 à ce stade ta valeur est dans la variable.
//---------------- Fin du code---------------------
Ensuite tu mets un bloc action
et tu choisis l'action du plugin qui écrit ton registre MW1971, et en valeur tu mets: variable (MW_1970)
j’espère avoir été clair. Bon courage et tient moi au courant
tu met code et tu écris ça :
$id=??; //à la place des ?? tu mets l'id de ton MW1970
$cmd=cmd::byId($id);
$result=$cmd->execCmd(); //récupération de la valeur du registre
//-----------------------
// Valeur dans variables
//-----------------------
$scenario->setData(MW_1970,($result)); //valeur global MW_1970 à ce stade ta valeur est dans la variable.
//---------------- Fin du code---------------------
Ensuite tu mets un bloc action
et tu choisis l'action du plugin qui écrit ton registre MW1971, et en valeur tu mets: variable (MW_1970)
j’espère avoir été clair. Bon courage et tient moi au courant
JEEDOM (que la domotique soit avec toi )
Re: [Officiel] Plugin Modbus
Bonsoir,
J'ai essayé ton script Bebel mais je n'ai pas réussi à le faire fonctionner...
J'ai peut peu être mal configuré quelque chose mais j'ai essayé différentes façon d'écrire l'ID du MW 1970 (j'ai essayé 'MW1970' "MW1970" #[AUTOMATE][API1][MW1970]#, 07 (parce que c'est le 7ieme bloc dans le plugin MODBUS...)), de changer le timeout, et j'ai remarqué que le scénario était en erreur (case orange dans le scénario)
Voici la conf :
Pour le scénario
Pour le plugin MODBUS
J'ai essayé ton script Bebel mais je n'ai pas réussi à le faire fonctionner...
J'ai peut peu être mal configuré quelque chose mais j'ai essayé différentes façon d'écrire l'ID du MW 1970 (j'ai essayé 'MW1970' "MW1970" #[AUTOMATE][API1][MW1970]#, 07 (parce que c'est le 7ieme bloc dans le plugin MODBUS...)), de changer le timeout, et j'ai remarqué que le scénario était en erreur (case orange dans le scénario)
Voici la conf :
Pour le scénario
Pour le plugin MODBUS
Re: [Officiel] Plugin Modbus
Remplace ça :
$id=07;
$cmd=cmd::byId($id);
Par ça
$cmd =cmd::byString('#[AUTOMATE][API1][MW1970]#');
$id=07;
$cmd=cmd::byId($id);
Par ça
$cmd =cmd::byString('#[AUTOMATE][API1][MW1970]#');
JEEDOM (que la domotique soit avec toi )
Re: [Officiel] Plugin Modbus
J'ai essayé de remplacer les deux lignes mais ça ne fonctionne toujours pas.
Mais en tout cas c'est ce genre de syntaxe qui me plairais parce que je souhaite remonter les températures venant de l'objet Weather, la téléinfo EDF etc.. à l'automate
En tout cas, plus d'erreur sur le script.
Quand je force l’exécution il me dit script lancé avec succès.
Et merci à toi de prendre du temps pour mon problème !
Mais en tout cas c'est ce genre de syntaxe qui me plairais parce que je souhaite remonter les températures venant de l'objet Weather, la téléinfo EDF etc.. à l'automate
En tout cas, plus d'erreur sur le script.
Quand je force l’exécution il me dit script lancé avec succès.
Et merci à toi de prendre du temps pour mon problème !
Re: [Officiel] Plugin Modbus
tu peux rajouter ça dans ta ligne de code :
log::add('Code','[debug]','Ma variable MW1970: '.$scenario->getData(MW_1970));
Regarde ensuite dans les log onglet "code" tu verras tes variables .
dis moi ce que tu as d'affiché.
log::add('Code','[debug]','Ma variable MW1970: '.$scenario->getData(MW_1970));
Regarde ensuite dans les log onglet "code" tu verras tes variables .
dis moi ce que tu as d'affiché.
JEEDOM (que la domotique soit avec toi )
Re: [Officiel] Plugin Modbus
J'ai ajouté la ligne à la fin et ça me donne ça dans le log (je n'ai pas d'onglet code, simplement les lignes suivantes)
[2015-03-04 23:09:01][SCENARIO] Début d'exécution du scénario : [RPI][recopie_mot].
[2015-03-04 23:09:01][SCENARIO] Exécution du sous-élément de type [action] : code
[2015-03-04 23:09:02][SCENARIO] Exécution d'un bloc code
[2015-03-04 23:09:02][SCENARIO] Exécution du sous-élément de type [action] : action
[2015-03-04 23:09:02][SCENARIO] Exécution de la commande [Automate][API][MW1971]
Voici le script
1 $cmd =cmd::byString('#[Automate][API][MW1970]#')
2 $result=$cmd->execCmd();
3 $scenario->setData(MW_1970,($result));
4 log::add('Code','[debug]','Ma variable MW1970: '.$scenario->getData(MW_1970));
[2015-03-04 23:09:01][SCENARIO] Début d'exécution du scénario : [RPI][recopie_mot].
[2015-03-04 23:09:01][SCENARIO] Exécution du sous-élément de type [action] : code
[2015-03-04 23:09:02][SCENARIO] Exécution d'un bloc code
[2015-03-04 23:09:02][SCENARIO] Exécution du sous-élément de type [action] : action
[2015-03-04 23:09:02][SCENARIO] Exécution de la commande [Automate][API][MW1971]
Voici le script
1 $cmd =cmd::byString('#[Automate][API][MW1970]#')
2 $result=$cmd->execCmd();
3 $scenario->setData(MW_1970,($result));
4 log::add('Code','[debug]','Ma variable MW1970: '.$scenario->getData(MW_1970));
Re: [Officiel] Plugin Modbus
par contre c'est pas normal que tu ne vois pas l'onglet code .
Deux pistes:
lance le script en manuel et regarde si l'onglet est là .
regarde, si en changeant la valeur de MW_1970 le scénario se lance.
Deux pistes:
lance le script en manuel et regarde si l'onglet est là .
regarde, si en changeant la valeur de MW_1970 le scénario se lance.
JEEDOM (que la domotique soit avec toi )
Re: [Officiel] Plugin Modbus
Bonsoir
Pour Bebel, j'ai enfin trouvé l'onglet CODE, je ne regardais pas au bon endroit, il faut aller dans ADMINISTRATION/LOG et je regardais directement dans le bouton LOG dans le scénario...
Donc j'ai modifié un peu le script et vérifié que les variables sont bien affectées :
1 $cmd1=cmd::byId(70); //ID de la lecture du mot %MW1970 dans le plugin MODBUS
2 $result1=$cmd1->execCmd(); //affectation du mot %MW1970 dans variable locale $result1
3 log::add('Code','[debug]','ID70 : '.$result1); //vérif affectation ds LOG
4 $scenario->setData(MW_1970,($result1)); //affectation de %MW1970 dans variable global MW_1970
5 log::add('Code','[debug]','V Global MW_1970 : '.$scenario->getData(MW_1970)); //vérif affectation dans LOG
6 $cmd2=cmd::byId(72); //ID du l'écriture du mot %MW1971 dans le plugin MODBUS
7 $cmd2->execCmd(); //exécution de la commande d'écriture %MW1971
Ce qui ne fonctionne pas c'est l'écriture dans l'automate.
Dans le paramètre de l'action d'écriture j'ai essayé : variable(MW_1970), $MW_1970, global MW_1970, global $MW_1970 et getdata(MW_1970)
J'ai essayé de mettre une valeur numérique dans le paramètre (ex. 18) et en exécutant le script, le 18 descend bien dans l'automate.
Sais-tu la façon dont il faut faire pour faire redescendre ma variable global MW_1970 dans le paramètre d'écriture du plugin MODBUS ?
Merci d'avance !
Pour Bebel, j'ai enfin trouvé l'onglet CODE, je ne regardais pas au bon endroit, il faut aller dans ADMINISTRATION/LOG et je regardais directement dans le bouton LOG dans le scénario...
Donc j'ai modifié un peu le script et vérifié que les variables sont bien affectées :
1 $cmd1=cmd::byId(70); //ID de la lecture du mot %MW1970 dans le plugin MODBUS
2 $result1=$cmd1->execCmd(); //affectation du mot %MW1970 dans variable locale $result1
3 log::add('Code','[debug]','ID70 : '.$result1); //vérif affectation ds LOG
4 $scenario->setData(MW_1970,($result1)); //affectation de %MW1970 dans variable global MW_1970
5 log::add('Code','[debug]','V Global MW_1970 : '.$scenario->getData(MW_1970)); //vérif affectation dans LOG
6 $cmd2=cmd::byId(72); //ID du l'écriture du mot %MW1971 dans le plugin MODBUS
7 $cmd2->execCmd(); //exécution de la commande d'écriture %MW1971
Ce qui ne fonctionne pas c'est l'écriture dans l'automate.
Dans le paramètre de l'action d'écriture j'ai essayé : variable(MW_1970), $MW_1970, global MW_1970, global $MW_1970 et getdata(MW_1970)
J'ai essayé de mettre une valeur numérique dans le paramètre (ex. 18) et en exécutant le script, le 18 descend bien dans l'automate.
Sais-tu la façon dont il faut faire pour faire redescendre ma variable global MW_1970 dans le paramètre d'écriture du plugin MODBUS ?
Merci d'avance !
Re: [Officiel] Plugin Modbus
SI j'ai bien compris quand tu met à la place de [variable (MW_1970)] 18 la valeur 18 est bien envoyé dans l'automate .
JEEDOM (que la domotique soit avec toi )
Re: [Officiel] Plugin Modbus
Voilà c'est bien ça
En mettant 18 et en exécutant le script j'ai bien 18 Dans l'automate et dans les log j'ai bien ma valeur du mw1970 dans la variable globale
Par contre des que je met variable(mw_1970) j'ai plus rien
L'écriture ne fonctionne pas
En mettant 18 et en exécutant le script j'ai bien 18 Dans l'automate et dans les log j'ai bien ma valeur du mw1970 dans la variable globale
Par contre des que je met variable(mw_1970) j'ai plus rien
L'écriture ne fonctionne pas
Re: [Officiel] Plugin Modbus
je viens de tester chez moi et j'ai le même résultat . je pense que ça vient du plugin .
je vois avec Tmartinez s'il peut jeter un oeuil .
je vois avec Tmartinez s'il peut jeter un oeuil .
JEEDOM (que la domotique soit avec toi )
Re: [Officiel] Plugin Modbus
Je viens de mettre à jour le plugin. Il est désormais possible de choisir un équipement comme valeur.
Merci de me dire si ça fonctionne chez vous et correspond bien à votre besoin.
Merci de me dire si ça fonctionne chez vous et correspond bien à votre besoin.
Re: [Officiel] Plugin Modbus
J'ai testé ça hier et ça fonctionne !
C'est exactement ce que je voulais.
Merci Tmartinez et Bebel !
Par contre j'ai une ultime question : est-ce que c'est normal que le rafraichissement des valeurs numériques n'est pas du tout le même (beaucoup plus long) que les valeurs booléennes ?
(j'ai réglé un pooling de 5s et les valeurs numériques mettent au moins 30 ou 40s avant d'être raffraichies.
C'est exactement ce que je voulais.
Merci Tmartinez et Bebel !
Par contre j'ai une ultime question : est-ce que c'est normal que le rafraichissement des valeurs numériques n'est pas du tout le même (beaucoup plus long) que les valeurs booléennes ?
(j'ai réglé un pooling de 5s et les valeurs numériques mettent au moins 30 ou 40s avant d'être raffraichies.
Re: [Officiel] Plugin Modbus
Peux tu expliqué comment tu as fais de renvoie de valeur de %MW1970 à %MW1971. scénario ou direct dans le plugin ?
JEEDOM (que la domotique soit avec toi )
Re: [Officiel] Plugin Modbus
Bonjour tmartinez,
Je viens d'essayer et la nouvelle fonctionnalité ne fonctionne pas chez moi (l'envois de la valeur d'un équipement directement en modbus).
En fait j'ai essayé d'envoyer directement la valeur d'un équipement (mysensor) ou en passant par un virtuel, dans les deux cas cela ne marche pas.
D'après ce que j'ai pu voir, c'est l'action "d'envois" qui n'est pas effectuée : En créant un virtuel "action" sur l'ID de la commande modbus, je peux envoyer la valeur de l'équipement mis en variable en cliquant sur "tester" de mon équipement virtuel.
Ma phrase est peut être pas claire... :
Je créé un équipement modbus à l'identique de ton exemple (que j'appel test comme toi), je met dans les paramètres mon équipement MySensor.
J'attend que mon équipement Mysensor rafraîchisse la valeur, rien ne passe.
Comme on n'a pas (ou plus) de bouton "tester" à côté de la commande, je crée un virtuel action en mettant ma commande "test" comme équipement. là j'ai un bouton "tester". Quand je clique sur "tester" la valeur de mon équipement MySensor est bien transmise en Modbus ( à chaque fois que je clique).
J'ai redémarré, activé / desactivé le plugin, redémarré le daemon etc.
J'espère t'avoir donné quelques pistes pour trouver mon problème.
Je viens d'essayer et la nouvelle fonctionnalité ne fonctionne pas chez moi (l'envois de la valeur d'un équipement directement en modbus).
En fait j'ai essayé d'envoyer directement la valeur d'un équipement (mysensor) ou en passant par un virtuel, dans les deux cas cela ne marche pas.
D'après ce que j'ai pu voir, c'est l'action "d'envois" qui n'est pas effectuée : En créant un virtuel "action" sur l'ID de la commande modbus, je peux envoyer la valeur de l'équipement mis en variable en cliquant sur "tester" de mon équipement virtuel.
Ma phrase est peut être pas claire... :
Je créé un équipement modbus à l'identique de ton exemple (que j'appel test comme toi), je met dans les paramètres mon équipement MySensor.
J'attend que mon équipement Mysensor rafraîchisse la valeur, rien ne passe.
Comme on n'a pas (ou plus) de bouton "tester" à côté de la commande, je crée un virtuel action en mettant ma commande "test" comme équipement. là j'ai un bouton "tester". Quand je clique sur "tester" la valeur de mon équipement MySensor est bien transmise en Modbus ( à chaque fois que je clique).
J'ai redémarré, activé / desactivé le plugin, redémarré le daemon etc.
J'espère t'avoir donné quelques pistes pour trouver mon problème.
Qui est en ligne ?
Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 9 invités