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
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.
Mijn HA server(tje) zit echter niet in de buurt van de CV, dus ik moet via LAN
Panasonic WH-MDC09J3E5, Atlantic Explorer V4 270C, 57x PV 23115 Wp
Panasonic WH-MDC09J3E5, Atlantic Explorer V4 270C, 57x PV 23115 Wp
https://m-bus.com/documentation-wired/04-physical-layerCable
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.
PV Output - Obdam; SolarEdge SE5K 'Voor korte strings'; 12x350Wp Oost-West 13°; 8x415Wp Zuid 10°; Totaal 7520Wp.
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.
Het prijsverschil met een 230V gevoede Kamstrup is aanzienlijk.
Panasonic WH-MDC09J3E5, Atlantic Explorer V4 270C, 57x PV 23115 Wp
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.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
Of werk je rechtsreeks via Nodered?
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.
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 ]
Panasonic WH-MDC09J3E5, Atlantic Explorer V4 270C, 57x PV 23115 Wp
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.
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
Dank je voor de informatie, ik heb Node Red nog niet aan de praat, daar ga ik binnenkort eens mee spelenRonald 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 ;-)
PV Output - Obdam; SolarEdge SE5K 'Voor korte strings'; 12x350Wp Oost-West 13°; 8x415Wp Zuid 10°; Totaal 7520Wp.
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?
ik heb er 2 besteld. voor het geval dat er 1 kapot gaat in transport.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
Nu nog even de juiste kamstrup erbij nemen.
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.
Warmteverlies coëfficiënten, temperatuur delta’s.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?
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.
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.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
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?
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.
Goed idee! Dank je wel!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.
Dat scheelt al 100 euro op de dompelbuizen.
Beer070 schreef op dinsdag 24 maart 2026 @ 18:00:
[...]
Goed idee! Dank je wel!
Dat scheelt al 100 euro op de dompelbuizen.
PV Output - Obdam; SolarEdge SE5K 'Voor korte strings'; 12x350Wp Oost-West 13°; 8x415Wp Zuid 10°; Totaal 7520Wp.
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 ]
[ 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.
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
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.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?
Als er een kapot gaat heb ik een reserve
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.
Hier al jaren probleemloos (op een Pi, met Domoticz en een gemodificeerd script van @AUijtdehaag ). Geen last van issues met Node red dusRonald 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?
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.
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.
Werkt dit truukje niet meer?
AUijtdehaag in "Kamstrup Multical 302 met Pi uitlezen en domoticz"
of deze
AUijtdehaag in "Kamstrup Multical 302 met Pi uitlezen en domoticz"
[ Voor 27% gewijzigd door AUijtdehaag op 25-04-2026 15:59 ]
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.
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.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.
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
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.
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.
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
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.
Mijn Node-RED config hacks:
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" |
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"}}] |
PV Output - Obdam; SolarEdge SE5K 'Voor korte strings'; 12x350Wp Oost-West 13°; 8x415Wp Zuid 10°; Totaal 7520Wp.
:strip_exif()/f/image/AEXdhK5Su3jXcpcDh1as6FiC.jpg?f=fotoalbum_large)
/f/image/xs4bOggiYSjkZNWeF83xqdlQ.avif?f=fotoalbum_large)