Hello guest, if you read this it means you are not registered. Click here to register in a few simple steps, you will enjoy all features of our Forum.
Hi Guest this is an announcement for guests !!!

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 :
   


Pièces jointes
.zip   TableEKEPC2 - Pool.zip (Taille : 1.22 Ko / Téléchargements : 1,009)
.json   EKEPC2v6.json (Taille : 27.04 Ko / Téléchargements : 833)
Like 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
RE: Ma Borne DIY ETEK EKEPC2-S - par pflot59 - 19-09-2024, 09:13 AM
RE: Ma Borne DIY ETEK EKEPC2-S - par pflot59 - 26-09-2024, 11:35 PM
RE: Ma Borne DIY ETEK EKEPC2-S - par Patrick56 - 25-03-2026, 07:23 PM

Sujets apparemment similaires…
Sujet Auteur Réponses Affichages Dernier message
  cette borne à ce prix, c'est indécent jlm 41 54,884 02-07-2026, 09:56 AM
Dernier message: gag

Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
[-]
discussions récentes
Mise en service DEYE SUN-8K-S...
Pour la fabrication de la batt...Anna202 — 10:31 AM
Wallbox DYI 32 Ampères avec g...
Pour le moment je n'ai pas enc...Anna202 — 10:27 AM
Aion 2 DPS Guide : Burst, Dégâ...
Dans Aion 2, établir un classe...Stellaol — 08:31 AM
Présentation
Mon installation a évolué depu...yvesma — 10:04 PM
Voici une toute nouvelle vers...
Bonjour Après une semaine de ...yvesma — 09:44 PM
Passer en mode Debug pour plu...
Je n'ai plus de pylontech, mai...jlm — 02:14 PM
Passer en mode Debug pour plu...
this is a very interesting dis...ben thee — 12:30 PM
Bonne année 2026
This is a great chance to wish...Ryan Poole — 10:53 AM
Bonne année 2026
Happy New Year 2026 to you too...Jamieead — 05:59 AM
Voici une toute nouvelle vers...
Pas de soucis Non Les dépôt ...NOLAK — 06:00 PM
Cole Palmer's FC 27 Twitch Str...
Cole Palmer has become one of ...lendzion — 04:37 AM

[-]
Rechercher








(Advanced Search)

[-]
Who's Online
There are currently 404 online users. [Complete List]
» 1 Member(s) | 403 Guest(s)
Avatar

[-]
goals
79.2% of the way to our goal of 10,000 posts!
Only 2,078 posts left to go!

[-]
Statistics
» Members: 1,084
» Latest member: Anna202
» Forum threads: 879
» Forum posts: 7,921

Full Statistics

[-]
Latest Threads
Mise en service DEYE SUN-8K-SG01LP1-EU
Last Post: Anna202
Aujourd’hui 10:31 AM
» Replies: 28
» Views: 37466
Wallbox DYI 32 Ampères avec gestion dyna...
Last Post: Anna202
Aujourd’hui 10:27 AM
» Replies: 60
» Views: 79422
Aion 2 DPS Guide : Burst, Dégâts Soutenu...
Last Post: Stellaol
Aujourd’hui 08:31 AM
» Replies: 0
» Views: 25
Présentation
Last Post: yvesma
Hier 10:04 PM
» Replies: 12
» Views: 16717
Voici une toute nouvelle version de Smar...
Last Post: yvesma
Hier 09:44 PM
» Replies: 79
» Views: 71345
Passer en mode Debug pour plus de comman...
Last Post: jlm
17-09-2026 02:14 PM
» Replies: 2
» Views: 3185
Bonne année 2026
Last Post: Ryan Poole
17-09-2026 10:53 AM
» Replies: 4
» Views: 3845
Cole Palmer's FC 27 Twitch Stream Ends E...
Last Post: lendzion
16-09-2026 04:37 AM
» Replies: 0
» Views: 84
choix onduleur
Last Post: shummiclaire
08-09-2026 10:25 AM
» Replies: 25
» Views: 27817
Unleash Your Inner Drift King: A Deep Di...
Last Post: Igor Zakharov
07-09-2026 03:23 AM
» Replies: 0
» Views: 174

>