Comme annoncé, ce forum est passé en lecture seule au 1er janvier 2020. Désormais nous vous invitons à vous rendre sur notre nouvelle page communauté :
Image

A très bientôt !

[Plugin Tiers][Sujet Principal] Plugin Modbus

Pour échanger sur les plugins classés en catégorie "Protocoles domotiques"
Avatar de l’utilisateur
Bebel27
Actif
Messages : 908
Inscription : 19 oct. 2014, 18:04
Localisation : Normandie

Re: [Officiel] Plugin Modbus

Message par Bebel27 » 24 févr. 2015, 01:01

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 .
Pièces jointes
Modif modbus.png
Modif modbus.png (24.07 Kio) Consulté 1203 fois

JEEDOM (que la domotique soit avec toi )

Avatar de l’utilisateur
tmartinez
Modérateur
Messages : 1226
Inscription : 08 juil. 2014, 11:22
Localisation : Limonest

Re: [Officiel] Plugin Modbus

Message par tmartinez » 24 févr. 2015, 01:05

MErci @Bebel27 !
Jeedom sous Proxmox
43 Modules Z-Wave / 1x RfxCom / 20 devices connectés
Mon matériel

sam1989
Timide
Messages : 14
Inscription : 26 nov. 2014, 14:47

Re: [Officiel] Plugin Modbus

Message par sam1989 » 28 févr. 2015, 23:44

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 !
Merci beaucoup TMartinez pour la mise à jour !!!
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 ?

Avatar de l’utilisateur
Bebel27
Actif
Messages : 908
Inscription : 19 oct. 2014, 18:04
Localisation : Normandie

Re: [Officiel] Plugin Modbus

Message par Bebel27 » 01 mars 2015, 09:26

Salut sam1989
je pense qu'avec un scénario c'est possible de faire ce que tu souhaites

JEEDOM (que la domotique soit avec toi )

sam1989
Timide
Messages : 14
Inscription : 26 nov. 2014, 14:47

Re: [Officiel] Plugin Modbus

Message par sam1989 » 02 mars 2015, 11:49

Et tu ferais comment Bebel27 ?
En ajoutant un libélé après la variable ?
Du genre ça #[AUTOMATE][API1][MW1970][la_variable_a_recopier]# ?

Avatar de l’utilisateur
Bebel27
Actif
Messages : 908
Inscription : 19 oct. 2014, 18:04
Localisation : Normandie

Re: [Officiel] Plugin Modbus

Message par Bebel27 » 02 mars 2015, 18:56

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 :D

JEEDOM (que la domotique soit avec toi )

sam1989
Timide
Messages : 14
Inscription : 26 nov. 2014, 14:47

Re: [Officiel] Plugin Modbus

Message par sam1989 » 03 mars 2015, 20:01

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
Image

Pour le plugin MODBUS
Image

Avatar de l’utilisateur
Bebel27
Actif
Messages : 908
Inscription : 19 oct. 2014, 18:04
Localisation : Normandie

Re: [Officiel] Plugin Modbus

Message par Bebel27 » 03 mars 2015, 21:16

Remplace ça :
$id=07;
$cmd=cmd::byId($id);

Par ça

$cmd =cmd::byString('#[AUTOMATE][API1][MW1970]#');

JEEDOM (que la domotique soit avec toi )

sam1989
Timide
Messages : 14
Inscription : 26 nov. 2014, 14:47

Re: [Officiel] Plugin Modbus

Message par sam1989 » 03 mars 2015, 22:17

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 ! :D

Avatar de l’utilisateur
Bebel27
Actif
Messages : 908
Inscription : 19 oct. 2014, 18:04
Localisation : Normandie

Re: [Officiel] Plugin Modbus

Message par Bebel27 » 04 mars 2015, 20:52

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é.

JEEDOM (que la domotique soit avec toi )

sam1989
Timide
Messages : 14
Inscription : 26 nov. 2014, 14:47

Re: [Officiel] Plugin Modbus

Message par sam1989 » 04 mars 2015, 23:14

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));

Avatar de l’utilisateur
Bebel27
Actif
Messages : 908
Inscription : 19 oct. 2014, 18:04
Localisation : Normandie

Re: [Officiel] Plugin Modbus

Message par Bebel27 » 05 mars 2015, 15:56

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.

JEEDOM (que la domotique soit avec toi )

sam1989
Timide
Messages : 14
Inscription : 26 nov. 2014, 14:47

Re: [Officiel] Plugin Modbus

Message par sam1989 » 08 mars 2015, 22:41

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 !

Avatar de l’utilisateur
Bebel27
Actif
Messages : 908
Inscription : 19 oct. 2014, 18:04
Localisation : Normandie

Re: [Officiel] Plugin Modbus

Message par Bebel27 » 08 mars 2015, 22:59

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 )

sam1989
Timide
Messages : 14
Inscription : 26 nov. 2014, 14:47

Re: [Officiel] Plugin Modbus

Message par sam1989 » 09 mars 2015, 00:10

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

Avatar de l’utilisateur
Bebel27
Actif
Messages : 908
Inscription : 19 oct. 2014, 18:04
Localisation : Normandie

Re: [Officiel] Plugin Modbus

Message par Bebel27 » 09 mars 2015, 10:02

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 .

JEEDOM (que la domotique soit avec toi )

Avatar de l’utilisateur
tmartinez
Modérateur
Messages : 1226
Inscription : 08 juil. 2014, 11:22
Localisation : Limonest

Re: [Officiel] Plugin Modbus

Message par tmartinez » 09 mars 2015, 22:59

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.
Capture d’écran 2015-03-09 à 22.55.55.png
Capture d’écran 2015-03-09 à 22.55.55.png (53.29 Kio) Consulté 1096 fois
Jeedom sous Proxmox
43 Modules Z-Wave / 1x RfxCom / 20 devices connectés
Mon matériel

sam1989
Timide
Messages : 14
Inscription : 26 nov. 2014, 14:47

Re: [Officiel] Plugin Modbus

Message par sam1989 » 11 mars 2015, 11:03

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.

Avatar de l’utilisateur
Bebel27
Actif
Messages : 908
Inscription : 19 oct. 2014, 18:04
Localisation : Normandie

Re: [Officiel] Plugin Modbus

Message par Bebel27 » 11 mars 2015, 15:24

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 )

alex51
Timide
Messages : 30
Inscription : 03 oct. 2014, 16:58

Re: [Officiel] Plugin Modbus

Message par alex51 » 11 mars 2015, 20:13

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.

Répondre

Revenir vers « [Catégorie] Protocoles domotiques »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 9 invités