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,190)
.json   EKEPC2v6.json (Taille : 27.04 Ko / Téléchargements : 989)
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 63,284 02-07-2026, 09:56 AM
Dernier message: gag

Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
[-]
discussions récentes
prise en charge gateway
Cảm thấy cô đơn? Kết nối ngay ...hande2910 — 03:56 AM
Playing Wordle Unlimited: A S...
Feeling lonely? Connect instan...hande2910 — 03:54 AM
système de pilotage Pilontech ...
Bonjour la Team, je viens vou...STF — 02:51 PM
game
Documentation consistency dese...kemod95673 — 01:48 PM
A Guide to Slope 2 and Beyond:...
A Guide to Slope 2 and Beyond:...rodent22 — 04:21 AM
Playing Wordle Unlimited: A Si...
There's something oddly satisf...mollusk11 — 09:48 AM
game
Bonjour à tous ! En parcourant...xxxbpss — 11:01 PM
game
Центральна Австралія завжди зд...meoowu77 — 12:38 PM
Pochette Switch Personnalisabl...
Acheter son premier accessoire...gestaltenselbstdiy — 03:17 AM
Herren Hemd selbst gestalten: ...
Standardgrößen von der Stange ...gestaltenselbstdiy — 03:04 AM
Install Deye Pylontech chez u...
Hello, Il faudrait que tu j...jlm — 06:24 PM

[-]
Rechercher








(Advanced Search)

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

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

[-]
Statistics
» Members: 1,141
» Latest member: Cobus1
» Forum threads: 904
» Forum posts: 7,962

Full Statistics

[-]
Latest Threads
prise en charge gateway
Last Post: hande2910
Hier 03:56 AM
» Replies: 2
» Views: 2370
Playing Wordle Unlimited: A Simple Game ...
Last Post: hande2910
Hier 03:54 AM
» Replies: 1
» Views: 171
système de pilotage Pilontech 24V
Last Post: STF
06-11-2026 02:51 PM
» Replies: 0
» Views: 134
game
Last Post: kemod95673
05-11-2026 01:48 PM
» Replies: 1
» Views: 267
A Guide to Slope 2 and Beyond: Mastering...
Last Post: rodent22
05-11-2026 04:21 AM
» Replies: 0
» Views: 177
game
Last Post: meoowu77
01-11-2026 12:38 PM
» Replies: 1
» Views: 521
Pochette Switch Personnalisable : Guide ...
Last Post: gestaltenselbstdiy
29-10-2026 03:17 AM
» Replies: 0
» Views: 305
Herren Hemd selbst gestalten: Stil & Pas...
Last Post: gestaltenselbstdiy
29-10-2026 03:04 AM
» Replies: 0
» Views: 275
Install Deye Pylontech chez un client, e...
Last Post: jlm
27-10-2026 06:24 PM
» Replies: 1
» Views: 436
Intégration SynSynk/DEYE avec HA ou ...
Last Post: Anna202
20-10-2026 10:57 AM
» Replies: 15
» Views: 24197

>