Kamstrup Multical 302 met Pi uitlezen en domoticz

Pagina: 1 ... 9 10 Laatste
Acties:

  • Marc_Sway
  • Registratie: Oktober 2010
  • Laatst online: 01-05 19:21
OK, dank je, goed om te weten. Dan moet hier tzt ook echt fysieke warmtemeter in de leiding.

  • Beer070
  • Registratie: Augustus 2021
  • Laatst online: 09:12
ik zit net weer een keer te zoeken op een goeie kamstrup, kan de varianten met een wat grotere leiding diameter maar slecht vinden. alleen een shop in Duitsland die de wireless connectie heeft, (zoals afgeraden door Ronald).

  • Ronald
  • Registratie: Juli 2000
  • Laatst online: 09:15
@Beer070 nu is de DN15 gewoon aangewezen voor 1500l/u nominaal…
Het is maar een bar kort stukje

PV Output - Obdam; SolarEdge SE5K 'Voor korte strings'; 12x350Wp Oost-West 13°; 8x415Wp Zuid 10°; Totaal 7520Wp.


  • RichieB
  • Registratie: Mei 2003
  • Laatst online: 09:17
@Beer070 Deze heeft DN20 en wired m-bus:
https://zaehleronlineshop...25-52-wire-M-Bus-16-Y-Bat
https://zaehleronlineshop...Qp-25-52-incl-M-Bus-wired

[ Voor 25% gewijzigd door RichieB op 23-03-2026 07:41 ]

Panasonic WH-MDC09J3E5, Atlantic Explorer V4 270C, 57x PV 23115 Wp


  • Marc_Sway
  • Registratie: Oktober 2010
  • Laatst online: 01-05 19:21
Voor de M-Bus-wired versies, welke adapter(s) naar wired LAN/Ethernet zijn aan te bevelen voor eenvoudige integratie met HA?

  • Marc_Sway
  • Registratie: Oktober 2010
  • Laatst online: 01-05 19:21
Afbeeldingslocatie: https://tweakers.net/i/iFmpDkw-8NXEq7ZhUW9WyOHNWvA=/x800/filters:strip_icc():strip_exif()/f/image/AEXdhK5Su3jXcpcDh1as6FiC.jpg?f=fotoalbum_large

AI zegt dit, klopt dat?

  • Ronald
  • Registratie: Juli 2000
  • Laatst online: 09:15
@Marc_Sway
https://a.aliexpress.com/_EwyNvOy

De master module.

Gewoon ingeprikt op usb van de pi met HAOS

PV Output - Obdam; SolarEdge SE5K 'Voor korte strings'; 12x350Wp Oost-West 13°; 8x415Wp Zuid 10°; Totaal 7520Wp.


  • Marc_Sway
  • Registratie: Oktober 2010
  • Laatst online: 01-05 19:21
Yep. dat is de meest simpele en (waarschijnlijk) goedkoopste optie.
Mijn HA server(tje) zit echter niet in de buurt van de CV, dus ik moet via LAN

  • RichieB
  • Registratie: Mei 2003
  • Laatst online: 09:17
@Marc_Sway m-bus is een 2-wire aansluiting die je prima over een ethernet kabel kan aansluiten. Of je trekt een aparte signaaldraad. Alternatief is een RPi bij je CV met daarop een m-bus naar mqtt scriptje.

Panasonic WH-MDC09J3E5, Atlantic Explorer V4 270C, 57x PV 23115 Wp


  • Marc_Sway
  • Registratie: Oktober 2010
  • Laatst online: 01-05 19:21
OK, idee is dan om via een UTP kabel 2 wires er dan van te gebruiken (of een shielded 2-core kabel), en dan aan 1 uiteinde de adapter naar USB er aan te connecten en die in mijn HA servertje te pluggen?

  • RichieB
  • Registratie: Mei 2003
  • Laatst online: 09:17
@Marc_Sway Ja, dat is inderdaad het idee.

Panasonic WH-MDC09J3E5, Atlantic Explorer V4 270C, 57x PV 23115 Wp


  • Ronald
  • Registratie: Juli 2000
  • Laatst online: 09:15
Cable

A two-wire standard telephone cable (JYStY N20.8 mm) is used as the transmission medium for the M-Bus. The maximum distance between a slave and the repeater is 350 m; this length corresponds to a cable resistance of up to 29 W . This distance applies for the standard configuration having Baud rates between 300 and 9600 Baud, and a maximum of 250 slaves. The maximum distance can be increased by limiting the Baud rate and using fewer slaves, but the bus voltage in the Space state must at no point in a segment fall below 12 V, because of the remote powering of the slaves. In the standard configuration the total cable length should not exceed 1000 m, in order to meet the requirement of a maximum cable capacitance of 180 nF.
https://m-bus.com/documentation-wired/04-physical-layer

PV Output - Obdam; SolarEdge SE5K 'Voor korte strings'; 12x350Wp Oost-West 13°; 8x415Wp Zuid 10°; Totaal 7520Wp.


  • Marc_Sway
  • Registratie: Oktober 2010
  • Laatst online: 01-05 19:21
OK, een twisted pair kabel aan een Kamstrup hangen en aan de andere kant aan dit zou moeten werken ;-)

Afbeeldingslocatie: https://tweakers.net/i/LsNozHNORRLx6s7v_ZyvGmBAFKk=/800x/filters:strip_exif()/f/image/xs4bOggiYSjkZNWeF83xqdlQ.avif?f=fotoalbum_large

  • Marc_Sway
  • Registratie: Oktober 2010
  • Laatst online: 01-05 19:21
Ik geloof dat veel Kamstrup's battery powered zijn. Nu er en kabel aan gaat naar een M-Bus adapter, moet de Kamstrup dan ook niet aan een power adapter?

  • Ronald
  • Registratie: Juli 2000
  • Laatst online: 09:15
De Kamstrup is in de regel batterij gevoed. Die zou bij uitlezen elke minuut jaren mee moeten gaan.
Vervangen lijkt een Tamper alarm te triggeren. Maar dat is voor ons niet erg.

@AUijtdehaag heeft dat gedaan met zijn 302.

PV Output - Obdam; SolarEdge SE5K 'Voor korte strings'; 12x350Wp Oost-West 13°; 8x415Wp Zuid 10°; Totaal 7520Wp.


  • RichieB
  • Registratie: Mei 2003
  • Laatst online: 09:17
@Marc_Sway Er zijn van de Kamstrup 303 twee verschillende versies met batterijen. Bij de duurdere staat "16Y" dus ik denk dat de goedkopere dan maximaal "8Y" is.. verder wat @Ronald hierboven zegt.
Het prijsverschil met een 230V gevoede Kamstrup is aanzienlijk.

Panasonic WH-MDC09J3E5, Atlantic Explorer V4 270C, 57x PV 23115 Wp


  • koksie
  • Registratie: November 2004
  • Laatst online: 01:29
Ronald schreef op maandag 23 maart 2026 @ 06:34:
@Marc_Sway
https://a.aliexpress.com/_EwyNvOy

De master module.

Gewoon ingeprikt op usb van de pi met HAOS
Gebruik je een integratie voor HAOS en zo ja, welke? Ik heb een maandje geleden zitten kijken maar niks gevonden waarmee het mij als relatieve IT leek lukte 'm op mijn Pi met HAOS uit te lezen. Alle integraties die ik kon vonden werden niet meer ondersteund of werkten niet onder HAOS.
Of werk je rechtsreeks via Nodered?

  • Ronald
  • Registratie: Juli 2000
  • Laatst online: 09:15
@koksie Ik heb mij laten inspireren door de Node Red flow ergens uit dit topic... En een nieuwe gemaakt:

Ik draai een iets oudere node-red app (20.2.4) omdat nodered-contrib-mbus niet wil op de recentere release 21.x


Mijn flow:

Scanned de bus voor devices.
Leest elke minuut alle gevonden devices uit.
Parsed het Kamstrup wamte-koude telegram.
Publiceert de waardes naar MQTT incl auto discovery.

Mijn 303 is een wamte-koude model... en ik heb er maar 1, dus meerdere devices is niet getest... en als het telegram anders is bij een gevonden mbus device dan zal het niet (goed) werken tot er een extra parser in zit.

Ik wil hem nog getest hebben door iemand anders ;-)

PV Output - Obdam; SolarEdge SE5K 'Voor korte strings'; 12x350Wp Oost-West 13°; 8x415Wp Zuid 10°; Totaal 7520Wp.


  • Marc_Sway
  • Registratie: Oktober 2010
  • Laatst online: 01-05 19:21
Ik las trouwens dat bij bepaalde CV ketels het Actuele Vermogen (kW) vrijwel lineair gerelateerd zou zijn aan het ventilator-toerental (tpm).
In het service menu van de ketel zou dan een waarde te zien moeten zijn die correspondeert met dat toerental. Met dat actuele toerental is dan het Actuele Vermogen te bepalen.
Die waarde is dan wellicht ook beschikbaar via de OT Bus.

Iemand ervaren hiermee, bijv met het uitlezen van het ventilator-toerental via de OT Bus?

Ik lees net dat de modulatiegraad (%) waarde bij bepaalde ketels op de OT Bus beschikbaar zou zijn en ongeveer linear gerelateerd is aan het actuele vermogen van de ketel, waarbij 0% dan betekent dat de ketel op het Min vermogen draait en bij 100% op het Max vermogen (en alles daar tussen in een lineair verband).
Iemand die dit ook uitleest met de OTGW?

[ Voor 27% gewijzigd door Marc_Sway op 24-03-2026 08:38 ]


  • RichieB
  • Registratie: Mei 2003
  • Laatst online: 09:17
@Marc_Sway Dat is erg afhankelijk van het merk en type CV-ketel. Daarvoor kan je het best op zoek naar topics over dat specifiek merk en/of model.

Panasonic WH-MDC09J3E5, Atlantic Explorer V4 270C, 57x PV 23115 Wp


  • Ronald
  • Registratie: Juli 2000
  • Laatst online: 09:15
@Marc_Sway je trekt een beetje off topic ;-)

Wellicht dat dat werkt voor opgenomen vermogen (m3/uur).
Maar afgegeven vermogen blijft afhankelijk van condensatie graad, en dat blijft toenemen met steeds lagere retour, dat is het rookgaskoelwater

PV Output - Obdam; SolarEdge SE5K 'Voor korte strings'; 12x350Wp Oost-West 13°; 8x415Wp Zuid 10°; Totaal 7520Wp.


  • Marc_Sway
  • Registratie: Oktober 2010
  • Laatst online: 01-05 19:21
Ha Ronald, erg goed punt, had ik niet direct aan gedacht! Er is idd een afhankelijkheid van de condensatie-graad.
Dus bottom-line is de enige manier om echt redelijke nauwkeurige resultaten (voor afgegeven warmte-vermogen) te krijgen, door een fysieke warmtemeter in het systeem te plaatsen. Al het andere (via de 'software route') is meer bij benadering

  • koksie
  • Registratie: November 2004
  • Laatst online: 01:29
Ronald schreef op maandag 23 maart 2026 @ 19:34:
@koksie Ik heb mij laten inspireren door de Node Red flow ergens uit dit topic... En een nieuwe gemaakt:

Ik draai een iets oudere node-red app (20.2.4) omdat nodered-contrib-mbus niet wil op de recentere release 21.x


Mijn flow:

Scanned de bus voor devices.
Leest elke minuut alle gevonden devices uit.
Parsed het Kamstrup wamte-koude telegram.
Publiceert de waardes naar MQTT incl auto discovery.

Mijn 303 is een wamte-koude model... en ik heb er maar 1, dus meerdere devices is niet getest... en als het telegram anders is bij een gevonden mbus device dan zal het niet (goed) werken tot er een extra parser in zit.

Ik wil hem nog getest hebben door iemand anders ;-)
Dank je voor de informatie, ik heb Node Red nog niet aan de praat, daar ga ik binnenkort eens mee spelen :).

  • Ronald
  • Registratie: Juli 2000
  • Laatst online: 09:15
@Marc_Sway soms is benaderen goed genoeg. Mijn retour heeft weinig ruimte om veel af te wijken van de 30… de cv staat op maar 35… met wat overshoot als de vloer niet mee draait (pendelpendel… ik zie op verbruik geen rare dingen daardoor, ik heb ook een warmteverlies model draaien gekoppeld aan actuele temperatuur sensoren)

PV Output - Obdam; SolarEdge SE5K 'Voor korte strings'; 12x350Wp Oost-West 13°; 8x415Wp Zuid 10°; Totaal 7520Wp.


  • Marc_Sway
  • Registratie: Oktober 2010
  • Laatst online: 01-05 19:21
Klinkt interessant dat warmteverlies model! Aan zo iets heb ik ook wel eens gedacht.
Wat zijn daar de input-parameters als ik mag vragen? Supply en Retour temps van de CV, buiten-temp, warmtemeter waarden, of misschien nog iets anders?

  • Beer070
  • Registratie: Augustus 2021
  • Laatst online: 09:12
Ronald schreef op maandag 23 maart 2026 @ 06:34:
@Marc_Sway
https://a.aliexpress.com/_EwyNvOy

De master module.

Gewoon ingeprikt op usb van de pi met HAOS
ik heb er 2 besteld. voor het geval dat er 1 kapot gaat in transport.
Nu nog even de juiste kamstrup erbij nemen.

  • Beer070
  • Registratie: Augustus 2021
  • Laatst online: 09:12
zitten er bij deze units nou ook een retour thermometer? Ik zie dat tweede stuk buis daarvoor niet in de omschrijving, maar misschien is mijn Duits niet goed genoeg.

  • Ronald
  • Registratie: Juli 2000
  • Laatst online: 09:15
Dompelkraan voor de aanvoersensor en aansluitkranen voor de meter unit zelf zijn niet inclusief. Zie mijn eerdere link.

Deze winkel configureert de Kamstrup voor montage in retour

De aansluit kranen worden door de winkel geadviseerd. En ik ben het met ze eens… de meter is beperkt houdbaar (mid-keuring, danwel domweg de batterij)

Het laat het toe de meter eenvoudig te demonteren en systeem terug in bedrijf te stellen met de pasbuis

[ Voor 40% gewijzigd door Ronald op 24-03-2026 14:42 ]

PV Output - Obdam; SolarEdge SE5K 'Voor korte strings'; 12x350Wp Oost-West 13°; 8x415Wp Zuid 10°; Totaal 7520Wp.


  • Ronald
  • Registratie: Juli 2000
  • Laatst online: 09:15
Marc_Sway schreef op dinsdag 24 maart 2026 @ 12:15:
Klinkt interessant dat warmteverlies model! Aan zo iets heb ik ook wel eens gedacht.
Wat zijn daar de input-parameters als ik mag vragen? Supply en Retour temps van de CV, buiten-temp, warmtemeter waarden, of misschien nog iets anders?
Warmteverlies coëfficiënten, temperatuur delta’s.

Dit staat los van de energie productie. Ik heb het om te toetsen of een relatief krappe 5kW warmtepomp voldoet.

PV Output - Obdam; SolarEdge SE5K 'Voor korte strings'; 12x350Wp Oost-West 13°; 8x415Wp Zuid 10°; Totaal 7520Wp.


  • Beer070
  • Registratie: Augustus 2021
  • Laatst online: 09:12
Ronald schreef op dinsdag 24 maart 2026 @ 14:39:
Dompelkraan voor de aanvoersensor en aansluitkranen voor de meter unit zelf zijn niet inclusief. Zie mijn eerdere link.

Deze winkel configureert de Kamstrup voor montage in retour

De aansluit kranen worden door de winkel geadviseerd. En ik ben het met ze eens… de meter is beperkt houdbaar (mid-keuring, danwel domweg de batterij)

Het laat het toe de meter eenvoudig te demonteren en systeem terug in bedrijf te stellen met de pasbuis
Mijn plan is om een kamstrup in de retour, en een sensor in de aanvoer te zetten van de WP. Dan kan ik het verschil goed meten.
Ik heb momenteel 5/4 draad aan een klep waar ik dit op zou kunnen aansluiten, dan hoeft er in principe nog maar 1 klep bij om het wijzigbaar te maken.
Ik zou ook een kamstrup op mijn afgifte willen zetten met aanvoer en retour, zodat ik de performance van de WP en die van de afgifte separaat kan meten. (er zit een 500L vat tussen wat lekker stabiliseert).
Mijn lijstje is nu dus deze set:
2x https://zaehleronlineshop...t-meter-directly-immersed
2x https://zaehleronlineshop...25-52-wire-M-Bus-16-Y-Bat
en dan nog wat verloop van/naar 1" en 5/4
klopt dat een beetje of mis ik dan nog een stel sensoren?

  • Ronald
  • Registratie: Juli 2000
  • Laatst online: 09:15
@Beer070 die Kamstrup is G1, dus pak veel voordeliger G1 aansluitset. https://zaehleronlineshop...t-meter-directly-immersed

Adapter de kranen dan naar G5/4, Dat adapteren moet je toch doen... en G1 voor dat kleine stukje maakt echt niet uit.

[ Voor 18% gewijzigd door Ronald op 24-03-2026 16:13 ]

PV Output - Obdam; SolarEdge SE5K 'Voor korte strings'; 12x350Wp Oost-West 13°; 8x415Wp Zuid 10°; Totaal 7520Wp.


  • Beer070
  • Registratie: Augustus 2021
  • Laatst online: 09:12
Ronald schreef op dinsdag 24 maart 2026 @ 15:07:
@Beer070 die Kamstrup is G1, dus pak veel voordeliger G1 aansluitset. https://zaehleronlineshop...t-meter-directly-immersed

Adapter de kranen dan naar G5/4, Dat adapteren moet je toch doen... en G1 voor dat kleine stukje maakt echt niet uit.
Goed idee! Dank je wel!
Dat scheelt al 100 euro op de dompelbuizen.

  • Ronald
  • Registratie: Juli 2000
  • Laatst online: 09:15
Beer070 schreef op dinsdag 24 maart 2026 @ 18:00:
[...]

Goed idee! Dank je wel!
Dat scheelt al 100 euro op de dompelbuizen.
:9B *O*

PV Output - Obdam; SolarEdge SE5K 'Voor korte strings'; 12x350Wp Oost-West 13°; 8x415Wp Zuid 10°; Totaal 7520Wp.


  • Marc_Sway
  • Registratie: Oktober 2010
  • Laatst online: 01-05 19:21
Korte update van hier: om de 5 min krijg ik het gasverbruik hier binnen van de P1, vervolgens bereken ik hiermee het Actuele CV verbruik (in kW, bij benadering), 5 min vertraagd. Ik hou in dit geval geen rekening met het condensatie-effect (zoals op 24/3 genoemd).
Wat blijkt nu, in de praktijk kan mijn Intergas ketel gewoon veel lager moduleren dan ca 7kW wat de fabrikant aangeeft in hun specs.
Zijn er anderen die dit ook hebben ervaren, wellicht met andere ketels?

[ Voor 11% gewijzigd door Marc_Sway op 27-03-2026 19:40 ]


  • Andrehj
  • Registratie: Juni 2002
  • Niet online
@Marc_Sway Heb je ook een plaatje bij het praatje? En plaats die dan even in Gas besparen door middel van CV tuning deel IV (met hooguit hier een linkje), want in dat topic is die discussie veel beter op zijn plaats.

[ Voor 64% gewijzigd door Andrehj op 27-03-2026 20:07 ]

WP: ME PUHZ-SW75YAA + ERSD-VM2D + EV-WP-TWS-1W 300; AC: ME MXZ-2F42VF + 2x MSZ-LN25VGV; PV: 14.08 kWp O/W + SMA STP 8.0; Vent: Zehnder Q600 ERV + Ubbink AirExcellent.


  • Beer070
  • Registratie: Augustus 2021
  • Laatst online: 09:12
Net twee keer de kamstrup DN20 met aansluitsets besteld. ( https://zaehleronlineshop...25-52-wire-M-Bus-16-Y-Bat)
ik heb de usb modbus (mbus dus) adapters ook al, dus als alles binnen is kan ik het ergens deze zomer allemaal rustig aansluiten.
mooie controle op de aanvoer en afgifte vanuit het boilervat :)

  • Ronald
  • Registratie: Juli 2000
  • Laatst online: 09:15
@Beer070 Je hebt mbus (meterbus) adapters nodig, modbus is heel iets anders.

mbus mag met lange simpele snoeren werken en tientallen devices op een bus, dus waarom 2?

PV Output - Obdam; SolarEdge SE5K 'Voor korte strings'; 12x350Wp Oost-West 13°; 8x415Wp Zuid 10°; Totaal 7520Wp.


  • Beer070
  • Registratie: Augustus 2021
  • Laatst online: 09:12
Ronald schreef op woensdag 1 april 2026 @ 09:40:
@Beer070 Je hebt mbus (meterbus) adapters nodig, modbus is heel iets anders.

mbus mag met lange simpele snoeren werken en tientallen devices op een bus, dus waarom 2?
ik heb die bij aliexpress gekocht die jij had genoemd eerder. mbus usb adapters. met 2 waren er geen transport kosten, en voor 17 euro was dat de voordelige optie.
Als er een kapot gaat heb ik een reserve :)

  • Ronald
  • Registratie: Juli 2000
  • Laatst online: 09:15
Bij mij is Node red 20.2.4 zo hard omgevallen dat hij niet meer start, lijkt op enkele apk installaties die niet meer willen.

Op node red 21.0.7 lijkt -contrib-Mbus niet werkend te krijgen…

Heeft iemand de Kamstrup uitlezing nog werkend?

PV Output - Obdam; SolarEdge SE5K 'Voor korte strings'; 12x350Wp Oost-West 13°; 8x415Wp Zuid 10°; Totaal 7520Wp.


  • Andrehj
  • Registratie: Juni 2002
  • Niet online
Ronald schreef op zaterdag 25 april 2026 @ 11:52:
Bij mij is Node red 20.2.4 zo hard omgevallen dat hij niet meer start, lijkt op enkele apk installaties die niet meer willen.

Op node red 21.0.7 lijkt -contrib-Mbus niet werkend te krijgen…

Heeft iemand de Kamstrup uitlezing nog werkend?
Hier al jaren probleemloos (op een Pi, met Domoticz en een gemodificeerd script van @AUijtdehaag ). Geen last van issues met Node red dus :) .

WP: ME PUHZ-SW75YAA + ERSD-VM2D + EV-WP-TWS-1W 300; AC: ME MXZ-2F42VF + 2x MSZ-LN25VGV; PV: 14.08 kWp O/W + SMA STP 8.0; Vent: Zehnder Q600 ERV + Ubbink AirExcellent.


  • Ronald
  • Registratie: Juli 2000
  • Laatst online: 09:15
Dat is heel mooi natuurlijk…

Ik heb de boel werkend gehackt nu met een installatie vanaf source van libmbus, npm rebuild van node-Mbus en node-red-contrib-Mbus


Wat een drama ;-)

Lijkt me niet de bedoeling van een nocode framework..

[ Voor 13% gewijzigd door Ronald op 25-04-2026 15:33 ]

PV Output - Obdam; SolarEdge SE5K 'Voor korte strings'; 12x350Wp Oost-West 13°; 8x415Wp Zuid 10°; Totaal 7520Wp.


  • Ronald
  • Registratie: Juli 2000
  • Laatst online: 09:15
@AUijtdehaag die had ik, via de ui.

Er was in node red 20 iets niet meer beschikbaar en in 21 is er van alles niet compatibel.

PV Output - Obdam; SolarEdge SE5K 'Voor korte strings'; 12x350Wp Oost-West 13°; 8x415Wp Zuid 10°; Totaal 7520Wp.


  • blb4
  • Registratie: April 2008
  • Laatst online: 07-05 19:31
Ronald schreef op zaterdag 25 april 2026 @ 16:06:
@AUijtdehaag die had ik, via de ui.

Er was in node red 20 iets niet meer beschikbaar en in 21 is er van alles niet compatibel.
Ik had dit probleem ook in mijn node-red die ik als Home Assistant app heb draaien. Ik draai 'm nu op mijn raspberry pi.

Panasonic J 7kW WP, boiler & HeishaMon, 6022 Wp PV, Enphase+MT GW, SOLAX SK-SU3000E 13kWh BESS, ITHO Qualityflow WTW, Elvi Smart Charging+ laadpunt, Kia EV6 84kWh EA MY25, gasloos '23


  • Andrehj
  • Registratie: Juni 2002
  • Niet online
@Ronald Idee: Kun je niet het script van @AUijtdehaag gebruiken en vanaf daar de data naar HA pushen? Zodat je niet van NodeRed etc afhankelijk bent?

WP: ME PUHZ-SW75YAA + ERSD-VM2D + EV-WP-TWS-1W 300; AC: ME MXZ-2F42VF + 2x MSZ-LN25VGV; PV: 14.08 kWp O/W + SMA STP 8.0; Vent: Zehnder Q600 ERV + Ubbink AirExcellent.


  • Ronald
  • Registratie: Juli 2000
  • Laatst online: 09:15
@Andrehj ik kan alles voor elkaar krijgen… ben uiteindelijk programmeur… maar ik dacht met Node red in HA iets wat weinig/geen beheer nodig heeft te hebben…

Wordt denk ik maar een eigen app viben;-)

PV Output - Obdam; SolarEdge SE5K 'Voor korte strings'; 12x350Wp Oost-West 13°; 8x415Wp Zuid 10°; Totaal 7520Wp.


  • AnneTweaks
  • Registratie: Mei 2007
  • Laatst online: 29-04 11:30
In principe zou het met AI niet al te moeilijk moeten zijn om versies om te laten zetten?

Anne (m) - Verbruik: 9500->6100->2765kWh/j - 3000->1970->1160m3/j - 210->66lL/j - Aquasol LB 90 2,3m2 3,8GJ - Allmess MK MaXX - 55m2 Groendak - Dak&Vloer isolatie - Elga - 3600Wp - Vrijwillig 'Energiecoach' DH - https://www.youtube.com/watch?v=j__pAGDBdbU


  • Ronald
  • Registratie: Juli 2000
  • Laatst online: 09:15
De node red flow is helemaal niet complex... zeker de originele van @AUijtdehaag niet... Daar is AI echt niet voor nodig...

Er is een heleboel wat Node Red voor je afhandelt. Of AppDaemon. Maar beide hebben het issue dat de installatie van libmbus eigenlijk niet ondersteund is op alpine linux, maar met wat hacks wel kan.

PV Output - Obdam; SolarEdge SE5K 'Voor korte strings'; 12x350Wp Oost-West 13°; 8x415Wp Zuid 10°; Totaal 7520Wp.


  • Ronald
  • Registratie: Juli 2000
  • Laatst online: 09:15
Ik krijg met libmbus cli en node-js in vibe-app geen verbinding met de mbus master... dus ik laat dat lekker zitten...

Mijn Node-RED config hacks:
YAML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
theme: default
http_node:
  username: ""
  password: ""
http_static:
  username: ""
  password: ""
ssl: false
certfile: fullchain.pem
keyfile: privkey.pem
system_packages:
  - python3
  - make
  - g++
  - musl
  - linux-headers
  - build-base
  - git
  - cmake
  - libtool
  - automake
  - autoconf
  - pkgconfig
npm_packages:
  - node-red-contrib-m-bus
init_commands:
  - >-
    export PREFIX=/config/usr/local
    PKG_CONFIG_PATH=/config/usr/local/lib/pkgconfig
    LD_LIBRARY_PATH=/config/usr/local/lib &&  mkdir -p /config/src &&  cd
    /config/src &&  [ -d libmbus ] || git clone
    https://github.com/rscada/libmbus.git &&  cd libmbus &&  git pull &&
    ./build.sh &&  make &&  make install &&  echo "libmbus OK" || echo "libmbus
    niet geïnstalleerd"
  - >-
    export NODE_OPTIONS=--openssl-legacy-provider &&  cd
    /config/node_modules/node-mbus &&  npm rebuild &&  echo "node-mbus OK" ||
    echo "node-mbus niet gerebuild"
  - >-
    export PREFIX=/config/usr/local 
    PKG_CONFIG_PATH=/config/usr/local/lib/pkgconfig 
    LD_LIBRARY_PATH=/config/usr/local/lib && [ -d
    /config/node_modules/node-red-contrib-m-bus ] && cd
    /config/node_modules/node-red-contrib-m-bus && npm rebuild
    --build-from-source && echo "node-red-contrib-m-bus OK" || echo
    "node-red-contrib-m-bus niet gerebuild"
En de Kamstrup 303 warmte-koude flow:
code:
1
[{"id":"658df53c04c5c1b7","type":"tab","label":"M-Bus (Kamstrup MULTICAL 303)","disabled":false,"locked":true,"info":"","env":[]},{"id":"cf5d592c467339ba","type":"group","z":"658df53c04c5c1b7","style":{"stroke":"#999999","stroke-opacity":"1","fill":"none","fill-opacity":"1","label":true,"label-position":"nw","color":"#a4a4a4"},"nodes":["e8ea4efdf8164b3e","9c54a7aaf7ec60c4","fb4d6fadcfd5d2ce","c50d7784596b8259","fc364005966472e3","5b8912dee5021f95","d5691645596c7eae"],"x":34,"y":1319,"w":572,"h":182},{"id":"27fba1748c775fe1","type":"group","z":"658df53c04c5c1b7","style":{"stroke":"#999999","stroke-opacity":"1","fill":"none","fill-opacity":"1","label":true,"label-position":"nw","color":"#a4a4a4"},"nodes":["fdfd0ab7ee3071a5","1cb1a55a41af8b51","3316a3587c2327a8","bdf67bb3bc1ab828","0519335ea7e7182a","7eb5fc81d2474ac3","985765cbe335369b","08cb177c61e65367"],"x":34,"y":853,"w":1618,"h":434},{"id":"b2bd19c4cb3dc9f6","type":"group","z":"658df53c04c5c1b7","style":{"stroke":"#999999","stroke-opacity":"1","fill":"none","fill-opacity":"1","label":true,"label-position":"nw","color":"#a4a4a4"},"nodes":["b5c0b8d1ebd0ed68","51c6785a06372704","cdfa005bc94c9b94","eca1b9a1b1f4f725","ee24cadccef99493","45e44223d459fc0b","fd1e9bc70c631601","782b8713435f3718","e0d50721b8d45743","4404989ebada510e","7193e9f766133ff4","729ccd384e04de4e","50f37f7c0ba79383","7a0b1fdc774761af","1b5529266061fbcd"],"x":34,"y":39,"w":1232,"h":242},{"id":"74a14186b19e9911","type":"group","z":"658df53c04c5c1b7","style":{"stroke":"#999999","stroke-opacity":"1","fill":"none","fill-opacity":"1","label":true,"label-position":"nw","color":"#a4a4a4"},"nodes":["33bb6994f81c593d","2ad2f3a76e36b2f6","cb4926b6e9caee69","d32378ad48d0fb3a","ed035ae816d5d0b0","a7d10f616f79dff5","07e0cbeb940c7869","1e5f855c1a77353d","932996d15fe7cea5","c9467e6c85e3d8cc","7f05a5b2125c9aba","366eb735e0331824","6b07be532415d622","41ae921d7f763714"],"x":34,"y":319,"w":1712,"h":202},{"id":"55c57acc70872f6e","type":"group","z":"658df53c04c5c1b7","style":{"stroke":"#999999","stroke-opacity":"1","fill":"none","fill-opacity":"1","label":true,"label-position":"nw","color":"#a4a4a4"},"nodes":["7dd98d7b44228e9b","8e001771ea8101f3","755657e857b43d78","d32fa7b4b532b429","2ee92b2e8a96e956","ca3a17ce1d6487d0","2e41f73e4107182d","8a7ea2d461c60215","ccb431960b10ce9b","40815062731d86ac","d0641e012b13ef8c","7bc088bd4cbe5f2b","305dac9f911c64f6","3580dd1e8dac9360","190cc0b968686a58","e8a04518b3e2ab90","4aec4003a9c0afb3"],"x":34,"y":559,"w":1912,"h":262},{"id":"bdf67bb3bc1ab828","type":"group","z":"658df53c04c5c1b7","g":"27fba1748c775fe1","style":{"stroke":"#999999","stroke-opacity":"1","fill":"none","fill-opacity":"1","label":true,"label-position":"nw","color":"#a4a4a4"},"nodes":["02366edaa688e1d1","9e8d21c581d0498c","579ff54e675c9091","8b1a86b47f413dba","d7346bccd8ac73c6","74bc631df902b486"],"x":874,"y":879,"w":492,"h":182},{"id":"0519335ea7e7182a","type":"group","z":"658df53c04c5c1b7","g":"27fba1748c775fe1","style":{"stroke":"#999999","stroke-opacity":"1","fill":"none","fill-opacity":"1","label":true,"label-position":"nw","color":"#a4a4a4"},"nodes":["6aa1c01a626b28e4","c970444b0d4c7e71","8d887bef1693a49a","d30b22e19aed3aa7","f6dfb4469db7d20d","57ceef80be51bf27","95438e13a0af513d"],"x":874,"y":1079,"w":752,"h":182},{"id":"2ad2f3a76e36b2f6","type":"mbus-controller","z":"658df53c04c5c1b7","g":"74a14186b19e9911","name":"M-Bus scan","client":"b8af9f24.8bce","x":990,"y":420,"wires":[["d32378ad48d0fb3a","07e0cbeb940c7869"]]},{"id":"b5c0b8d1ebd0ed68","type":"inject","z":"658df53c04c5c1b7","g":"b2bd19c4cb3dc9f6","name":"Start","props":[],"repeat":"","crontab":"","once":true,"onceDelay":"10","topic":"","x":130,"y":140,"wires":[["51c6785a06372704"]]},{"id":"ee24cadccef99493","type":"catch","z":"658df53c04c5c1b7","g":"b2bd19c4cb3dc9f6","name":"","scope":null,"uncaught":false,"x":140,"y":200,"wires":[["45e44223d459fc0b"]]},{"id":"45e44223d459fc0b","type":"debug","z":"658df53c04c5c1b7","g":"b2bd19c4cb3dc9f6","name":"Error","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":330,"y":200,"wires":[]},{"id":"33bb6994f81c593d","type":"delay","z":"658df53c04c5c1b7","g":"74a14186b19e9911","name":"Timeout 3 minutes","pauseType":"delay","timeout":"3","timeoutUnits":"minutes","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":390,"y":480,"wires":[["cb4926b6e9caee69"]]},{"id":"cb4926b6e9caee69","type":"switch","z":"658df53c04c5c1b7","g":"74a14186b19e9911","name":"","property":"mbScanComplete","propertyType":"flow","rules":[{"t":"false"}],"checkall":"true","repair":false,"outputs":1,"x":610,"y":480,"wires":[["33bb6994f81c593d","a7d10f616f79dff5"]]},{"id":"d32378ad48d0fb3a","type":"function","z":"658df53c04c5c1b7","g":"74a14186b19e9911","name":"Store devices in flow","func":"flow.set(\"mbScanComplete\", true);\nflow.set(\"devices\", msg.payload.map(secondaryID => { return { secondaryID: secondaryID };}));\n\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1270,"y":420,"wires":[["ed035ae816d5d0b0"]]},{"id":"51c6785a06372704","type":"function","z":"658df53c04c5c1b7","g":"b2bd19c4cb3dc9f6","name":"Clear flow variables","func":"flow.set(\"mbScanComplete\", false);\nflow.set(\"publishedMQTTDiscoveryData\", false);\nflow.set(\"devices\", {});\n\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":370,"y":140,"wires":[["e0d50721b8d45743"]]},{"id":"7dd98d7b44228e9b","type":"delay","z":"658df53c04c5c1b7","g":"55c57acc70872f6e","name":"Interval 1 minute","pauseType":"delay","timeout":"1","timeoutUnits":"minutes","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":1240,"y":660,"wires":[["d0641e012b13ef8c"]]},{"id":"8e001771ea8101f3","type":"split","z":"658df53c04c5c1b7","g":"55c57acc70872f6e","name":"For each device","splt":"\\n","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"","property":"payload","x":760,"y":660,"wires":[["ca3a17ce1d6487d0","ccb431960b10ce9b"]]},{"id":"ed035ae816d5d0b0","type":"link out","z":"658df53c04c5c1b7","g":"74a14186b19e9911","name":"link out 2","mode":"link","links":["755657e857b43d78"],"x":1465,"y":420,"wires":[]},{"id":"755657e857b43d78","type":"link in","z":"658df53c04c5c1b7","g":"55c57acc70872f6e","name":"link in 2","links":["ed035ae816d5d0b0"],"x":275,"y":660,"wires":[["2e41f73e4107182d"]]},{"id":"d32fa7b4b532b429","type":"debug","z":"658df53c04c5c1b7","g":"55c57acc70872f6e","name":"getDevice result","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":1780,"y":780,"wires":[]},{"id":"2ee92b2e8a96e956","type":"mbus-controller","z":"658df53c04c5c1b7","g":"55c57acc70872f6e","name":"M-Bus getDevice","client":"b8af9f24.8bce","x":1510,"y":720,"wires":[["d32fa7b4b532b429","40815062731d86ac"]]},{"id":"ca3a17ce1d6487d0","type":"function","z":"658df53c04c5c1b7","g":"55c57acc70872f6e","name":"getDevice","func":"const secondaryID = msg.payload.secondaryID;\n\nmsg = {}\nmsg.topic = \"getDevice\"\nmsg.payload = { \"address\": secondaryID }\n\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":980,"y":660,"wires":[["7dd98d7b44228e9b","8a7ea2d461c60215","7bc088bd4cbe5f2b"]]},{"id":"2e41f73e4107182d","type":"function","z":"658df53c04c5c1b7","g":"55c57acc70872f6e","name":"Retrieve devices from flow","func":"msg.payload = flow.get(\"devices\");\n\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":480,"y":660,"wires":[["8e001771ea8101f3"]]},{"id":"a7d10f616f79dff5","type":"function","z":"658df53c04c5c1b7","g":"74a14186b19e9911","name":"scan","func":"msg = {}\nmsg.topic = \"scan\"\n\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":790,"y":420,"wires":[["2ad2f3a76e36b2f6","1e5f855c1a77353d","33bb6994f81c593d"]]},{"id":"07e0cbeb940c7869","type":"debug","z":"658df53c04c5c1b7","g":"74a14186b19e9911","name":"scan result","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":1240,"y":480,"wires":[]},{"id":"1e5f855c1a77353d","type":"debug","z":"658df53c04c5c1b7","g":"74a14186b19e9911","name":"scan command","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":1000,"y":480,"wires":[]},{"id":"8a7ea2d461c60215","type":"debug","z":"658df53c04c5c1b7","g":"55c57acc70872f6e","name":"getDevice command","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":1260,"y":780,"wires":[]},{"id":"ccb431960b10ce9b","type":"debug","z":"658df53c04c5c1b7","g":"55c57acc70872f6e","name":"device","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":970,"y":780,"wires":[]},{"id":"fdfd0ab7ee3071a5","type":"switch","z":"658df53c04c5c1b7","g":"27fba1748c775fe1","name":"Publish discovery data?","property":"publishedMQTTDiscoveryData","propertyType":"flow","rules":[{"t":"false"},{"t":"else"}],"checkall":"true","repair":false,"outputs":2,"x":450,"y":960,"wires":[["9e8d21c581d0498c","02366edaa688e1d1","1cb1a55a41af8b51"],["6aa1c01a626b28e4"]]},{"id":"02366edaa688e1d1","type":"function","z":"658df53c04c5c1b7","g":"bdf67bb3bc1ab828","name":"Publish config topic","func":"const primary_id = msg.payload.SlaveInformation.Id\nconst secondary_id = msg.payload.secondaryID\nconst manufacturer = msg.payload.SlaveInformation.Manufacturer\nconst model = msg.payload.SlaveInformation.Medium;\nconst name = msg.payload.SlaveInformation.ProductName;\n\nconst override = flow.get(\"overrides\")[secondary_id];\n\n// Te publiceren device\nconst device = {\n    identifiers: [manufacturer + \"_\" + primary_id],\n    manufacturer: override.manufacturer || manufacturer,\n    model: override.model || model,\n    name: override.name || name\n};\n\n// Te publiceren sensoren\nconst sensors = [\n    { id: \"last_updated\", name: \"Last updated\", device_class: \"timestamp\", state_class: \"total_increasing\", entity_category: \"diagnostic\"},\n    \n    { id: \"heat_energy\", name: \"Heat energy\", unit: \"kWh\", device_class: \"energy\", state_class: \"total_increasing\" },\n    { id: \"cool_energy\", name: \"Cool energy\", unit: \"kWh\", device_class: \"energy\", state_class: \"total_increasing\" },\n    { id: \"volume\", name: \"Volume\", unit: \"m³\", device_class: \"volume\", state_class: \"total_increasing\" },\n\n    { id: \"on_time\", name: \"On time\", unit: \"h\", device_class: \"duration\", state_class: \"total_increasing\", entity_category: \"diagnostic\" },\n    { id: \"on_time_during_error_state\", name: \"On time during error state\", unit: \"h\", device_class: \"duration\", state_class: \"total_increasing\", entity_category: \"diagnostic\" },\n\n    { id: \"flow_temperature\", name: \"Flow temperature\", unit: \"°C\", device_class: \"temperature\", state_class: \"measurement\" },\n    { id: \"return_temperature\", name: \"Return temperature\", unit: \"°C\", device_class: \"temperature\", state_class: \"measurement\" },\n    { id: \"temperature_difference\", name: \"Temperature difference\", unit: \"°C\", device_class: \"temperature\", state_class: \"measurement\" },\n\n    { id: \"power\", name: \"Power\", unit: \"W\", device_class: \"power\", state_class: \"measurement\" },\n    { id: \"maximum_power\", name: \"Maximum power\", unit: \"W\", device_class: \"power\", state_class: \"measurement\" },\n\n    { id: \"volume_flow\", name: \"Volume flow\", unit: \"m³/h\", device_class: \"volume_flow_rate\", state_class: \"measurement\" },\n    { id: \"maximum_volume_flow\", name: \"Maximum volume flow\", unit: \"m³/h\", device_class: \"volume_flow_rate\", state_class: \"measurement\" },\n];\n\n// Basisfunctie om config en state te publiceren\nfunction publishSensor(mqtt, id, name, unit, device_class, state_class, entity_category) {\n    const unique_id = manufacturer + \"_\" + primary_id + \"_\" + id;\n    const configTopic = `homeassistant/sensor/${unique_id}/config`;\n    const stateTopic = `homeassistant/sensor/${unique_id}/state`;\n\n    const configPayload = {\n        name: name,\n        state_topic: stateTopic,\n        unique_id: unique_id,\n        device: device\n    };\n\n    if (unit) configPayload.unit_of_measurement = unit;\n    if (device_class) configPayload.device_class = device_class;\n    if (state_class) configPayload.state_class = state_class;\n    if (entity_category) configPayload.entity_category = entity_category;\n\n    // Publiceer config (retain zodat HA het onthoudt)\n    mqtt.send({ topic: configTopic, payload: JSON.stringify(configPayload), retain: true });\n    // Publiceer actuele waarde\n}\n\n// Stuur alles via een MQTT out node\nsensors.forEach(sensor => publishSensor(node, sensor.id, sensor.name, sensor.unit, sensor.device_class, sensor.state_class, sensor.entity_category));\n\nflow.set(\"publishedMQTTDiscoveryData\", true)","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":990,"y":960,"wires":[["579ff54e675c9091","d7346bccd8ac73c6"]]},{"id":"9e8d21c581d0498c","type":"debug","z":"658df53c04c5c1b7","g":"bdf67bb3bc1ab828","name":"Config","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":950,"y":1020,"wires":[]},{"id":"579ff54e675c9091","type":"debug","z":"658df53c04c5c1b7","g":"bdf67bb3bc1ab828","name":"Config topic","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":1250,"y":1020,"wires":[]},{"id":"8b1a86b47f413dba","type":"comment","z":"658df53c04c5c1b7","g":"bdf67bb3bc1ab828","name":"Generate config topics","info":"","x":1000,"y":920,"wires":[]},{"id":"e8ea4efdf8164b3e","type":"mqtt out","z":"658df53c04c5c1b7","g":"cf5d592c467339ba","name":"","topic":"","qos":"","retain":"","respTopic":"","contentType":"","userProps":"","correl":"","expiry":"","broker":"73d4d5f740a87774","x":430,"y":1460,"wires":[]},{"id":"9c54a7aaf7ec60c4","type":"comment","z":"658df53c04c5c1b7","g":"cf5d592c467339ba","name":"Send to MQTT broker","info":"","x":480,"y":1420,"wires":[]},{"id":"1cb1a55a41af8b51","type":"delay","z":"658df53c04c5c1b7","g":"27fba1748c775fe1","name":"","pauseType":"delay","timeout":"3","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":700,"y":1160,"wires":[["6aa1c01a626b28e4"]]},{"id":"6aa1c01a626b28e4","type":"function","z":"658df53c04c5c1b7","g":"0519335ea7e7182a","name":"Extract & Format","func":"const primary_id = msg.payload.SlaveInformation.Id\nconst manufacturer = msg.payload.SlaveInformation.Manufacturer\n\nconst LastUpdated = new Date(msg.payload.DataRecord[0].Timestamp).toISOString();\n\nconst HeatEnergy = msg.payload.DataRecord[0].Value;\nconst CoolEnergy = msg.payload.DataRecord[1].Value;\nconst Volume = msg.payload.DataRecord[2].Value / 100;\n\nconst OnTime = msg.payload.DataRecord[5].Value;\nconst OnTimeDuringErrorState = msg.payload.DataRecord[6].Value;\n\nconst FlowTemperature = msg.payload.DataRecord[7].Value / 100;\nconst ReturnTemperature = msg.payload.DataRecord[8].Value / 100;\nconst TemperatureDifference = msg.payload.DataRecord[9].Value / 100;\n\nconst Power = msg.payload.DataRecord[10].Value / 100;\nconst MaximumPower = msg.payload.DataRecord[11].Value / 100;\n\nconst VolumeFlow = msg.payload.DataRecord[12].Value / 100;\nconst MaximumVolumeFlow = msg.payload.DataRecord[13].Value / 100;\n\nreturn {\n    'device': {\n        'primary_id': primary_id,\n        'manufacturer': manufacturer\n    },\n    'payload':\n    {\n\n        'LastUpdated': LastUpdated,\n        'HeatEnergy': HeatEnergy,\n        'CoolEnergy': CoolEnergy,\n        'Volume': Volume,\n        'OnTime': OnTime,\n        'OnTimeDuringErrorState': OnTimeDuringErrorState,\n        'FlowTemperature': FlowTemperature,\n        'ReturnTemperature': ReturnTemperature,\n        'TemperatureDifference': TemperatureDifference,\n        'Power': Power,\n        'MaximumPower': MaximumPower,\n        'VolumeFlow': VolumeFlow,\n        'MaximumVolumeFlow': MaximumVolumeFlow\n    }\n};\n","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":990,"y":1160,"wires":[["d30b22e19aed3aa7","c970444b0d4c7e71"]]},{"id":"c970444b0d4c7e71","type":"function","z":"658df53c04c5c1b7","g":"0519335ea7e7182a","name":"Publish state topic","func":"// Basisfunctie om config en state te publiceren\nfunction publishSensor(node, id, value) {\n    const unique_id = msg.device.manufacturer + \"_\" + msg.device.primary_id + \"_\" + id;\n    const stateTopic = `homeassistant/sensor/${unique_id}/state`;\n\n    // Publiceer actuele waarde\n    node.send({ topic: stateTopic, payload: String(value) });\n}\n\n\nconst sensors = [\n    { id: \"last_updated\", value: msg.payload.LastUpdated },\n\n    { id: \"heat_energy\", value: msg.payload.HeatEnergy },\n    { id: \"cool_energy\", value: msg.payload.CoolEnergy },\n    { id: \"volume\", value: msg.payload.Volume },\n\n    { id: \"on_time\", value: msg.payload.OnTime },\n    { id: \"on_time_during_error_state\", value: msg.payload.OnTimeDuringErrorState },\n\n    { id: \"flow_temperature\", value: msg.payload.FlowTemperature },\n    { id: \"return_temperature\", value: msg.payload.ReturnTemperature },\n    { id: \"temperature_difference\", value: msg.payload.TemperatureDifference },\n\n    { id: \"power\", value: msg.payload.Power },\n    { id: \"maximum_power\", value: msg.payload.MaximumPower },\n\n    { id: \"volume_flow\", value: msg.payload.VolumeFlow },\n    { id: \"maximum_volume_flow\", value: msg.payload.MaximumVolumeFlow }\n];\n\n\n// Stuur alles via een MQTT out node\nsensors.forEach(sensor => publishSensor(node, sensor.id, sensor.value));\n\nreturn null;\n","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1250,"y":1160,"wires":[["8d887bef1693a49a","57ceef80be51bf27"]]},{"id":"8d887bef1693a49a","type":"debug","z":"658df53c04c5c1b7","g":"0519335ea7e7182a","name":"State topic","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":1510,"y":1220,"wires":[]},{"id":"d30b22e19aed3aa7","type":"debug","z":"658df53c04c5c1b7","g":"0519335ea7e7182a","name":"Formatted","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":1230,"y":1220,"wires":[]},{"id":"40815062731d86ac","type":"link out","z":"658df53c04c5c1b7","g":"55c57acc70872f6e","name":"link out 3","mode":"link","links":["3316a3587c2327a8"],"x":1685,"y":720,"wires":[]},{"id":"3316a3587c2327a8","type":"link in","z":"658df53c04c5c1b7","g":"27fba1748c775fe1","name":"link in 3","links":["40815062731d86ac"],"x":255,"y":960,"wires":[["fdfd0ab7ee3071a5"]]},{"id":"f6dfb4469db7d20d","type":"comment","z":"658df53c04c5c1b7","g":"0519335ea7e7182a","name":"Generate state topics","info":"","x":1000,"y":1120,"wires":[]},{"id":"d0641e012b13ef8c","type":"switch","z":"658df53c04c5c1b7","g":"55c57acc70872f6e","name":"","property":"mbScanComplete","propertyType":"flow","rules":[{"t":"true"}],"checkall":"true","repair":false,"outputs":1,"x":1510,"y":660,"wires":[["2e41f73e4107182d"]]},{"id":"cdfa005bc94c9b94","type":"change","z":"658df53c04c5c1b7","g":"b2bd19c4cb3dc9f6","name":"Reset","rules":[{"t":"set","p":"reset","pt":"msg","to":"true","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":850,"y":200,"wires":[["782b8713435f3718","1b5529266061fbcd"]]},{"id":"eca1b9a1b1f4f725","type":"comment","z":"658df53c04c5c1b7","g":"b2bd19c4cb3dc9f6","name":"Reset messages in timeout / interval nodes","info":"","x":960,"y":100,"wires":[]},{"id":"d7346bccd8ac73c6","type":"link out","z":"658df53c04c5c1b7","g":"bdf67bb3bc1ab828","name":"link out 4","mode":"link","links":["fb4d6fadcfd5d2ce"],"x":1165,"y":960,"wires":[]},{"id":"fb4d6fadcfd5d2ce","type":"link in","z":"658df53c04c5c1b7","g":"cf5d592c467339ba","name":"link in 4","links":["d7346bccd8ac73c6"],"x":275,"y":1420,"wires":[["e8ea4efdf8164b3e"]]},{"id":"57ceef80be51bf27","type":"link out","z":"658df53c04c5c1b7","g":"0519335ea7e7182a","name":"link out 5","mode":"link","links":["fc364005966472e3"],"x":1425,"y":1160,"wires":[]},{"id":"7eb5fc81d2474ac3","type":"comment","z":"658df53c04c5c1b7","g":"27fba1748c775fe1","name":"Generate MQTT topics","info":"","x":160,"y":900,"wires":[]},{"id":"7bc088bd4cbe5f2b","type":"switch","z":"658df53c04c5c1b7","g":"55c57acc70872f6e","name":"Check address","property":"payload.address","propertyType":"msg","rules":[{"t":"nempty"}],"checkall":"true","repair":false,"outputs":1,"x":1240,"y":720,"wires":[["2ee92b2e8a96e956"]]},{"id":"fd1e9bc70c631601","type":"comment","z":"658df53c04c5c1b7","g":"b2bd19c4cb3dc9f6","name":"Initialize flow","info":"","x":150,"y":80,"wires":[]},{"id":"932996d15fe7cea5","type":"comment","z":"658df53c04c5c1b7","g":"74a14186b19e9911","name":"Scan M-Bus for devices","info":"","x":160,"y":360,"wires":[]},{"id":"305dac9f911c64f6","type":"comment","z":"658df53c04c5c1b7","g":"55c57acc70872f6e","name":"Send getDevice for each device on M-BUS","info":"","x":220,"y":600,"wires":[]},{"id":"c9467e6c85e3d8cc","type":"link in","z":"658df53c04c5c1b7","g":"74a14186b19e9911","name":"link in 5","links":["782b8713435f3718"],"x":195,"y":480,"wires":[["33bb6994f81c593d"]]},{"id":"782b8713435f3718","type":"link out","z":"658df53c04c5c1b7","g":"b2bd19c4cb3dc9f6","name":"link out 7","mode":"link","links":["c9467e6c85e3d8cc"],"x":1025,"y":200,"wires":[]},{"id":"3580dd1e8dac9360","type":"link in","z":"658df53c04c5c1b7","g":"55c57acc70872f6e","name":"link in 7","links":["1b5529266061fbcd"],"x":1055,"y":600,"wires":[["7dd98d7b44228e9b"]]},{"id":"e0d50721b8d45743","type":"function","z":"658df53c04c5c1b7","g":"b2bd19c4cb3dc9f6","name":"Configure overrides","func":"flow.set(\"overrides\", {\n    \"830333922D2C400D\": {\n        \"manufacturer\": \"Kamstrup\",\n        \"model\": \"MULTICAL 303\",\n        \"name\": \"Kamstrup MULTICAL 303\"\n    }\n})\n\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":630,"y":140,"wires":[["cdfa005bc94c9b94","7193e9f766133ff4"]]},{"id":"985765cbe335369b","type":"comment","z":"658df53c04c5c1b7","g":"27fba1748c775fe1","name":"Discovery data first","info":"","x":730,"y":1120,"wires":[]},{"id":"4404989ebada510e","type":"link out","z":"658df53c04c5c1b7","g":"b2bd19c4cb3dc9f6","name":"link out 6","mode":"link","links":["7f05a5b2125c9aba"],"x":1025,"y":140,"wires":[]},{"id":"7f05a5b2125c9aba","type":"link in","z":"658df53c04c5c1b7","g":"74a14186b19e9911","name":"link in 6","links":["4404989ebada510e"],"x":195,"y":420,"wires":[["a7d10f616f79dff5"]]},{"id":"7193e9f766133ff4","type":"delay","z":"658df53c04c5c1b7","g":"b2bd19c4cb3dc9f6","name":"","pauseType":"delay","timeout":"1","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":860,"y":140,"wires":[["4404989ebada510e"]]},{"id":"366eb735e0331824","type":"comment","z":"658df53c04c5c1b7","g":"74a14186b19e9911","name":"Reset ->","info":"","x":120,"y":480,"wires":[]},{"id":"190cc0b968686a58","type":"comment","z":"658df53c04c5c1b7","g":"55c57acc70872f6e","name":"Reset ->","info":"","x":980,"y":600,"wires":[]},{"id":"729ccd384e04de4e","type":"comment","z":"658df53c04c5c1b7","g":"b2bd19c4cb3dc9f6","name":"-> scan","info":"","x":1090,"y":140,"wires":[]},{"id":"6b07be532415d622","type":"comment","z":"658df53c04c5c1b7","g":"74a14186b19e9911","name":"delay 1s ->","info":"","x":120,"y":420,"wires":[]},{"id":"50f37f7c0ba79383","type":"comment","z":"658df53c04c5c1b7","g":"b2bd19c4cb3dc9f6","name":"-> Timeout 3 minutes","info":"","x":1140,"y":200,"wires":[]},{"id":"41ae921d7f763714","type":"comment","z":"658df53c04c5c1b7","g":"74a14186b19e9911","name":"-> Retrieve devices from flow","info":"","x":1600,"y":420,"wires":[]},{"id":"e8a04518b3e2ab90","type":"comment","z":"658df53c04c5c1b7","g":"55c57acc70872f6e","name":"Store devices in flow ->","info":"","x":160,"y":660,"wires":[]},{"id":"4aec4003a9c0afb3","type":"comment","z":"658df53c04c5c1b7","g":"55c57acc70872f6e","name":"-> Publish discovery data?","info":"","x":1810,"y":720,"wires":[]},{"id":"74bc631df902b486","type":"comment","z":"658df53c04c5c1b7","g":"bdf67bb3bc1ab828","name":"-> mqtt","info":"","x":1230,"y":960,"wires":[]},{"id":"95438e13a0af513d","type":"comment","z":"658df53c04c5c1b7","g":"0519335ea7e7182a","name":"-> mqtt","info":"","x":1490,"y":1160,"wires":[]},{"id":"08cb177c61e65367","type":"comment","z":"658df53c04c5c1b7","g":"27fba1748c775fe1","name":"M-Bus getDevice ->","info":"","x":150,"y":960,"wires":[]},{"id":"7a0b1fdc774761af","type":"comment","z":"658df53c04c5c1b7","g":"b2bd19c4cb3dc9f6","name":"-> Interval 1 minute","info":"","x":1130,"y":240,"wires":[]},{"id":"1b5529266061fbcd","type":"link out","z":"658df53c04c5c1b7","g":"b2bd19c4cb3dc9f6","name":"link out 8","mode":"link","links":["3580dd1e8dac9360"],"x":1025,"y":240,"wires":[]},{"id":"c50d7784596b8259","type":"comment","z":"658df53c04c5c1b7","g":"cf5d592c467339ba","name":"Publish config topic ->","info":"","x":160,"y":1420,"wires":[]},{"id":"fc364005966472e3","type":"link in","z":"658df53c04c5c1b7","g":"cf5d592c467339ba","name":"link in 8","links":["57ceef80be51bf27"],"x":275,"y":1460,"wires":[["e8ea4efdf8164b3e"]]},{"id":"5b8912dee5021f95","type":"comment","z":"658df53c04c5c1b7","g":"cf5d592c467339ba","name":"Publish state topic ->","info":"","x":170,"y":1460,"wires":[]},{"id":"d5691645596c7eae","type":"comment","z":"658df53c04c5c1b7","g":"cf5d592c467339ba","name":"Publish to MQTT broker","info":"","x":160,"y":1360,"wires":[]},{"id":"b8af9f24.8bce","type":"mbus-client","name":"M-Bus USB serial","clienttype":"serial","tcpHost":"127.0.0.1","tcpPort":"10001","tcpTimeout":"4000","serialPort":"/dev/serial/by-id/usb-1a86_USB_Serial-if00-port0","serialBaudrate":"2400","reconnectTimeout":"30000","autoScan":false,"storeDevices":false,"disableLogs":false},{"id":"73d4d5f740a87774","type":"mqtt-broker","name":"Home assistant Mosquitto broker","broker":" core-mosquitto","port":1883,"clientid":"","autoConnect":true,"usetls":false,"protocolVersion":4,"keepalive":60,"cleansession":true,"autoUnsubscribe":true,"birthTopic":"","birthQos":"0","birthRetain":"false","birthPayload":"","birthMsg":{},"closeTopic":"","closeQos":"0","closeRetain":"false","closePayload":"","closeMsg":{},"willTopic":"","willQos":"0","willRetain":"false","willPayload":"","willMsg":{},"userProps":"","sessionExpiry":""},{"id":"bc372d96c3eff0f8","type":"global-config","env":[],"modules":{"node-red-contrib-m-bus":"3.2.1"}}]
De rebuild van node-red-contrib-m-bus is wellicht overbodig, maar het kost maar een seconde of 2.

PV Output - Obdam; SolarEdge SE5K 'Voor korte strings'; 12x350Wp Oost-West 13°; 8x415Wp Zuid 10°; Totaal 7520Wp.

Pagina: 1 ... 9 10 Laatste