Bonjour Mr. le visiteur, si vous lisez ceci, cela signifie que vous n'êtes pas enregistré. Cliquez ici pour vous inscrire en quelques étapes simples, vous pourrez profiter de toutes les fonctionnalités de notre Forum. Vous pourrez évidemment nous faire partager vos connaissances avec nous ! et voir les images ou vidéos postées


Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
Ma Borne DIY ETEK EKEPC2-S
#3
Partie 3 : Node-RED / Modbus / MQTT  [Image: bomb.gif]

EDIT : Il y a quelque capture qui ne sont plus au totalement au gout du jour (La partie Read CSV File a été légèrement modifié, passage du chemin et du nom de fichier en variable par exemple, mais au fond rien de bien méchant)

Mon Introduction :
Je suis issue du monde industriel, je programme habituellement sur automate, j'ai aussi quelque programme a mon actif VB6 ou VB.NET pour le boulot, mais je débute sur HA/NodeRED/MQTT 

Pour info je programme actuellement le plus sous Codesys sur des automates WAGO ou aussi sur Raspberry.
Codesys est un outil de programmation développer par une société allemande et qui vend ensuite son outil a des marques industriel. 

L'avantage de cet outil, c'est qu'il est adopté par plusieurs constructeurs, et que l'on est pas dépaysé lorsque l'on bascule d'un automate a un autre qui utilise Codesys. 
Codesys utilise plusieurs langage : Grafcet/Ladder (Langage Contact)/CFC/FBD (Sorte de Bloc de fonction a la NodeRED  Mad ), et aussi du S.T (Langage Structuré : issue du Pascal)

A noter que de nos jours, de plus en plus d'automate tourne sur des bases linux, ce qui permet aux farbiquants de proposer autre choses a leur client : NodeRED/MQTT peuvent parfois remplacer le Codesys traditionnel par exemple.

Mon installation domotique :
Je sais plus si j'en ai parlé mais mon installation domotique contient :
  • Du KNX (Gestion Eclairage, VR, Meteo, Prise Commandé / PC avec suivi conso
  • Un Automate WAGO (Forcément Kiss )
  • Un superviseur Home Assistant qui tournent sous Proxmox (Pour le moment le Minimum Syndical)
  • PV 
  • Chaudiere en Modbus RTU
  • Gestion Cuve EDP
  • ...


Node-RED:
Je suis en train de regarder comment intégrer ma borne ETEK dans mon install, étant en convalescence je prend un peu de temps pour ca histoire d'apprendre un peu.

Comme j'aime bien faire autrement et que je ne veux pas être lié a HA (on sait jamais) , j'ai envie de procéder comme ca :
  • Communication : Controleur ETEK en Modbus TCP via un module Elfin EE11A ou EW11A
  • La liaison modbus sera gérer sous Node-RED (Node-RED est installé dans un container LXC sous Proxmox, il est donc indépendant de HA)
  • La table de valeur que je veux remonter sera stocker dans MQTT
  • L'ecriture d'un registre pour une Commande ou un Réglage dans le module ETEK se fera uniquement sur Changement d'état
  • L'intégration dans HA se fera en créant un Device MQTT

Je n'ai pas choisi le truc le plus simple pour débuté (enfin avec le cahier des charges que je me suis imposé), 

A la base le programe de Lecture/Ecriture Modbus/MQTT pourrait être très simple.
Mais ... il y a un mais.

Lorsqu'on lit les valeurs sur le Modbus, si ensuite on les publies sur MQTT, derrière vue que l'on est abonné a un Topic qu'on veut aussi pouvoir écrire, on recoit une notif , si je ferme les yeux, du coup ca déclenche une écriture sur le modbus dans mon device.   Devil

Et ca il faut clairement éviter. Car on ne sait pas comment le Device va gérer ca.
Si il est intelligent et que la valeur ne change pas il ne fera rien.
Dans le pire des cas ca fait une ecriture, et une écriture dans de la mémoire non volatile, suivant le type de mémoire et bien on peut rapidement cramer une puce. 
Certains fabriquants s'en sont déjà mordus les doigts.


Du coup il faut que je j'implémente un système d'ecriture "OnChange", je dois donc mémoriser la dernière valeur, et la comparer avec celle que je viens de recevoir.
Sur le papier c'est pas compliqué quand on connait bien un langage de prog, mais là je débute avec Node-RED et c'est pas forcément le truc le plus simple a faire pour débuter...

Du coup je me pose la question aussi de mon Publish vers MQTT, je peux éventuellement faire aussi pareil, un Publish OnChange ou un mix [OnChange ou OnDelay], a voir.

Mon Flow et composé de plusieurs partie : 
Config : Ca me permet de régler quelques variables :
  • iUnitID (Du Controleur ETEK)
  • sBaseTopic : Le Nom du Topic de base dans MQTT
  • bEnableAutoRepeat : Permet de faire un seul Cycle a la fois (Util pour la mise au point)
  • iNumberOfPool : Le nom de Pool (Nb de groupe de question a gérer)

   
Sélection Manuel de Pool a Utiliser :
   

Debut du Cycle : Lecture des Fichiers CSV
J'ai crée 2 fichiers CSV qui contiennent la table de registre du module ETEK.
Les 2 Fichiers sont lu, puis stocker des 2 tableaux variables au niveau du flow.

   

Je mettrais en lien le fichier Google Sheet que j'ai utilisé.

Le fichier contient des lignes de ce type : 

Code :
SR141_Current_working_status
SW109_Max_Output_Charger_PWM

XX140_Software_version
94_kWH_meter_power_address

Une ligne correspond a un Registre, donc un futur Topic coté MQTT
Une ligne est constitué de :
  • 2 Caractères (SR,SW)
  • Le N° du Registre
  • Le Nom du Registre

Les 2 1er Caractère reconnu est interpretté dans le flow sont :
  • SR : Single Read : Lecture Registre 16Bits
  • SW: Single Write : Ecriture Registre 16Bits
  • XX: Pour un registre que je ne veux 
  • Rien : Pour un registre dont je n'ai pas décidé si j'allais le traiter ou pas.

Lecture de Toute la Table du Controleur ETEK : Routine Lancé en continu si AutoRepeat=True
Ce cycle commence a la fin du Cycle de lecture des fichier CSV ou Manuellement

J'ai mis des commentaires dans toutes les fonctions, au final je me retrouve avec pas mal de JS  Gross .
  • La Fonction 1 : Permet definir les Bonne Adresses a envoyer au module Modbus Flex Getter
  • La Fonction 2 : Recupere le Résultat de la Requete Modbus, stocke ou non les valeur recu et les envoie ou non sur MQTT après avoir généré un topic.

Au passage je stocke
-les valeurs lu dans un dossier : "stat"
-les valeurs qui sont ecrites dans MQTT dans un dossier : "cmnd"
Ca facilite la gestion des écritures :

Exemple : HA envoie une commande sur \MonDeviceETEK\cmnd\SW80_CommandeStart
Je la recoi sous NodeRED, je envoie ensuite un Modbus Write sur le registre 80, On obtient alors ensuite si tout va bien une Mise a jour du status
sur le prochain cycle de lecture.
  • La Fonction 3 : Active le pool suivant et lance le cycle suivant

   

Modbus Write OnChange : A la reception d'un Publish depuis MQTT

Dans ce bloc, une seul fonction qui décode le message MQTT
Je vérifie si le message recu doit etre surveillé (SW)
Si j'ai déjà stocké une valeur, si oui alors je la compare. 
J'envoie une écriture sur le Modbus TCP uniquement si la valeur est différente de la précédente.

   

Le Flux Complet v6: [MAJ 25/08/24]
   

Changelog
v6 25/08/24 :
  • Le Nom et le Chemin des 2 Fichiers de Pool sont maintenant en variable dans Config
  • Le/Les Topics MQTT sont dans des variables d'environment du Flow
  • Je json du Flux a été posté.
  • Les 2 Fichiers CSV qui contiennent la Table de registre a intérroger

TODO List :
  • Mise en place du Mode Heure Creuse/Charge Instantanée/Arrêt 
  • Interfaçage avec info Linky
  • Reflexion sur la mise en forme des valeurs : Est-ce que je fais ca ici ou dans HA

Ce flux necessite : 
  • node-red-contrib-config
  • node-red-contrib-modbus
  • node-red-contrib-string

Pour le Faire Fonctionner, ne pas oublier de configurer :
-Noeud Config
-Environment Variable du Flow
-Le Serveur MQTT (Publish et Subscrib)
-Les 2 Fonctions Modbus Flex Getter & Write

Voici les Variables a Configurer :
   
jlm aime ce post


Pièces jointes
.zip   TableEKEPC2 - Pool.zip (Taille : 1.22 Ko / Téléchargements : 28)
.json   EKEPC2v6.json (Taille : 27.04 Ko / Téléchargements : 16)
Répondre


Messages dans ce sujet
Ma Borne DIY ETEK EKEPC2-S - par pflot59 - 21-08-2024, 02:04 PM
RE: Ma Borne DIY ETEK EKEPC2-S - par pflot59 - 21-08-2024, 03:24 PM
RE: Ma Borne DIY ETEK EKEPC2-S - par pflot59 - 21-08-2024, 05:12 PM
RE: Ma Borne DIY ETEK EKEPC2-S - par pflot59 - 21-08-2024, 05:47 PM
RE: Ma Borne DIY ETEK EKEPC2-S - par pflot59 - 21-08-2024, 05:48 PM
RE: Ma Borne DIY ETEK EKEPC2-S - par pflot59 - 21-08-2024, 05:59 PM
RE: Ma Borne DIY ETEK EKEPC2-S - par pflot59 - 21-08-2024, 06:40 PM
RE: Ma Borne DIY ETEK EKEPC2-S - par pflot59 - 21-08-2024, 06:50 PM
RE: Ma Borne DIY ETEK EKEPC2-S - par jlm - 24-08-2024, 08:24 AM
RE: Ma Borne DIY ETEK EKEPC2-S - par pflot59 - 25-08-2024, 12:01 PM
RE: Ma Borne DIY ETEK EKEPC2-S - par pflot59 - 28-08-2024, 10:07 AM
RE: Ma Borne DIY ETEK EKEPC2-S - par jlm - 28-08-2024, 11:38 AM
RE: Ma Borne DIY ETEK EKEPC2-S - par pflot59 - 28-08-2024, 12:10 PM
RE: Ma Borne DIY ETEK EKEPC2-S - par jlm - 28-08-2024, 12:53 PM
RE: Ma Borne DIY ETEK EKEPC2-S - par pflot59 - 28-08-2024, 11:46 PM
RE: Ma Borne DIY ETEK EKEPC2-S - par jlm - 29-08-2024, 10:42 AM
RE: Ma Borne DIY ETEK EKEPC2-S - par pflot59 - 29-08-2024, 10:58 AM
RE: Ma Borne DIY ETEK EKEPC2-S - par jlm - 29-08-2024, 11:42 AM
RE: Ma Borne DIY ETEK EKEPC2-S - par pflot59 - 29-08-2024, 06:14 PM
RE: Ma Borne DIY ETEK EKEPC2-S - par bishnoi - 31-08-2024, 09:52 AM
RE: Ma Borne DIY ETEK EKEPC2-S - par pflot59 - 03-09-2024, 10:29 AM
RE: Ma Borne DIY ETEK EKEPC2-S - par jlm - 03-09-2024, 01:35 PM
RE: Ma Borne DIY ETEK EKEPC2-S - par pflot59 - 03-09-2024, 07:22 PM
RE: Ma Borne DIY ETEK EKEPC2-S - par jlm - 03-09-2024, 09:07 PM
RE: Ma Borne DIY ETEK EKEPC2-S - par pflot59 - 04-09-2024, 11:05 AM
RE: Ma Borne DIY ETEK EKEPC2-S - par jlm - 04-09-2024, 01:26 PM
RE: Ma Borne DIY ETEK EKEPC2-S - par pflot59 - 04-09-2024, 03:02 PM
RE: Ma Borne DIY ETEK EKEPC2-S - par bishnoi - 04-09-2024, 03:36 PM
RE: Ma Borne DIY ETEK EKEPC2-S - par pflot59 - 05-09-2024, 09:17 AM
RE: Ma Borne DIY ETEK EKEPC2-S - par pflot59 - 05-09-2024, 12:39 PM
RE: Ma Borne DIY ETEK EKEPC2-S - par pflot59 - 06-09-2024, 09:52 AM
RE: Ma Borne DIY ETEK EKEPC2-S - par bishnoi - 06-09-2024, 05:52 PM
RE: Ma Borne DIY ETEK EKEPC2-S - par jlm - 06-09-2024, 07:06 PM
RE: Ma Borne DIY ETEK EKEPC2-S - par pflot59 - 07-09-2024, 06:24 PM
RE: Ma Borne DIY ETEK EKEPC2-S - par pflot59 - 10-09-2024, 09:37 AM
RE: Ma Borne DIY ETEK EKEPC2-S - par pflot59 - 11-09-2024, 06:36 AM
RE: Ma Borne DIY ETEK EKEPC2-S - par pflot59 - 17-09-2024, 03:47 PM
RE: Ma Borne DIY ETEK EKEPC2-S - par pflot59 - 18-09-2024, 08:43 AM
RE: Ma Borne DIY ETEK EKEPC2-S - par jlm - 18-09-2024, 10:16 PM

Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
[-]
Synthèse
Please login or register to use this functionality.

[-]
discussions récentes
oh oh !...."ya" t'il quelqu'u...
c'est cool, moi qui avait cl...LIVINGEYES — 09:55 PM
Compteur Energie CHINT DDSU666
voici le DDSU666 pour Solax:bishnoi — 07:33 PM
cette borne à ce prix, c'est...
alors j'ai cette info je la ...pflot59 — 03:47 PM
cette borne à ce prix, c'est...
alors j'ai cette info je la ti...vavann — 03:01 PM
cette borne à ce prix, c'est...
Oui mais bon c'est pas moi qui...pflot59 — 02:19 PM
cette borne à ce prix, c'est...
j'ai pas remarqué de déco fin ...vavann — 02:11 PM
Besoin de Conseil technique
Bonjour a tous Voila mon in...LIVINGEYES — 01:20 PM
plus de cycle live depuis la ...
Merci pour ton retour ! Je not...NOLAK — 12:00 PM
oh oh !...."ya" t'il quelqu'u...
c'est cool, moi qui avait clai...jlm — 11:53 AM
oh oh !...."ya" t'il quelqu'u...
Ben moi pas le choix c'etait s...LIVINGEYES — 11:34 AM
plus de cycle live depuis la ...
Sorry, j'ai eu beaucoup de c...LIVINGEYES — 10:14 AM

[-]
Rechercher








(Advanced Search)

[-]
Who's Online
There are currently no members online.

[-]
goals
91.3% of the way to our goal of 7,000 posts!
Only 612 posts left to go!

[-]
Statistics
» Members: 593
» Latest member: francis
» Forum threads: 691
» Forum posts: 6,384

Full Statistics

>