Ga naar inhoud

HeishaMon

HeishaMon is een open-source module voor Panasonic Aquarea. De module leest de data van de warmtepomp uit en kan de belangrijkste instellingen wijzigen. Zij vervangt of vult de Panasonic-netwerkadapter CZ-TAW1 aan. De module stuurt zelf niets: u stuurt, met domotica of met rules op de module zelf.

Documentatie, firmware en de volledige lijst met topics: HeishaMon op GitHub. Op Tweakers heeft HeishaMon een eigen topic.

Zie ook: Panasonic: instellingen · Stooklijn · Pendelen · Home Assistant · Sensoren · Bekabeling

Zo loopt de data. De CZ-TAW1 hangt op de proxypoort van de Large-versie (zie Hardware).

    flowchart LR
    WP["Warmtepomp<br/>hoofdprint"]
    HM["HeishaMon"]
    TAW["CZ-TAW1<br/>(optioneel, Large-versie)"]
    BR["MQTT-broker<br/>(bijv. Mosquitto)"]
    DOM["Domotica"]
    HIST["InfluxDB, Node-RED, Grafana"]
    WP <-->|"CN-CNT"| HM
    HM <-.->|"proxypoort"| TAW
    HM -->|"wifi of ethernet<br/>panasonic_heat_pump/main/#lt;naam#gt;"| BR
    BR -->|"panasonic_heat_pump/commands/#lt;commando#gt;"| HM
    BR --> DOM
    BR --> HIST
    DOM -.->|"HTTP: /command?..."| HM
  

Bronnen

Hardware

  • Kant-en-klaar printje. Te koop via de Tindie-winkel van thehog, een van de ontwikkelaars. Er zijn versies met wifi en met ethernet.
  • Large-versie. Heeft een proxypoort voor de Panasonic-netwerkadapter. Zo werken HeishaMon en de cloud tegelijk; ook instellingen wijzigen via de cloud werkt dan.
  • Zelf bouwen. De firmware is open source. Een gebruiker stelt een zelf gecompileerde HeishaMon op een ESP32 met ethernet voor.
  • Extra aansluitingen. S0-ingangen voor twee kWh-meters (S0_0, S0_1 en GND) en een schroefconnector voor 1-wire-sensoren (GND, data, 3,3 V). Op de foto van de v3-print heten de S0-klemmen S0_1, S0_2 en GND; de print heeft ook een programmeerheader (3V, TX, RX, GND). Het bordje vanaf v3.3 heeft drie vrije GPIO’s. Er is ook een versie voor een OpenTherm-thermostaat (in 2023 nog in bèta). De logica daarvoor maakt u zelf, bijv. met rules.

Plaats en bereik

  • De behuizing van de warmtepomp schermt wifi af. Bij slecht bereik: zet de module in een waterdicht kastje buiten tegen de unit, of gebruik ethernet.
  • De kabel naar de warmtepomp gebruikt een serieel protocol met een maximale lengte. Een gebruiker noemt 5 m zonder extra maatregelen. Voor lange afstanden bestaat een TTL-RS485-oplossing (zie de upstream-documentatie).

Bronnen

Aansluiten: CN-CNT en CN-NMODE

HeishaMon gaat op de CN-CNT-aansluiting van de hoofdprint. Daar zit anders de CZ-TAW1. De print heeft ook CN-NMODE, een 4-pins JST PH-connector. Die is elektrisch verbonden met CN-CNT; alleen de 12 V ontbreekt, en die gebruikt HeishaMon niet.

  • Sinds december 2022 levert thehog alleen nog CN-NMODE-kabels. Daarmee kiest u zelf: normaal of listen only, altijd op dezelfde connector.
  • De binnenunit van de M-serie (WH-ADC…) heeft CN-CNT2 voor de netwerkadapter en CN-CNT voor het uitbreidingsboard.

Let op: Netspanning op de print.

Op de hoofdprint staan hoge spanningen (bijv. 320 V op CN-PUMP1; handleiding H20: 280–373 V DC (handleiding, foto)). Schakel de spanning uit voordat u een kabel aansluit. De handleiding noemt voor de pomp-aansluiting 280–373 V DC (pin 1 en 4) en noemt die CN-PUMP2; op de print van een J-serie heet hij CN-PUMP1.

Bronnen

Alleen lezen of ook sturen

ModusAansluitingCZ-TAW1Sturen
Listen only (read-only)CN-NMODEblijft aangeslotennee
Normaal (lezen en schrijven)CN-CNT of CN-NMODEmoet erafja
Large met proxyCN-CNTop de proxypoortja
  • Naast de CZ-TAW1 hebt u minstens firmware 3.1 nodig. Oudere versies brachten de CZ-TAW1 in storing, ook met listen only aan.
  • Listen only zet u op afstand uit. Begin dus gerust read-only naast de CZ-TAW1, bijv. zolang de installateur via de cloud meekijkt.

Bronnen

Instellen: wifi en MQTT

  1. Wifi. Na een factory reset start HeishaMon een eigen hotspot. Ga naar 192.168.4.1 en stel in de webinterface het wifi-netwerk in. Ziet u de hotspot niet meer? Zet de groep van de warmtepomp even uit en weer aan.
  2. MQTT-broker. HeishaMon publiceert zijn data via MQTT. U hebt een broker nodig, bijv. Mosquitto op een Raspberry Pi. Veel gebruikers zetten er InfluxDB, Node-RED en Grafana naast voor historie en grafieken.
  3. Zonder broker sturen. HeishaMon accepteert ook HTTP-commando’s (zie hieronder).

Na een firmware-update: controleer uw automatiseringen. Bij v1.0 kreeg de module een factory reset en veranderden de topics. Slechte wifi gaf in oude versies veel MQTT-reconnects.

Meningen verschillen.

  • Niets voor beginners. Wie de antwoorden niet zelf in het topic kan vinden, kan beter de standaard netwerkmodule en de app van Panasonic nemen.
  • Uitlezen valt mee. Een beginner kreeg broker, database en dashboard werkend. Sturen vond hij lastiger.

Bronnen

MQTT-topics en commando’s

Waarden staan onder panasonic_heat_pump/main/<naam>, bijv. Heatpump_State. Commando’s stuurt u naar panasonic_heat_pump/commands/<commando>. Via HTTP: http://<ip-adres>/command?SetHeatpump=1. Meerdere commando’s combineert u met &.

CommandoWerking
SetHeatpump1 aan, 0 uit. Zonder externe thermostaat stopt alleen 0 de waterpomp na de run; dan stopt ook SWW
SetZ1HeatRequestTemperatureMet stooklijn: de shift (−5 tot +5). Met directe temperatuur: het doel in °C
SetOperationMode0 verwarmen, 1 koelen, 3 SWW, 4 verwarmen + SWW
SetForceDHWStart een SWW-run
SetDHWTempDoeltemperatuur SWW (40–75 °C)
SetForceSterilizationStart de legionellarun
SetQuietModeStille modus, bijv. 3
SetPumpWaterpomp 1 aan, 0 uit
SetMaxPumpDutyMaximale pompsnelheid, bijv. 124
SetCurvesDe hele stooklijn als JSON

Let op:

  • Met een externe thermostaat werkt de shift niet. Een gebruiker verschuift dan de hele stooklijn met SetCurves.
  • Zet u de warmtepomp aan met SetHeatpump=1, dan begint hij in verwarmen + SWW met SWW. Een gebruiker zet daarom bij het uitzetten ook SetOperationMode=0.
  • De blokkering op CN4 gaat voor SetHeatpump.
  • Main_Target_Temp (TOP7) is alleen-lezen: de warmtepomp berekent die zelf. De shift leest u in Z1_Heat_Request_Temp (TOP27).

Voorbeeld SetCurves (een bijna vlakke stooklijn, 26–28 °C):

SetCurves={"zone1":{"heat":{"target":{"high":28,"low":26},"outside":{"high":-7,"low":-15}}}}

Bronnen

1-wire-temperatuursensoren

Op de schroefconnector sluit u DS18B20-sensoren (1-wire, “Dallas”) aan. Hun waarden komen in de MQTT-data. Zo meet u op extra plaatsen: aanvoer, retour, boiler, lucht.

  • Nieuwere bordjes voeden de sensoren met 5 V in plaats van 3,3 V. Dat geeft meer kabellengte.
  • Het uitlezen duurt ruim 700 ms.
  • Originele Maxim-sensoren waren stabieler dan Chinese klonen.
  • Voor ΔT telt vooral dat twee sensoren gelijk meten. Kalibreer ze samen, bijv. in een bak water.
  • Voor goed contact: zet de sensor met koelpasta in een dompelbuis.

Bronnen

Rules

Met rules draait uw logica op de HeishaMon zelf. U hebt dan geen domoticaserver nodig. CurlyMo schreef de rules-library samen met thehog. De taal lijkt op de rules van ESPEasy.

ElementBetekenis
on <event> then … endBlok dat start bij een gebeurtenis of een aanroep
on System#Boot thenDraait bij het opstarten
on @Compressor_Freq thenDraait als die waarde van de warmtepomp verandert
on timer=5 then / setTimer(5, 60)Timer 5, na 60 seconden
@Outside_TempWaarde van de warmtepomp lezen
@SetHeatpump = 1;Commando naar de warmtepomp sturen
#naam / $naamGlobale / lokale variabele
%hour, %monthUur en maand
if … then … else … endVoorwaarde

Voorbeeld: de maximale pompsnelheid volgt de compressorfrequentie. Zet de pomp in het installatiemenu op max duty, niet op ΔT. De waarden vond de schrijver met proberen.

on System#Boot then
  #flowHigh = 140;
  #flowMid = 124;
  #flowLow = 92;
  #flowHighBoundary = 40;
  changePumpSpeed();
end

on @Compressor_Freq then
  changePumpSpeed();
end

on changePumpSpeed then
  if @Defrosting_State == 0 then
    if @Compressor_Freq > #flowHighBoundary then
      #flowHighBoundary = 30;
      $target = #flowHigh;
    else
      #flowHighBoundary = 40;
      if @Compressor_Freq > 0 then
        $target = #flowMid;
      else
        $target = #flowLow;
      end
    end
    if @Max_Pump_Duty != $target then
      @SetMaxPumpDuty = $target;
    end
  end
end

Tips:

  • Stuur een commando alleen als de waarde verandert (zoals @Max_Pump_Duty != $target).
  • Een gebruiker vroeg of elk SetZ1HeatRequestTemperature-commando naar het EEPROM van de warmtepomp schrijft. Het topic geeft geen duidelijk antwoord. CurlyMo beperkt het aantal commando’s alleen voor de pomp; bij de doeltemperatuur zou de compressor anders ontsnappen.
  • Versie 3.9 had een fout in de functies ceil en floor (gemeld in 2025).

Bronnen

Voorbeelden

  • Sturen op minimaal vermogen. De rules van CurlyMo zetten het doel steeds net onder de aanvoertemperatuur. De strategie staat op Panasonic: instellingen.
  • Stooklijn verschuiven. Rules verhogen of verlagen de shift op basis van de kamertemperatuur. Een gebruiker kreeg zo wel meer pendelen bij mild weer. Een ander gebruikt de shift juist om ongewenst uitschakelen te voorkomen. Zie ook Valse stops door de buitentemperatuur.
  • Pompsnelheid naar buitentemperatuur. De topicstart geeft een OpenHAB-script dat Pump_Duty aanpast. Met rules kan dit op de module (zie het voorbeeld hierboven).
  • SWW-run op commando. SetOperationMode=3, dan SetForceDHW. Als Force_DHW_State weer 0 is: terug naar 0 (verwarmen).
  • Pomp periodiek laten draaien, zodat hij niet vastloopt: SetPump=1, later SetPump=0.
  • OpenTherm-thermostaat. Een Evohome met OpenTherm-module op HeishaMon stuurt de warmtepomp via rules.

Bronnen