{"id":3505,"date":"2025-03-01T19:56:56","date_gmt":"2025-03-01T18:56:56","guid":{"rendered":"https:\/\/domo.rem81.com\/?p=3505"},"modified":"2026-01-15T17:25:37","modified_gmt":"2026-01-15T16:25:37","slug":"photovoltaique-gestion-de-mon-systeme-solaire-victron-avec-node-red-partie-4-calcul-du-niveau-de-charge-batterie","status":"publish","type":"post","link":"https:\/\/domo.rem81.com\/index.php\/2025\/03\/01\/photovoltaique-gestion-de-mon-systeme-solaire-victron-avec-node-red-partie-4-calcul-du-niveau-de-charge-batterie\/","title":{"rendered":"Photovoltaique-Gestion de mon Syst\u00e8me Solaire Victron avec Node-RED : Partie 4 &#8211; Calcul du Niveau de charge batterie(obsol\u00e8te)"},"content":{"rendered":"\n\n\n\n<h1 class=\"wp-block-heading\">Update:<\/h1>\n\n\n\n<p>Voir mon nouvel article sur le sujet: <\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-wp-embed is-provider-domo-rem-81 wp-block-embed-domo-rem-81\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"s1jgJgsQf1\"><a href=\"https:\/\/domo.rem81.com\/index.php\/2026\/01\/12\/ha-integrer-et-superviser-un-systeme-victron-dans-home-assistant-configuration-mqtt-v2026\/\">HA-Int\u00e9grer et superviser un syst\u00e8me Victron dans Home Assistant : Configuration MQTT -V2026<\/a><\/blockquote><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; visibility: hidden;\" title=\"\u00ab\u00a0HA-Int\u00e9grer et superviser un syst\u00e8me Victron dans Home Assistant : Configuration MQTT -V2026\u00a0\u00bb &#8212; Domo Rem81\" src=\"https:\/\/domo.rem81.com\/index.php\/2026\/01\/12\/ha-integrer-et-superviser-un-systeme-victron-dans-home-assistant-configuration-mqtt-v2026\/embed\/#?secret=YM141wFUDJ#?secret=s1jgJgsQf1\" data-secret=\"s1jgJgsQf1\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\">Intro<\/h1>\n\n\n\n<p>Sur mon blog domo.rem81.com, je partage mes projets domotiques pour rendre ma maison plus intelligente et \u00e9conome. Apr\u00e8s avoir pr\u00e9sent\u00e9 le flow <a href=\"https:\/\/domo.rem81.com\/index.php\/2025\/03\/27\/photovoltaique-gestion-de-mon-systeme-solaire-victron-avec-node-red-partie-1-collecte-des-donnees\/\" data-type=\"link\" data-id=\"https:\/\/domo.rem81.com\/index.php\/2025\/03\/27\/photovoltaique-gestion-de-mon-systeme-solaire-victron-avec-node-red-partie-1-collecte-des-donnees\/\" target=\"_blank\" rel=\"noreferrer noopener\">\u00ab\u00a0Communs\u00a0\u00bb<\/a> pour la collecte des donn\u00e9es g\u00e9n\u00e9rales, le flow \u00ab\u00a0<a href=\"https:\/\/domo.rem81.com\/index.php\/2025\/03\/27\/photovoltaique-gestion-de-mon-systeme-solaire-victron-avec-node-red-partie-2-gestion-des-batteries\/\" target=\"_blank\" rel=\"noreferrer noopener\">Batteries<\/a>\u00a0\u00bb pour la gestion de ma batterie, et le flow \u00ab\u00a0<a href=\"https:\/\/domo.rem81.com\/index.php\/2025\/03\/27\/photovoltaique-gestion-de-mon-systeme-solaire-victron-avec-node-red-partie-3-prevision-de-la-production-solaire\/\" data-type=\"link\" data-id=\"https:\/\/domo.rem81.com\/index.php\/2025\/03\/27\/photovoltaique-gestion-de-mon-systeme-solaire-victron-avec-node-red-partie-3-prevision-de-la-production-solaire\/\" target=\"_blank\" rel=\"noreferrer noopener\">Pr\u00e9vision production solaire<\/a>\u00a0\u00bb pour estimer ma production PV, je vous pr\u00e9sente aujourd\u2019hui un quatri\u00e8me flow Node-RED, nomm\u00e9 \u00ab\u00a0Calcul du niveau SOC pour la charge programm\u00e9e\u00a0\u00bb. Ce flow g\u00e8re la charge programm\u00e9e (CP) de ma batterie en ajustant dynamiquement le SOC cible et en configurant un planning de charge en fonction de plusieurs param\u00e8tres.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Objectif du flow<\/h1>\n\n\n\n<p>Ce flow a pour but de g\u00e9rer la charge programm\u00e9e de ma batterie via le syst\u00e8me ESS (Energy Storage System) de Victron. Il calcule un SOC cible en fonction de la pr\u00e9vision de production solaire, configure un planning de charge (heure de d\u00e9but, dur\u00e9e, et validation), et active la charge uniquement dans des conditions sp\u00e9cifiques, comme les heures creuses (HC) ou un for\u00e7age manuel \u00e0 100 %. Cela me permet d\u2019optimiser la charge de ma batterie pour minimiser les co\u00fbts et maximiser l\u2019utilisation de l\u2019\u00e9nergie solaire.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Le flow Node-RED<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">Code json<\/h2>\n\n\n\n<p>Vous pouvez copier\/coller le fichier .json en Annexe.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Visualisation du flow<\/h2>\n\n\n\n<p>Voici une capture d\u2019\u00e9cran de mon flow \u00ab\u00a0Charge PGM\u00a0\u00bb dans Node-RED, o\u00f9 vous pouvez voir la disposition des n\u0153uds et le flux des donn\u00e9es entre eux :<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"583\" src=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2025\/03\/image-18-1024x583.png\" alt=\"\" class=\"wp-image-3507\" srcset=\"https:\/\/domo.rem81.com\/wp-content\/uploads\/2025\/03\/image-18-1024x583.png 1024w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2025\/03\/image-18-300x171.png 300w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2025\/03\/image-18-768x437.png 768w, https:\/\/domo.rem81.com\/wp-content\/uploads\/2025\/03\/image-18.png 1084w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Cette capture montre les sous-flux principaux : la r\u00e9ception des donn\u00e9es via MQTT et <code>link in<\/code> (SOC, pr\u00e9vision de production, HC\/HP, etc.), le calcul du SOC cible (n\u0153ud <code>function<\/code> nomm\u00e9 \u00ab\u00a0Calcul Cible SOC\u00a0\u00bb), la configuration du planning de charge (n\u0153uds <code>bigtimer<\/code> et <code>function<\/code> nomm\u00e9 \u00ab\u00a0Convert\u00a0\u00bb), et l\u2019application des param\u00e8tres au syst\u00e8me Victron (n\u0153uds <code>victron-output-ess<\/code>).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Analyse du flow :<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Entr\u00e9es de donn\u00e9es<\/strong> :<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Le SOC de la batterie est re\u00e7u depuis le flow \u00ab\u00a0Batteries\u00a0\u00bb via un n\u0153ud <code>link in<\/code> et stock\u00e9 dans une variable de flux <code>soc<\/code>.<\/li>\n\n\n\n<li>La pr\u00e9vision de production solaire (en kWh) est re\u00e7ue depuis le flow \u00ab\u00a0Pr\u00e9vision production solaire\u00a0\u00bb via un n\u0153ud <code>link in<\/code> et stock\u00e9e dans <code>previ_prod<\/code>.<\/li>\n\n\n\n<li>Plusieurs param\u00e8tres sont re\u00e7us via MQTT depuis Home Assistant :\n<ul class=\"wp-block-list\">\n<li>Heures creuses\/pleines (HC\/HP) sur le topic <code>ha\/mp2\/cp\/hc<\/code>.<\/li>\n\n\n\n<li>Niveau de for\u00e7age pour la charge programm\u00e9e sur <code>ha\/mp2\/cp\/niveauforcagecp1<\/code>.<\/li>\n\n\n\n<li>For\u00e7age \u00e0 100 % sur <code>ha\/mp2\/cp\/forcage100<\/code> (\u00ab\u00a0on\u00a0\u00bb ou \u00ab\u00a0off\u00a0\u00bb).<\/li>\n\n\n\n<li>Validation de la charge programm\u00e9e (ESS) sur <code>ha\/mp2\/cp\/validcp<\/code> (\u00ab\u00a0on\u00a0\u00bb ou \u00ab\u00a0off\u00a0\u00bb).<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Fen\u00eatre horaire de charge<\/strong> :<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Un n\u0153ud <code>bigtimer<\/code> d\u00e9finit une fen\u00eatre horaire de charge de 22h00 \u00e0 6h00 tous les jours. Il envoie <code>1<\/code> (actif) ou <code>0<\/code> (inactif) selon l\u2019heure, stock\u00e9 dans la variable <code>horloge<\/code>.<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Calcul du SOC cible<\/strong> :<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Un n\u0153ud <code>function<\/code> calcule le SOC cible en fonction de la pr\u00e9vision de production (<code>previ_prod<\/code>) et d\u2019un for\u00e7age \u00e9ventuel :\n<ul class=\"wp-block-list\">\n<li>Formule de base : SOC cible = 95 &#8211; 1.5 * pr\u00e9vision de production (en kWh).<\/li>\n\n\n\n<li>Si le for\u00e7age \u00e0 100 % est activ\u00e9 (<code>forc100 = \"on\"<\/code>), le SOC cible est fix\u00e9 au niveau de for\u00e7age (<code>niveauforcp1<\/code>).<\/li>\n\n\n\n<li>Le r\u00e9sultat est arrondi au multiple de 5 le plus proche et limit\u00e9 entre 0 et 100.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Le SOC cible est publi\u00e9 sur le topic <code>mp2\/batteries\/cible_soc<\/code> et appliqu\u00e9 au syst\u00e8me Victron via un n\u0153ud <code>victron-output-ess<\/code>.<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Configuration du planning de charge<\/strong> :<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Un n\u0153ud <code>function<\/code> d\u00e9termine si la charge doit \u00eatre activ\u00e9e en fonction de plusieurs conditions :\n<ul class=\"wp-block-list\">\n<li>Le SOC actuel (<code>soc<\/code>) est inf\u00e9rieur au SOC cible (<code>seuil_soc<\/code>).<\/li>\n\n\n\n<li>La charge programm\u00e9e est valid\u00e9e (<code>valid_cp_ess = \"on\"<\/code>).<\/li>\n\n\n\n<li>On est dans la fen\u00eatre horaire (<code>horloge = 1<\/code>).<\/li>\n\n\n\n<li>On est en heures creuses (<code>hc = \"HC..\"<\/code>).<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Si ces conditions sont remplies, la charge est activ\u00e9e (valeur <code>7<\/code> pour \u00ab\u00a0tous les jours\u00a0\u00bb) ; sinon, elle est d\u00e9sactiv\u00e9e (valeur <code>-7<\/code>).<\/li>\n\n\n\n<li>L\u2019heure de d\u00e9but et la dur\u00e9e de la charge sont \u00e9galement configur\u00e9es :\n<ul class=\"wp-block-list\">\n<li>Par d\u00e9faut, de 22h00 \u00e0 6h00 (8 heures).<\/li>\n\n\n\n<li>Si for\u00e7age \u00e0 100 %, ces valeurs sont fixes (22h00 \u00e0 6h00).<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Ces param\u00e8tres sont appliqu\u00e9s au syst\u00e8me Victron via des n\u0153uds <code>victron-output-ess<\/code> sur les chemins <code>\/Settings\/CGwacs\/BatteryLife\/Schedule\/Charge\/0\/Day<\/code>, <code>\/Start<\/code>, et <code>\/Duration<\/code>.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">D\u00e9tails techniques :<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Calcul du SOC cible<\/strong> : Le script suivant ajuste le SOC cible en fonction de la pr\u00e9vision de production :<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>  let prod = flow.get('previ_prod');\n  const a = 95; \/\/ 80 l'\u00e9t\u00e9\n  const b = 1.5;\n  var state = b * prod;\n  state = a - state; \/\/ SOC cible = 95 - 1.5 * pr\u00e9vision\n  var y = Math.round(state \/ 5) * 5; \/\/ Arrondi au multiple de 5\n  if (y &lt; 15) {\n      y = 0;\n  }\n  if (y &gt; 101) {\n      y = 100;\n  }\n  msg.payload = Math.trunc(y);\n  return &#091;msg];<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Configuration du planning<\/strong> : Le script suivant active ou d\u00e9sactive la charge et configure le planning :<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>  let soc = flow.get('soc');\n  let seuil = flow.get('seuil_soc');\n  let havalid = flow.get('valid_cp_ess');\n  let hc = flow.get('hc');\n  var horloge = flow.get('horloge');\n  var valid = { payload: 7 }; \/\/ Activer tous les jours\n  var devalid = { payload: -7 }; \/\/ D\u00e9sactiver\n  if (soc &lt; seuil &amp;&amp; havalid === \"on\" &amp;&amp; horloge === 1 &amp;&amp; hc == \"HC..\") {\n      return &#091;valid, hdebuts, duree, { payload: \"Actif\" }];\n  } else {\n      return &#091;devalid, hdebuts, duree, { payload: \"Inactif\" }];\n  }<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Brokers MQTT<\/strong> : Les donn\u00e9es sont publi\u00e9es et re\u00e7ues via le broker \u00ab\u00a0MQTTHA\u00a0\u00bb (<code>192.168.0.37:1883<\/code>) pour une int\u00e9gration avec Home Assistant.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Interactions avec les flows pr\u00e9c\u00e9dents :<\/h2>\n\n\n\n<p>Ce flow s\u2019appuie sur les flows pr\u00e9c\u00e9dents pour fonctionner :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Le flow \u00ab\u00a0<a href=\"https:\/\/domo.rem81.com\/index.php\/2025\/03\/27\/photovoltaique-gestion-de-mon-systeme-solaire-victron-avec-node-red-partie-1-collecte-des-donnees\/\" data-type=\"link\" data-id=\"https:\/\/domo.rem81.com\/index.php\/2025\/03\/27\/photovoltaique-gestion-de-mon-systeme-solaire-victron-avec-node-red-partie-1-collecte-des-donnees\/\" target=\"_blank\" rel=\"noreferrer noopener\">Communs<\/a>\u00a0\u00bb ([lien vers l\u2019article \u00ab\u00a0Communs\u00a0\u00bb sur domo.rem81.com]) fournit des donn\u00e9es g\u00e9n\u00e9rales comme l\u2019\u00e9tat du r\u00e9seau, qui pourraient influencer des automatisations li\u00e9es \u00e0 la charge.<\/li>\n\n\n\n<li>Le flow \u00ab\u00a0<a href=\"https:\/\/domo.rem81.com\/index.php\/2025\/03\/27\/photovoltaique-gestion-de-mon-systeme-solaire-victron-avec-node-red-partie-2-gestion-des-batteries\/\" data-type=\"link\" data-id=\"https:\/\/domo.rem81.com\/index.php\/2025\/03\/27\/photovoltaique-gestion-de-mon-systeme-solaire-victron-avec-node-red-partie-2-gestion-des-batteries\/\" target=\"_blank\" rel=\"noreferrer noopener\">Batteries<\/a>\u00a0\u00bb ([lien vers l\u2019article \u00ab\u00a0Batteries\u00a0\u00bb sur domo.rem81.com]) fournit le SOC actuel de la batterie (<code>mp2\/batteries\/soc<\/code>), utilis\u00e9 pour d\u00e9cider si la charge est n\u00e9cessaire.<\/li>\n\n\n\n<li>Le flow \u00ab\u00a0<a href=\"https:\/\/domo.rem81.com\/index.php\/2025\/03\/27\/photovoltaique-gestion-de-mon-systeme-solaire-victron-avec-node-red-partie-3-prevision-de-la-production-solaire\/\" data-type=\"link\" data-id=\"https:\/\/domo.rem81.com\/index.php\/2025\/03\/27\/photovoltaique-gestion-de-mon-systeme-solaire-victron-avec-node-red-partie-3-prevision-de-la-production-solaire\/\" target=\"_blank\" rel=\"noreferrer noopener\">Pr\u00e9vision production solaire<\/a>\u00a0\u00bb ([lien vers l\u2019article \u00ab\u00a0Pr\u00e9vision production solaire\u00a0\u00bb sur domo.rem81.com]) fournit la pr\u00e9vision de production (<code>mp2\/prediction\/prod_total<\/code>), utilis\u00e9e pour ajuster le SOC cible.<\/li>\n<\/ul>\n\n\n\n<h1 class=\"wp-block-heading\">Int\u00e9gration avec Home Assistant<\/h1>\n\n\n\n<p>Ce flow interagit avec Home Assistant via MQTT (broker \u00e0 <code>192.168.0.37:1883<\/code>) :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Il re\u00e7oit des param\u00e8tres comme HC\/HP, le for\u00e7age \u00e0 100 %, et la validation ESS depuis Home Assistant.<\/li>\n\n\n\n<li>Il publie le SOC cible sur <code>mp2\/batteries\/cible_soc<\/code>, que je peux afficher dans un tableau de bord pour suivre l\u2019objectif de charge.<\/li>\n<\/ul>\n\n\n\n<h1 class=\"wp-block-heading\">Pourquoi Node-RED ?<\/h1>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Simplicit\u00e9<\/strong> : Je peux g\u00e9rer des logiques complexes (calcul du SOC cible, planning de charge) sans \u00e9crire de code complexe.<\/li>\n\n\n\n<li><strong>Flexibilit\u00e9<\/strong> : Les n\u0153uds Victron et MQTT s\u2019int\u00e8grent parfaitement avec Home Assistant et le syst\u00e8me ESS.<\/li>\n\n\n\n<li><strong>Visuel<\/strong> : L\u2019interface de Node-RED me permet de voir clairement le flux des donn\u00e9es.<\/li>\n<\/ul>\n\n\n\n<h1 class=\"wp-block-heading\">Palettes Utilis\u00e9es<\/h1>\n\n\n\n<p>Pour reproduire ce flow, vous aurez besoin d\u2019installer les palettes suivantes dans Node-RED :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>node-red-contrib-victron<\/strong> : Fournit les n\u0153uds pour interagir avec les syst\u00e8mes Victron Energy, comme <code>victron-output-ess<\/code>. Installez-la via le gestionnaire de palettes de Node-RED ou avec la commande :<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>  npm install node-red-contrib-victron<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>node-red-node-mqtt<\/strong> : Fournit les n\u0153uds MQTT (<code>mqtt in<\/code>, <code>mqtt out<\/code>, <code>mqtt-broker<\/code>). Cette palette est g\u00e9n\u00e9ralement incluse par d\u00e9faut dans Node-RED, mais si elle est absente, vous pouvez l\u2019installer avec :<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>  npm install node-red-node-mqtt<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>node-red-contrib-bigtimer<\/strong> : Fournit le n\u0153ud <code>bigtimer<\/code> pour g\u00e9rer les fen\u00eatres horaires. Installez-la avec :<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>  npm install node-red-contrib-bigtimer<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>N\u0153uds de base (Core)<\/strong> : Les n\u0153uds comme <code>inject<\/code>, <code>debug<\/code>, <code>function<\/code>, <code>change<\/code>, <code>comment<\/code>, et <code>link in<\/code> sont inclus par d\u00e9faut dans Node-RED.<\/li>\n<\/ul>\n\n\n\n<p><strong>Note<\/strong> : Assurez-vous que votre instance Node-RED a acc\u00e8s \u00e0 votre syst\u00e8me Victron (via DBus ou MQTT, selon votre configuration) pour que les n\u0153uds Victron fonctionnent correctement.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Conclusion<\/h1>\n\n\n\n<p>Ce flow \u00ab\u00a0Calcul du niveau SOC pour la charge programm\u00e9e\u00a0\u00bb est la derni\u00e8re brique de mon syst\u00e8me de gestion d\u2019\u00e9nergie solaire avec Victron Energy. Il me permet de charger ma batterie de mani\u00e8re intelligente, en tenant compte de la production solaire pr\u00e9vue, des heures creuses, et de mes pr\u00e9f\u00e9rences manuelles. Combin\u00e9 aux flows \u00ab\u00a0Communs\u00a0\u00bb, \u00ab\u00a0Batteries\u00a0\u00bb, et \u00ab\u00a0Pr\u00e9vision production solaire\u00a0\u00bb, il offre une solution compl\u00e8te pour surveiller et optimiser mon installation solaire. Si vous avez un syst\u00e8me Victron ou utilisez Node-RED, ce projet pourrait vous inspirer. Des questions ou des id\u00e9es ? Laissez un commentaire sur domo.rem81.com !<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Liste des publications en lien avec cet article:<\/h1>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/domo.rem81.com\/index.php\/2025\/03\/27\/photovoltaique-gestion-de-mon-systeme-solaire-victron-avec-node-red-partie-1-collecte-des-donnees\/\" data-type=\"link\" data-id=\"https:\/\/domo.rem81.com\/index.php\/2025\/03\/27\/photovoltaique-gestion-de-mon-systeme-solaire-victron-avec-node-red-partie-1-collecte-des-donnees\/\" target=\"_blank\" rel=\"noreferrer noopener\">Partie 1: Collecte des donn\u00e9es<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/domo.rem81.com\/index.php\/2025\/03\/27\/photovoltaique-gestion-de-mon-systeme-solaire-victron-avec-node-red-partie-2-gestion-des-batteries\/\" data-type=\"link\" data-id=\"https:\/\/domo.rem81.com\/index.php\/2025\/03\/27\/photovoltaique-gestion-de-mon-systeme-solaire-victron-avec-node-red-partie-2-gestion-des-batteries\/\" target=\"_blank\" rel=\"noreferrer noopener\">Partie 2: Gestion des batteries<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/domo.rem81.com\/index.php\/2025\/03\/27\/photovoltaique-gestion-de-mon-systeme-solaire-victron-avec-node-red-partie-3-prevision-de-la-production-solaire\/\" data-type=\"link\" data-id=\"https:\/\/domo.rem81.com\/index.php\/2025\/03\/27\/photovoltaique-gestion-de-mon-systeme-solaire-victron-avec-node-red-partie-3-prevision-de-la-production-solaire\/\" target=\"_blank\" rel=\"noreferrer noopener\">Partie 3: Pr\u00e9vision de la production solaire<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/domo.rem81.com\/index.php\/2025\/03\/27\/photovoltaique-gestion-de-mon-systeme-solaire-victron-avec-node-red-partie-4-calcul-du-niveau-de-charge-batterie\/\" data-type=\"link\" data-id=\"https:\/\/domo.rem81.com\/index.php\/2025\/03\/27\/photovoltaique-gestion-de-mon-systeme-solaire-victron-avec-node-red-partie-4-calcul-du-niveau-de-charge-batterie\/\" target=\"_blank\" rel=\"noreferrer noopener\">Partie 4: Calcul du Niveau de charge batterie<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/domo.rem81.com\/index.php\/2025\/04\/07\/ha-integrer-et-superviser-un-systeme-victron-dans-home-assistant-configuration-mqtt-modbus-et-automatisation-vers-node-red\/\" data-type=\"link\" data-id=\"https:\/\/domo.rem81.com\/index.php\/2025\/04\/07\/ha-integrer-et-superviser-un-systeme-victron-dans-home-assistant-configuration-mqtt-modbus-et-automatisation-vers-node-red\/\" target=\"_blank\" rel=\"noreferrer noopener\">HA-Int\u00e9grer et superviser un syst\u00e8me Victron dans Home Assistant<\/a><\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Annexe: Code Json<\/h1>\n\n\n\n<pre class=\"wp-block-code\"><code>&#091;\n    {\n        \"id\": \"c277166614a46765\",\n        \"type\": \"tab\",\n        \"label\": \"Calcul du niveau SOC pour la charge programm\u00e9e\",\n        \"disabled\": false,\n        \"info\": \"\",\n        \"env\": &#091;]\n    },\n    {\n        \"id\": \"1c8f9766f23d80aa\",\n        \"type\": \"change\",\n        \"z\": \"c277166614a46765\",\n        \"name\": \"Save cible SOC\",\n        \"rules\": &#091;\n            {\n                \"t\": \"set\",\n                \"p\": \"seuil_soc\",\n                \"pt\": \"flow\",\n                \"to\": \"payload\",\n                \"tot\": \"msg\"\n            }\n        ],\n        \"action\": \"\",\n        \"property\": \"\",\n        \"from\": \"\",\n        \"to\": \"\",\n        \"reg\": false,\n        \"x\": 440,\n        \"y\": 440,\n        \"wires\": &#091;\n            &#091;]\n        ]\n    },\n    {\n        \"id\": \"bebe0e749f63d49e\",\n        \"type\": \"function\",\n        \"z\": \"c277166614a46765\",\n        \"name\": \"Calcul Cible SOC\",\n        \"func\": \"let soc = flow.get('soc')\\nlet prod = flow.get('previ_prod')\\nlet f100 = flow.get('forc100')\\nlet nfcp1 = flow.get('niveauforcp1')\\n\\nconst a = 95; \/\/ 80 l'\u00e9t\u00e9\\nconst b = 1.5;\\n\\nvar state = b * prod ;\\nstate = a - state;\\n\\n\/\/ Force au Niveau forc\u00e9 de charge CP1\\nif (f100 == 'on'){\\nstate=nfcp1;    \\n}\\n\\nvar y= Math.round(state \/ 5) * 5;\\n\\nif (y&lt;15) {\\n    y = 0;\\n}\\nif (y &gt; 101) {\\n    y= 100;\\n}\\n\\n\\nmsg.payload=Math.trunc(y);\\nreturn &#091;msg]\\n\",\n        \"outputs\": 1,\n        \"timeout\": \"\",\n        \"noerr\": 0,\n        \"initialize\": \"\",\n        \"finalize\": \"\",\n        \"libs\": &#091;],\n        \"x\": 250,\n        \"y\": 440,\n        \"wires\": &#091;\n            &#091;\n                \"1c8f9766f23d80aa\",\n                \"71ce34f3aa70271c\"\n            ]\n        ]\n    },\n    {\n        \"id\": \"2e1e2f59392157fe\",\n        \"type\": \"change\",\n        \"z\": \"c277166614a46765\",\n        \"name\": \"Save SOC\",\n        \"rules\": &#091;\n            {\n                \"t\": \"set\",\n                \"p\": \"soc\",\n                \"pt\": \"flow\",\n                \"to\": \"payload\",\n                \"tot\": \"msg\"\n            }\n        ],\n        \"action\": \"\",\n        \"property\": \"\",\n        \"from\": \"\",\n        \"to\": \"\",\n        \"reg\": false,\n        \"x\": 190,\n        \"y\": 380,\n        \"wires\": &#091;\n            &#091;\n                \"86eb1e14cd7a8c7c\",\n                \"bebe0e749f63d49e\"\n            ]\n        ]\n    },\n    {\n        \"id\": \"0f0cd3f3e2e0be6f\",\n        \"type\": \"change\",\n        \"z\": \"c277166614a46765\",\n        \"name\": \"Save previ_prod\",\n        \"rules\": &#091;\n            {\n                \"t\": \"set\",\n                \"p\": \"previ_prod\",\n                \"pt\": \"flow\",\n                \"to\": \"payload\",\n                \"tot\": \"msg\"\n            }\n        ],\n        \"action\": \"\",\n        \"property\": \"\",\n        \"from\": \"\",\n        \"to\": \"\",\n        \"reg\": false,\n        \"x\": 180,\n        \"y\": 500,\n        \"wires\": &#091;\n            &#091;\n                \"c0c9b0b5656d5348\",\n                \"bebe0e749f63d49e\"\n            ]\n        ]\n    },\n    {\n        \"id\": \"71ce34f3aa70271c\",\n        \"type\": \"change\",\n        \"z\": \"c277166614a46765\",\n        \"name\": \"Convert en Nb\",\n        \"rules\": &#091;\n            {\n                \"t\": \"set\",\n                \"p\": \"payload\",\n                \"pt\": \"msg\",\n                \"to\": \"$number($$.payload)\",\n                \"tot\": \"jsonata\"\n            }\n        ],\n        \"action\": \"\",\n        \"property\": \"\",\n        \"from\": \"\",\n        \"to\": \"\",\n        \"reg\": false,\n        \"x\": 620,\n        \"y\": 440,\n        \"wires\": &#091;\n            &#091;\n                \"06e275e40158bf22\",\n                \"3071f2c0b39c7e22\",\n                \"b729115688d16d54\"\n            ]\n        ]\n    },\n    {\n        \"id\": \"86eb1e14cd7a8c7c\",\n        \"type\": \"debug\",\n        \"z\": \"c277166614a46765\",\n        \"name\": \"debug 26\",\n        \"active\": true,\n        \"tosidebar\": true,\n        \"console\": false,\n        \"tostatus\": true,\n        \"complete\": \"payload\",\n        \"targetType\": \"msg\",\n        \"statusVal\": \"payload\",\n        \"statusType\": \"auto\",\n        \"x\": 380,\n        \"y\": 380,\n        \"wires\": &#091;]\n    },\n    {\n        \"id\": \"c0c9b0b5656d5348\",\n        \"type\": \"debug\",\n        \"z\": \"c277166614a46765\",\n        \"name\": \"debug 27\",\n        \"active\": true,\n        \"tosidebar\": true,\n        \"console\": false,\n        \"tostatus\": true,\n        \"complete\": \"payload\",\n        \"targetType\": \"msg\",\n        \"statusVal\": \"payload\",\n        \"statusType\": \"auto\",\n        \"x\": 380,\n        \"y\": 500,\n        \"wires\": &#091;]\n    },\n    {\n        \"id\": \"bde25226922e506d\",\n        \"type\": \"debug\",\n        \"z\": \"c277166614a46765\",\n        \"name\": \"CP0 ON\",\n        \"active\": true,\n        \"tosidebar\": true,\n        \"console\": false,\n        \"tostatus\": true,\n        \"complete\": \"payload\",\n        \"targetType\": \"msg\",\n        \"statusVal\": \"payload\",\n        \"statusType\": \"auto\",\n        \"x\": 900,\n        \"y\": 600,\n        \"wires\": &#091;]\n    },\n    {\n        \"id\": \"252756711fe9b50a\",\n        \"type\": \"function\",\n        \"z\": \"c277166614a46765\",\n        \"name\": \"Convert to MQTT\",\n        \"func\": \"let soc = flow.get('soc')\\nlet seuil = flow.get('seuil_soc')\\nlet val = flow.get('valid_cp_ess')\\nvar horloge = msg.horloge;\\n\\nvar msg1 = { topic: \\\"W\/c0619ab1db0d\/settings\/0\/Settings\/CGwacs\/BatteryLife\/Schedule\/Charge\/0\/Day\\\", payload: { \\\"value\\\": 7 } };\\nvar msg2 = { topic: \\\"W\/c0619ab1db0d\/settings\/0\/Settings\/CGwacs\/BatteryLife\/Schedule\/Charge\/0\/Day\\\", payload: { \\\"value\\\": -7 } };\\nif (soc &lt; seuil &amp;&amp; val===\\\"on\\\" &amp;&amp; horloge === \\\"1\\\" ) {\\n    return &#091;msg1];\\n} else {\\n   return &#091;msg2];\\n}\\n\",\n        \"outputs\": 1,\n        \"noerr\": 0,\n        \"initialize\": \"\",\n        \"finalize\": \"\",\n        \"libs\": &#091;],\n        \"x\": 630,\n        \"y\": 600,\n        \"wires\": &#091;\n            &#091;\n                \"bde25226922e506d\"\n            ]\n        ]\n    },\n    {\n        \"id\": \"90dce386de0bcf13\",\n        \"type\": \"comment\",\n        \"z\": \"c277166614a46765\",\n        \"name\": \"Calcul du niveau SOC pour la charge programm\u00e9e\",\n        \"info\": \"\",\n        \"x\": 550,\n        \"y\": 20,\n        \"wires\": &#091;]\n    },\n    {\n        \"id\": \"e0fbb3b1f4767005\",\n        \"type\": \"change\",\n        \"z\": \"c277166614a46765\",\n        \"name\": \"Horloge\",\n        \"rules\": &#091;\n            {\n                \"t\": \"set\",\n                \"p\": \"horloge\",\n                \"pt\": \"flow\",\n                \"to\": \"payload\",\n                \"tot\": \"msg\"\n            },\n            {\n                \"t\": \"set\",\n                \"p\": \"hdebut\",\n                \"pt\": \"flow\",\n                \"to\": \"start\",\n                \"tot\": \"msg\"\n            },\n            {\n                \"t\": \"set\",\n                \"p\": \"hfin\",\n                \"pt\": \"flow\",\n                \"to\": \"end\",\n                \"tot\": \"msg\"\n            }\n        ],\n        \"action\": \"\",\n        \"property\": \"\",\n        \"from\": \"\",\n        \"to\": \"\",\n        \"reg\": false,\n        \"x\": 300,\n        \"y\": 280,\n        \"wires\": &#091;\n            &#091;\n                \"081ce726b9ef442d\"\n            ]\n        ]\n    },\n    {\n        \"id\": \"922186d87d96a177\",\n        \"type\": \"comment\",\n        \"z\": \"c277166614a46765\",\n        \"name\": \"Fin calcul du niveau SOC pour la charge programm\u00e9e\",\n        \"info\": \"# # Devalidation ESS\",\n        \"x\": 480,\n        \"y\": 560,\n        \"wires\": &#091;]\n    },\n    {\n        \"id\": \"6713fa86a6f1eacd\",\n        \"type\": \"link in\",\n        \"z\": \"c277166614a46765\",\n        \"name\": \"In_prod_total\",\n        \"links\": &#091;\n            \"581108ee019398cd\"\n        ],\n        \"x\": 65,\n        \"y\": 500,\n        \"wires\": &#091;\n            &#091;\n                \"0f0cd3f3e2e0be6f\"\n            ]\n        ]\n    },\n    {\n        \"id\": \"f17fdbd169acaef1\",\n        \"type\": \"link in\",\n        \"z\": \"c277166614a46765\",\n        \"name\": \"in_soc\",\n        \"links\": &#091;\n            \"d5ade795fa7c78e4\"\n        ],\n        \"x\": 65,\n        \"y\": 380,\n        \"wires\": &#091;\n            &#091;\n                \"2e1e2f59392157fe\"\n            ]\n        ]\n    },\n    {\n        \"id\": \"06e275e40158bf22\",\n        \"type\": \"mqtt out\",\n        \"z\": \"c277166614a46765\",\n        \"name\": \"Cible SOC\",\n        \"topic\": \"mp2\/batteries\/cible_soc\",\n        \"qos\": \"\",\n        \"retain\": \"\",\n        \"respTopic\": \"\",\n        \"contentType\": \"\",\n        \"userProps\": \"\",\n        \"correl\": \"\",\n        \"expiry\": \"\",\n        \"broker\": \"a89b02435258ed38\",\n        \"x\": 810,\n        \"y\": 420,\n        \"wires\": &#091;]\n    },\n    {\n        \"id\": \"081ce726b9ef442d\",\n        \"type\": \"function\",\n        \"z\": \"c277166614a46765\",\n        \"name\": \"Convert\",\n        \"func\": \"let soc = flow.get('soc')\\nlet seuil = flow.get('seuil_soc')\\nlet havalid = flow.get('valid_cp_ess')\\nlet hdeb = flow.get('hdebut')\\nlet hfin = flow.get('hfin')\\nlet f100 = flow.get('forc100')\\nlet hc = flow.get('hc')\\nvar horloge = flow.get('horloge');\\n\\nvar valid = { payload: 7 };\\nvar devalid= { payload: -7 };\\n\/\/ Heure de debut 3:50\\nvar hdebuts= {payload: hdeb*60}; \/\/ a debugger\\n\/\/var hdebuts= {payload: 82800}; \/\/ 23h\\n\/\/var duree= {payload: 14400}; \/\/ 4h\\nvar duree= 0;\\nvar tps =0;\\nvar debug=0;\\n\\nif( hdeb&gt;hfin){\\n    tps = (1440-hdeb+hfin)*60;\\n    duree= {payload: tps};\\n    }\\n    else {\\n    tps = (hfin-hdeb)*60;\\n    duree= {payload: tps};\\n    }\\n\/\/ En mode forc\u00e9 on charge de 22:00 \u00e0 6:00 en HC\\nif (f100 ==\\\"on\\\"){\\n    hdebuts= {payload: 79200}; \/\/ 22h\\n    duree ={payload: 28800}; \/\/ 8h\\n}\\n\\n\/\/debug= {payload: horloge};\\n\/\/debug= {payload: \\\"oui\\\"};\\n\\nif (soc &lt; seuil &amp;&amp; havalid===\\\"on\\\" &amp;&amp; horloge===1 &amp;&amp; hc==\\\"HC..\\\"){\\n    debug= {payload: \\\"Actif\\\"};\\n    return &#091;valid,hdebuts,duree,debug];\\n} else {\\n   debug= {payload: \\\"Inactif\\\"};    \\n   return &#091;devalid,hdebuts,duree,debug];\\n}\\n\\n\\n\",\n        \"outputs\": 4,\n        \"timeout\": \"\",\n        \"noerr\": 0,\n        \"initialize\": \"\",\n        \"finalize\": \"\",\n        \"libs\": &#091;],\n        \"x\": 560,\n        \"y\": 160,\n        \"wires\": &#091;\n            &#091;\n                \"22a44f100e209ba2\",\n                \"7fb67bb8abc83bab\"\n            ],\n            &#091;\n                \"9f6e69fc79db0db5\",\n                \"855dcce0fe5b5f73\"\n            ],\n            &#091;\n                \"7d44234ab0bbaba1\",\n                \"29e11cf1b01f50df\"\n            ],\n            &#091;\n                \"2e0c65622a05f2ef\"\n            ]\n        ]\n    },\n    {\n        \"id\": \"3071f2c0b39c7e22\",\n        \"type\": \"victron-output-ess\",\n        \"z\": \"c277166614a46765\",\n        \"service\": \"com.victronenergy.settings\",\n        \"path\": \"\/Settings\/CGwacs\/BatteryLife\/Schedule\/Charge\/0\/Soc\",\n        \"serviceObj\": {\n            \"service\": \"com.victronenergy.settings\",\n            \"name\": \"Venus settings\"\n        },\n        \"pathObj\": {\n            \"path\": \"\/Settings\/CGwacs\/BatteryLife\/Schedule\/Charge\/0\/Soc\",\n            \"type\": \"integer\",\n            \"name\": \"Schedule 1: State of charge (%)\",\n            \"writable\": true\n        },\n        \"initial\": \"\",\n        \"name\": \"Cible SOC \",\n        \"onlyChanges\": false,\n        \"x\": 810,\n        \"y\": 480,\n        \"wires\": &#091;]\n    },\n    {\n        \"id\": \"7fb67bb8abc83bab\",\n        \"type\": \"victron-output-ess\",\n        \"z\": \"c277166614a46765\",\n        \"service\": \"com.victronenergy.settings\",\n        \"path\": \"\/Settings\/CGwacs\/BatteryLife\/Schedule\/Charge\/0\/Day\",\n        \"serviceObj\": {\n            \"service\": \"com.victronenergy.settings\",\n            \"name\": \"Venus settings\"\n        },\n        \"pathObj\": {\n            \"path\": \"\/Settings\/CGwacs\/BatteryLife\/Schedule\/Charge\/0\/Day\",\n            \"type\": \"enum\",\n            \"name\": \"Schedule 1: Day\",\n            \"enum\": {\n                \"0\": \"Sunday\",\n                \"1\": \"Monday\",\n                \"2\": \"Tuesday\",\n                \"3\": \"Wednesday\",\n                \"4\": \"Thursday\",\n                \"5\": \"Friday\",\n                \"6\": \"Saturday\",\n                \"7\": \"Every day\",\n                \"8\": \"Weekdays\",\n                \"9\": \"Weekends\"\n            },\n            \"writable\": true\n        },\n        \"initial\": \"\",\n        \"name\": \"Validation CP\",\n        \"onlyChanges\": false,\n        \"x\": 800,\n        \"y\": 120,\n        \"wires\": &#091;]\n    },\n    {\n        \"id\": \"855dcce0fe5b5f73\",\n        \"type\": \"debug\",\n        \"z\": \"c277166614a46765\",\n        \"name\": \"H debut en s\",\n        \"active\": true,\n        \"tosidebar\": true,\n        \"console\": false,\n        \"tostatus\": true,\n        \"complete\": \"true\",\n        \"targetType\": \"full\",\n        \"statusVal\": \"payload\",\n        \"statusType\": \"auto\",\n        \"x\": 970,\n        \"y\": 180,\n        \"wires\": &#091;]\n    },\n    {\n        \"id\": \"22a44f100e209ba2\",\n        \"type\": \"debug\",\n        \"z\": \"c277166614a46765\",\n        \"name\": \"Validation CP\",\n        \"active\": true,\n        \"tosidebar\": true,\n        \"console\": false,\n        \"tostatus\": true,\n        \"complete\": \"payload\",\n        \"targetType\": \"msg\",\n        \"statusVal\": \"payload\",\n        \"statusType\": \"auto\",\n        \"x\": 980,\n        \"y\": 120,\n        \"wires\": &#091;]\n    },\n    {\n        \"id\": \"62fd6c82a330bc97\",\n        \"type\": \"inject\",\n        \"z\": \"c277166614a46765\",\n        \"name\": \"\",\n        \"props\": &#091;\n            {\n                \"p\": \"payload\"\n            },\n            {\n                \"p\": \"topic\",\n                \"vt\": \"str\"\n            }\n        ],\n        \"repeat\": \"\",\n        \"crontab\": \"\",\n        \"once\": false,\n        \"onceDelay\": 0.1,\n        \"topic\": \"\",\n        \"payload\": \"\",\n        \"payloadType\": \"date\",\n        \"x\": 360,\n        \"y\": 320,\n        \"wires\": &#091;\n            &#091;\n                \"081ce726b9ef442d\"\n            ]\n        ]\n    },\n    {\n        \"id\": \"b729115688d16d54\",\n        \"type\": \"debug\",\n        \"z\": \"c277166614a46765\",\n        \"name\": \"Cible SOC\",\n        \"active\": false,\n        \"tosidebar\": true,\n        \"console\": false,\n        \"tostatus\": true,\n        \"complete\": \"payload\",\n        \"targetType\": \"msg\",\n        \"statusVal\": \"payload\",\n        \"statusType\": \"auto\",\n        \"x\": 810,\n        \"y\": 540,\n        \"wires\": &#091;]\n    },\n    {\n        \"id\": \"9f6e69fc79db0db5\",\n        \"type\": \"victron-output-ess\",\n        \"z\": \"c277166614a46765\",\n        \"service\": \"com.victronenergy.settings\",\n        \"path\": \"\/Settings\/CGwacs\/BatteryLife\/Schedule\/Charge\/0\/Start\",\n        \"serviceObj\": {\n            \"service\": \"com.victronenergy.settings\",\n            \"name\": \"Venus settings\"\n        },\n        \"pathObj\": {\n            \"path\": \"\/Settings\/CGwacs\/BatteryLife\/Schedule\/Charge\/0\/Start\",\n            \"type\": \"integer\",\n            \"name\": \"Schedule 1: Start (seconds after midnight)\",\n            \"writable\": true\n        },\n        \"initial\": \"\",\n        \"name\": \"Heure D\u00e9but\",\n        \"onlyChanges\": false,\n        \"x\": 790,\n        \"y\": 180,\n        \"wires\": &#091;]\n    },\n    {\n        \"id\": \"7d44234ab0bbaba1\",\n        \"type\": \"victron-output-ess\",\n        \"z\": \"c277166614a46765\",\n        \"service\": \"com.victronenergy.settings\",\n        \"path\": \"\/Settings\/CGwacs\/BatteryLife\/Schedule\/Charge\/0\/Duration\",\n        \"serviceObj\": {\n            \"service\": \"com.victronenergy.settings\",\n            \"name\": \"Venus settings\"\n        },\n        \"pathObj\": {\n            \"path\": \"\/Settings\/CGwacs\/BatteryLife\/Schedule\/Charge\/0\/Duration\",\n            \"type\": \"integer\",\n            \"name\": \"Schedule 1: Duration (seconds)\",\n            \"writable\": true\n        },\n        \"initial\": \"\",\n        \"name\": \"Dur\u00e9e\",\n        \"onlyChanges\": false,\n        \"x\": 770,\n        \"y\": 240,\n        \"wires\": &#091;]\n    },\n    {\n        \"id\": \"29e11cf1b01f50df\",\n        \"type\": \"debug\",\n        \"z\": \"c277166614a46765\",\n        \"name\": \"Duree\",\n        \"active\": true,\n        \"tosidebar\": true,\n        \"console\": false,\n        \"tostatus\": true,\n        \"complete\": \"true\",\n        \"targetType\": \"full\",\n        \"statusVal\": \"payload\",\n        \"statusType\": \"auto\",\n        \"x\": 950,\n        \"y\": 240,\n        \"wires\": &#091;]\n    },\n    {\n        \"id\": \"e78b1242f6e65c23\",\n        \"type\": \"bigtimer\",\n        \"z\": \"c277166614a46765\",\n        \"outtopic\": \"\",\n        \"outpayload1\": \"\",\n        \"outpayload2\": \"\",\n        \"name\": \"Horl CP\",\n        \"comment\": \"\",\n        \"lat\": \"43.91905434993742\",\n        \"lon\": \"2.1979451056884747\",\n        \"starttime\": \"1320\",\n        \"endtime\": \"360\",\n        \"starttime2\": \"0\",\n        \"endtime2\": \"0\",\n        \"startoff\": 0,\n        \"endoff\": 0,\n        \"startoff2\": 0,\n        \"endoff2\": 0,\n        \"offs\": 0,\n        \"outtext1\": \"\\\"on\\\"\",\n        \"outtext2\": \"\\\"off\\\"\",\n        \"timeout\": 1440,\n        \"sun\": true,\n        \"mon\": true,\n        \"tue\": true,\n        \"wed\": true,\n        \"thu\": true,\n        \"fri\": true,\n        \"sat\": true,\n        \"jan\": true,\n        \"feb\": true,\n        \"mar\": true,\n        \"apr\": true,\n        \"may\": true,\n        \"jun\": true,\n        \"jul\": true,\n        \"aug\": true,\n        \"sep\": true,\n        \"oct\": true,\n        \"nov\": true,\n        \"dec\": true,\n        \"day1\": 0,\n        \"month1\": 0,\n        \"day2\": 0,\n        \"month2\": 0,\n        \"day3\": 0,\n        \"month3\": 0,\n        \"day4\": 0,\n        \"month4\": 0,\n        \"day5\": 0,\n        \"month5\": 0,\n        \"day6\": 0,\n        \"month6\": 0,\n        \"day7\": 0,\n        \"month7\": 0,\n        \"day8\": 0,\n        \"month8\": 0,\n        \"day9\": 0,\n        \"month9\": 0,\n        \"day10\": 0,\n        \"month10\": 0,\n        \"day11\": 0,\n        \"month11\": 0,\n        \"day12\": 0,\n        \"month12\": 0,\n        \"d1\": 0,\n        \"w1\": 0,\n        \"d2\": 0,\n        \"w2\": 0,\n        \"d3\": 0,\n        \"w3\": 0,\n        \"d4\": 0,\n        \"w4\": 0,\n        \"d5\": 0,\n        \"w5\": 0,\n        \"d6\": 0,\n        \"w6\": 0,\n        \"xday1\": 0,\n        \"xmonth1\": 0,\n        \"xday2\": 0,\n        \"xmonth2\": 0,\n        \"xday3\": 0,\n        \"xmonth3\": 0,\n        \"xday4\": 0,\n        \"xmonth4\": 0,\n        \"xday5\": 0,\n        \"xmonth5\": 0,\n        \"xday6\": 0,\n        \"xmonth6\": 0,\n        \"xday7\": 0,\n        \"xmonth7\": 0,\n        \"xday8\": 0,\n        \"xmonth8\": 0,\n        \"xday9\": 0,\n        \"xmonth9\": 0,\n        \"xday10\": 0,\n        \"xmonth10\": 0,\n        \"xday11\": 0,\n        \"xmonth11\": 0,\n        \"xday12\": 0,\n        \"xmonth12\": 0,\n        \"xd1\": 0,\n        \"xw1\": 0,\n        \"xd2\": 0,\n        \"xw2\": 0,\n        \"xd3\": 0,\n        \"xw3\": 0,\n        \"xd4\": 0,\n        \"xw4\": 0,\n        \"xd5\": 0,\n        \"xw5\": 0,\n        \"xd6\": 0,\n        \"xw6\": 0,\n        \"suspend\": false,\n        \"random\": false,\n        \"randon1\": false,\n        \"randoff1\": false,\n        \"randon2\": false,\n        \"randoff2\": false,\n        \"repeat\": true,\n        \"atstart\": true,\n        \"odd\": false,\n        \"even\": false,\n        \"x\": 120,\n        \"y\": 300,\n        \"wires\": &#091;\n            &#091;],\n            &#091;\n                \"e0fbb3b1f4767005\"\n            ],\n            &#091;]\n        ]\n    },\n    {\n        \"id\": \"be024a8da5958557\",\n        \"type\": \"mqtt in\",\n        \"z\": \"c277166614a46765\",\n        \"name\": \"HC\/HP\",\n        \"topic\": \"ha\/mp2\/cp\/hc\",\n        \"qos\": \"2\",\n        \"datatype\": \"utf8\",\n        \"broker\": \"a89b02435258ed38\",\n        \"nl\": false,\n        \"rap\": true,\n        \"rh\": 0,\n        \"inputs\": 0,\n        \"x\": 70,\n        \"y\": 60,\n        \"wires\": &#091;\n            &#091;\n                \"7ab5ca138c909780\"\n            ]\n        ]\n    },\n    {\n        \"id\": \"062fbfa492b47b8b\",\n        \"type\": \"debug\",\n        \"z\": \"c277166614a46765\",\n        \"name\": \"debug 36\",\n        \"active\": true,\n        \"tosidebar\": true,\n        \"console\": false,\n        \"tostatus\": true,\n        \"complete\": \"payload\",\n        \"targetType\": \"msg\",\n        \"statusVal\": \"payload\",\n        \"statusType\": \"auto\",\n        \"x\": 560,\n        \"y\": 80,\n        \"wires\": &#091;]\n    },\n    {\n        \"id\": \"18ee13ea7450ecc9\",\n        \"type\": \"mqtt in\",\n        \"z\": \"c277166614a46765\",\n        \"name\": \"Forcage CP 100%\",\n        \"topic\": \"ha\/mp2\/cp\/forcage100\",\n        \"qos\": \"2\",\n        \"datatype\": \"auto-detect\",\n        \"broker\": \"a89b02435258ed38\",\n        \"nl\": false,\n        \"rap\": true,\n        \"rh\": 0,\n        \"inputs\": 0,\n        \"x\": 110,\n        \"y\": 180,\n        \"wires\": &#091;\n            &#091;\n                \"2999dac5bf876ed1\"\n            ]\n        ]\n    },\n    {\n        \"id\": \"e6c773dba23694f3\",\n        \"type\": \"mqtt in\",\n        \"z\": \"c277166614a46765\",\n        \"name\": \"Valid ESS MP1\",\n        \"topic\": \"ha\/mp2\/cp\/validcp\",\n        \"qos\": \"2\",\n        \"datatype\": \"auto-detect\",\n        \"broker\": \"a89b02435258ed38\",\n        \"nl\": false,\n        \"rap\": true,\n        \"rh\": 0,\n        \"inputs\": 0,\n        \"x\": 100,\n        \"y\": 240,\n        \"wires\": &#091;\n            &#091;\n                \"17d57f5b289def91\"\n            ]\n        ]\n    },\n    {\n        \"id\": \"2127267e7f3f0f74\",\n        \"type\": \"debug\",\n        \"z\": \"c277166614a46765\",\n        \"name\": \"debug 37\",\n        \"active\": true,\n        \"tosidebar\": true,\n        \"console\": false,\n        \"tostatus\": true,\n        \"complete\": \"payload\",\n        \"targetType\": \"msg\",\n        \"statusVal\": \"payload\",\n        \"statusType\": \"auto\",\n        \"x\": 560,\n        \"y\": 240,\n        \"wires\": &#091;]\n    },\n    {\n        \"id\": \"8bd97f0b1da33783\",\n        \"type\": \"debug\",\n        \"z\": \"c277166614a46765\",\n        \"name\": \"debug 38\",\n        \"active\": true,\n        \"tosidebar\": true,\n        \"console\": false,\n        \"tostatus\": true,\n        \"complete\": \"payload\",\n        \"targetType\": \"msg\",\n        \"statusVal\": \"payload\",\n        \"statusType\": \"auto\",\n        \"x\": 560,\n        \"y\": 300,\n        \"wires\": &#091;]\n    },\n    {\n        \"id\": \"e4a89690a95849de\",\n        \"type\": \"change\",\n        \"z\": \"c277166614a46765\",\n        \"name\": \"Sos HC\",\n        \"rules\": &#091;\n            {\n                \"t\": \"set\",\n                \"p\": \"hc\",\n                \"pt\": \"flow\",\n                \"to\": \"payload\",\n                \"tot\": \"msg\"\n            }\n        ],\n        \"action\": \"\",\n        \"property\": \"\",\n        \"from\": \"\",\n        \"to\": \"\",\n        \"reg\": false,\n        \"x\": 380,\n        \"y\": 60,\n        \"wires\": &#091;\n            &#091;\n                \"081ce726b9ef442d\",\n                \"4efa67b5d47d7353\"\n            ]\n        ],\n        \"info\": \"*** mermaid\\njourney\\n    title My working day\\n    section Go to work\\n      Make tea: 5: Me\\n      Go upstairs: 3: Me\\n      Do work: 1: Me, Cat\\n    section Go home\\n      Go downstairs: 5: Me\\n      Sit down: 5: Me\"\n    },\n    {\n        \"id\": \"2999dac5bf876ed1\",\n        \"type\": \"change\",\n        \"z\": \"c277166614a46765\",\n        \"name\": \"Sos F100\",\n        \"rules\": &#091;\n            {\n                \"t\": \"set\",\n                \"p\": \"forc100\",\n                \"pt\": \"flow\",\n                \"to\": \"payload\",\n                \"tot\": \"msg\"\n            }\n        ],\n        \"action\": \"\",\n        \"property\": \"\",\n        \"from\": \"\",\n        \"to\": \"\",\n        \"reg\": false,\n        \"x\": 300,\n        \"y\": 160,\n        \"wires\": &#091;\n            &#091;\n                \"bebe0e749f63d49e\",\n                \"081ce726b9ef442d\",\n                \"2127267e7f3f0f74\"\n            ]\n        ],\n        \"info\": \"*** mermaid\\njourney\\n    title My working day\\n    section Go to work\\n      Make tea: 5: Me\\n      Go upstairs: 3: Me\\n      Do work: 1: Me, Cat\\n    section Go home\\n      Go downstairs: 5: Me\\n      Sit down: 5: Me\"\n    },\n    {\n        \"id\": \"17d57f5b289def91\",\n        \"type\": \"change\",\n        \"z\": \"c277166614a46765\",\n        \"name\": \"Sos VCP\",\n        \"rules\": &#091;\n            {\n                \"t\": \"set\",\n                \"p\": \"valid_cp_ess\",\n                \"pt\": \"flow\",\n                \"to\": \"payload\",\n                \"tot\": \"msg\"\n            }\n        ],\n        \"action\": \"\",\n        \"property\": \"\",\n        \"from\": \"\",\n        \"to\": \"\",\n        \"reg\": false,\n        \"x\": 300,\n        \"y\": 220,\n        \"wires\": &#091;\n            &#091;\n                \"081ce726b9ef442d\",\n                \"8bd97f0b1da33783\"\n            ]\n        ],\n        \"info\": \"*** mermaid\\njourney\\n    title My working day\\n    section Go to work\\n      Make tea: 5: Me\\n      Go upstairs: 3: Me\\n      Do work: 1: Me, Cat\\n    section Go home\\n      Go downstairs: 5: Me\\n      Sit down: 5: Me\"\n    },\n    {\n        \"id\": \"5f7c2bd745e8304f\",\n        \"type\": \"mqtt in\",\n        \"z\": \"c277166614a46765\",\n        \"name\": \"Niveau Forcage CP1\",\n        \"topic\": \"ha\/mp2\/cp\/niveauforcagecp1\",\n        \"qos\": \"2\",\n        \"datatype\": \"auto-detect\",\n        \"broker\": \"a89b02435258ed38\",\n        \"nl\": false,\n        \"rap\": true,\n        \"rh\": 0,\n        \"inputs\": 0,\n        \"x\": 110,\n        \"y\": 120,\n        \"wires\": &#091;\n            &#091;\n                \"7293bf9fb4da85c7\"\n            ]\n        ]\n    },\n    {\n        \"id\": \"7293bf9fb4da85c7\",\n        \"type\": \"change\",\n        \"z\": \"c277166614a46765\",\n        \"name\": \"Sos NF CP1\",\n        \"rules\": &#091;\n            {\n                \"t\": \"set\",\n                \"p\": \"niveauforcp1\",\n                \"pt\": \"flow\",\n                \"to\": \"payload\",\n                \"tot\": \"msg\"\n            }\n        ],\n        \"action\": \"\",\n        \"property\": \"\",\n        \"from\": \"\",\n        \"to\": \"\",\n        \"reg\": false,\n        \"x\": 330,\n        \"y\": 120,\n        \"wires\": &#091;\n            &#091;\n                \"062fbfa492b47b8b\",\n                \"081ce726b9ef442d\",\n                \"bebe0e749f63d49e\"\n            ]\n        ],\n        \"info\": \"*** mermaid\\njourney\\n    title My working day\\n    section Go to work\\n      Make tea: 5: Me\\n      Go upstairs: 3: Me\\n      Do work: 1: Me, Cat\\n    section Go home\\n      Go downstairs: 5: Me\\n      Sit down: 5: Me\"\n    },\n    {\n        \"id\": \"4efa67b5d47d7353\",\n        \"type\": \"debug\",\n        \"z\": \"c277166614a46765\",\n        \"name\": \"debug 43\",\n        \"active\": true,\n        \"tosidebar\": true,\n        \"console\": false,\n        \"tostatus\": true,\n        \"complete\": \"payload\",\n        \"targetType\": \"msg\",\n        \"statusVal\": \"payload\",\n        \"statusType\": \"auto\",\n        \"x\": 800,\n        \"y\": 60,\n        \"wires\": &#091;]\n    },\n    {\n        \"id\": \"2e0c65622a05f2ef\",\n        \"type\": \"debug\",\n        \"z\": \"c277166614a46765\",\n        \"name\": \"debug 44\",\n        \"active\": true,\n        \"tosidebar\": true,\n        \"console\": false,\n        \"tostatus\": true,\n        \"complete\": \"payload\",\n        \"targetType\": \"msg\",\n        \"statusVal\": \"payload\",\n        \"statusType\": \"auto\",\n        \"x\": 820,\n        \"y\": 300,\n        \"wires\": &#091;]\n    },\n    {\n        \"id\": \"24a75f6b60d0b3c6\",\n        \"type\": \"debug\",\n        \"z\": \"c277166614a46765\",\n        \"name\": \"debug 45\",\n        \"active\": true,\n        \"tosidebar\": true,\n        \"console\": false,\n        \"tostatus\": true,\n        \"complete\": \"payload\",\n        \"targetType\": \"msg\",\n        \"statusVal\": \"payload\",\n        \"statusType\": \"auto\",\n        \"x\": 980,\n        \"y\": 20,\n        \"wires\": &#091;]\n    },\n    {\n        \"id\": \"7ab5ca138c909780\",\n        \"type\": \"change\",\n        \"z\": \"c277166614a46765\",\n        \"name\": \"Convert\",\n        \"rules\": &#091;\n            {\n                \"t\": \"change\",\n                \"p\": \"payload\",\n                \"pt\": \"msg\",\n                \"from\": \"\\\"HC..\\\"\",\n                \"fromt\": \"str\",\n                \"to\": \"HC..\",\n                \"tot\": \"str\"\n            },\n            {\n                \"t\": \"change\",\n                \"p\": \"payload\",\n                \"pt\": \"msg\",\n                \"from\": \"\\\"HP..\\\"\",\n                \"fromt\": \"str\",\n                \"to\": \"HP..\",\n                \"tot\": \"str\"\n            }\n        ],\n        \"action\": \"\",\n        \"property\": \"\",\n        \"from\": \"\",\n        \"to\": \"\",\n        \"reg\": false,\n        \"x\": 200,\n        \"y\": 60,\n        \"wires\": &#091;\n            &#091;\n                \"e4a89690a95849de\",\n                \"24a75f6b60d0b3c6\"\n            ]\n        ]\n    },\n    {\n        \"id\": \"a89b02435258ed38\",\n        \"type\": \"mqtt-broker\",\n        \"name\": \"MQTTHA\",\n        \"broker\": \"192.168.0.37\",\n        \"port\": \"1883\",\n        \"clientid\": \"\",\n        \"autoConnect\": true,\n        \"usetls\": false,\n        \"protocolVersion\": \"4\",\n        \"keepalive\": \"60\",\n        \"cleansession\": true,\n        \"birthTopic\": \"\",\n        \"birthQos\": \"0\",\n        \"birthPayload\": \"\",\n        \"birthMsg\": {},\n        \"closeTopic\": \"\",\n        \"closeQos\": \"0\",\n        \"closePayload\": \"\",\n        \"closeMsg\": {},\n        \"willTopic\": \"\",\n        \"willQos\": \"0\",\n        \"willPayload\": \"\",\n        \"willMsg\": {},\n        \"userProps\": \"\",\n        \"sessionExpiry\": \"\"\n    }\n]<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Update: Voir mon nouvel article sur le sujet: Intro Sur mon blog domo.rem81.com, je partage mes projets domotiques pour rendre ma maison plus intelligente et \u00e9conome. Apr\u00e8s avoir pr\u00e9sent\u00e9 le &hellip; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,6],"tags":[65,64,66,63],"class_list":["post-3505","post","type-post","status-publish","format-standard","hentry","category-homeassistant","category-photovoltaique","tag-cerbogx","tag-multiplus2","tag-nodered","tag-victron"],"_links":{"self":[{"href":"https:\/\/domo.rem81.com\/index.php\/wp-json\/wp\/v2\/posts\/3505","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/domo.rem81.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/domo.rem81.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/domo.rem81.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/domo.rem81.com\/index.php\/wp-json\/wp\/v2\/comments?post=3505"}],"version-history":[{"count":10,"href":"https:\/\/domo.rem81.com\/index.php\/wp-json\/wp\/v2\/posts\/3505\/revisions"}],"predecessor-version":[{"id":4286,"href":"https:\/\/domo.rem81.com\/index.php\/wp-json\/wp\/v2\/posts\/3505\/revisions\/4286"}],"wp:attachment":[{"href":"https:\/\/domo.rem81.com\/index.php\/wp-json\/wp\/v2\/media?parent=3505"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/domo.rem81.com\/index.php\/wp-json\/wp\/v2\/categories?post=3505"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/domo.rem81.com\/index.php\/wp-json\/wp\/v2\/tags?post=3505"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}