Panasonic Klima mit ESP32 steuern

Begonnen von Guybrush, 01 Juni 2025, 13:27:13

Vorheriges Thema - Nächstes Thema

Guybrush

Für leidgeplagte der bescheidenen Panasonic "Comfort" Cloud gibt es eine Alternative - die Steuerung der Klimageräte aus dem lokalen Netz ohne nervige Cloud. Hier mal meine Einbindung mit den entsprechenden Komponenten auf Basis von ESPHome - das Ganze ist echt trivial umzusetzen:

benötigte Komponenten:
- Waveshare ESP32-C3-Zero
- Kabel mit PAP-05V-S Stecker (z.b. https://www.amazon.de/dp/B0DRVP7FQF)
- 3D Drucker (optional)

Man kann natürlich auch andere ESP32 Boards nehmen, aber dann muss man ggf. die Pins anpassen. Diese Lösung funktioniert so wie sie ist mit den angegebenen Teilen:

  • Zuerst wird das gelbe Kabel vom Stecker entfernt. Das wird nicht benötigt und stört nur. Im Anschluss wird das Kabel auf den ESP32 gelötet, wie auf den Bildern zu sehen. (schwarz=5V, orange=GND, weiß=GPIO21, rot=GPIO20). Im Internet gibt es Beiträge, die sich mit dem Thema 5V Toleranz ja/nein beim ESP32 beschäftigen. Ich weiß nicht woher das kommt, aber die CN-CNT Pins (Farbe weiß+rot) senden maximal 2,6V in der high flank, so dass hier aus meiner Sicht nichts weiter nötig ist. Die GPIO Pins sind für 3,3V ausgelegt. Wer auf Nummer sicher gehen will kann hier noch einen passenden Widerstand zwischen setzen und beim weißen Kabel einen Levelshifter integrieren um die 3,3V auf 2,6V zu reduzieren. Das dürfte aber wohl überflüssig sein, zumal ein ESP32 nicht viel kostet.
  • Wer einen 3D Drucker hat, kann hierfür noch ein passendes Gehäuse drucken. Die STL Datei habe ich hier auch angefügt. diese passt perfekt ins Gehäuse der Klimageräte. Wer keinen 3D Drucker hat, der kann das Gehäuse des integrierten WLAN Adapters nutzen. Wenn gar nichts geht, dann sollte der ESP32 zumindest mit Isolierband umwickelt werden, damit an die Kontakte nichts kommt. Davon rate ich aber ab. Dann doch besser bei einem Anbieter im Internet den 3D Druck bestellen.

  • ESPHome (www.esphome.io) installieren, falls das noch nicht vorhanden sein sollte.

  • Die Datei secrets.yaml erstellen und dort die eigenen Settings für Wlan, Broker etc setzen:
    wifiSsid:
    wifiPassword:
    wifiPasswordAP:
    otaPassword:
    mqttBroker:
    wifiDomain:

  • Im Anschluss wird die Datei ac.yaml erstellt:
    substitutions:
      deviceName: pac
      wifiDomain: !secret wifiDomain
      mqttBroker: !secret mqttBroker
      txPin: GPIO21
      rxPin: GPIO20
     
    esphome:
      name: ${deviceName}
      name_add_mac_suffix: true
     
    esp32:
      board:  esp32-c3-devkitm-1
      variant: esp32c3
      framework:
        type: esp-idf

    wifi:
      ssid: !secret wifiSsid
      password: !secret wifiPassword
      domain: ${wifiDomain}
      fast_connect: on
      ap:
        ssid: ${deviceName}
        password: !secret wifiPasswordAP

    mqtt:
      broker: ${mqttBroker}
      discovery: false
      discover_ip: true
      will_message:
      birth_message:
      log_topic: null
      on_message:
        - topic: ${deviceName}/wlan
          payload: 'info'
          then:
            - mqtt.publish:
                topic: '{$deviceName}/ip'
                payload: !lambda "return id(ip_address).state;"
            - mqtt.publish:
                topic: '{$deviceName}/mac'
                payload: !lambda "return id(mac_address).state;"
     
    logger:
      level: ERROR

    ota:
    - platform: esphome
      password: !secret otaPassword

    text_sensor:
    - platform: wifi_info
      ip_address:
        name: "IP Adress"
        id: ip_address
      mac_address:
        name: "Mac Adress"
        id: mac_address
     
    # Minimum ESPHome 1.15.0+
    uart:
      tx_pin: ${txPin}
      rx_pin: ${rxPin}
      id: ac_uart 
      baud_rate: 9600
      parity: EVEN

    external_components:
      source: github://DomiStyle/esphome-panasonic-ac
      components: [panasonic_ac]

    climate:
      - platform: panasonic_ac
        type: cnt
        name: "${deviceName}"
        vertical_swing_select:
          name: "${deviceName} vertical swing mode"
        outside_temperature:
          name: "${deviceName} outside temperature"
        mild_dry_switch:
          name: "${deviceName} mild dry switch"
        current_power_consumption:
          name: "${deviceName} power consumption"


  • Danach kann die Firmware kompiliert und auf den ESP32 übertragen werden:
    esphome run ac.yaml

  • Nun wird das Gerät über MQTT in Fhem eingebunden:
    defmod Essen.Klima MQTT2_DEVICE pac_xxxxxx_xxxxxxxxxxxx
    attr Essen.Klima DbLogExclude .*
    attr Essen.Klima autocreate 0
    attr Essen.Klima devStateIcon cool:frost@green heat:sani_heating@green fan_only:ventilator_fett@green dry:humidity@green heat_cool:time_automatic@green Aus:control_standby@grey
    attr Essen.Klima event-on-change-reading state,mode,temperature,temperatureTarget,preset,fanMode,swingMode,verticalSwingMode,temperatureOutside,mildDrySwitch,powerConsumption,status
    attr Essen.Klima event-on-update-reading mode
    attr Essen.Klima eventMap on:Ein off:Aus
    attr Essen.Klima group Heizung
    attr Essen.Klima icon temp_frost
    attr Essen.Klima readingList pac_xxxxxx_xxxxxxxxxxxx:esphome/discover/pac-xxxxxx:.* { json2nameValue($EVENT) }\
    pac_xxxxxx_xxxxxxxxxxxx:pac-xxxxxx/climate/pac/mode/state:.* mode\
    pac_xxxxxx_xxxxxxxxxxxx:pac-xxxxxx/climate/pac/current_temperature/state:.* temperature\
    pac_xxxxxx_xxxxxxxxxxxx:pac-xxxxxx/climate/pac/target_temperature/state:.* temperatureTarget\
    pac_xxxxxx_xxxxxxxxxxxx:pac-xxxxxx/climate/pac/preset/state:.* preset\
    pac_xxxxxx_xxxxxxxxxxxx:pac-xxxxxx/climate/pac/fan_mode/state:.* fanMode\
    pac_xxxxxx_xxxxxxxxxxxx:pac-xxxxxx/climate/pac/swing_mode/state:.* swingMode\
    pac_xxxxxx_xxxxxxxxxxxx:pac-xxxxxx/select/pac_vertical_swing_mode/state:.* verticalSwingMode\
    pac_xxxxxx_xxxxxxxxxxxx:pac-xxxxxx/sensor/pac_outside_temperature/state:.* temperatureOutside\
    pac_xxxxxx_xxxxxxxxxxxx:pac-xxxxxx/switch/pac_mild_dry_switch/state:.* mildDrySwitch\
    pac_xxxxxx_xxxxxxxxxxxx:pac-xxxxxx/sensor/pac_power_consumption/state:.* powerConsumption\
    pac_xxxxxx_xxxxxxxxxxxx:pac/status:.* status
    attr Essen.Klima room Erdgeschoss->Essen,Interfaces->MQTT
    attr Essen.Klima setList mode:off,cool,heat,fan_only,dry,heat_cool pac-xxxxxx/climate/pac/mode/command\
    fanMode:1,2,3,4,5,Automatic pac-xxxxxx/climate/pac/fan_mode/command\
    status:noArg pac-xxxxxx/climate/pac/mode/state\
    temperatureTarget:slider,16,0.5,30 pac-xxxxxx/climate/pac/target_temperature/command\
    swingMode:off,both,vertical,horizontal pac-xxxxxx/climate/pac/swing_mode/command\
    preset:Normal,Powerful,Quiet pac-xxxxxx/climate/pac/preset/command\
    on:noArg pac-xxxxxx/climate/pac/mode/command cool\
    off:noArg pac-xxxxxx/climate/pac/mode/command off\
    clear_all:noArg {fhem("deletereading -q $NAME (?!associatedWith|IODev).*");;;;return undef}
    attr Essen.Klima stateFormat {ReadingsVal($name,'mode','')."\n"."<br/>".ReadingsVal($name,'temperature','')." °C"}
    attr Essen.Klima webCmd Ein:Aus
     
    statt pac_xxxxxx_xxxxxxxxxxxx muss die vom esp32 gegebene mac Adresse verwendet werden. die Syntax ist dabei pac_<letzten 3 byte / 6 Zeichen der mac Adresse)_<Mac Adresse>. bei pac_xxxxxx ist es nur pac_<letzten 3 byte / 6 zeichen der mac Adresse)
    Die Mac Adresse sieht man in der Konsole beim Start des Uploadvorgangs der Firmware. Wenn alles richtig gemacht wurde solle das device im Anschluss mit Readings befüllt werden. Wenn das alles funktioniert, erfolgt der Einbau.

  • Von jedem nachfolgenden Schritt sollte man ggf. ein Foto machen, wenn man das noch nicht so oft gemacht hat. Damit bekommt man das sicher wieder richtig zusammengesetzt.

    Klimaanlage stromlos machen und die Abdeckung entfernen. Danach den Systemkasten öffnen, wie auf den Bildern zu sehen. Vermutlich müssen hier auch die Zuleitungskabel etc entfernt werden. Als erstes wird dann der bestehden WLAN Adapter entfernt (falls vorhanden). Ältere Modelle haben nur eine CN-CNT Schnittstelle, an der bei mir zuvor ein CZ-TACG1 angeschlossen war. Neue Modelle haben zusätzlich eine DNSK-P11 Schnittstelle, an der die WLAN Schnittstelle hängt. Diese hat zwar ein paar Vorteile, die wir hier aber nicht unbedingt brauchen. Danach wird das Kabel des ESP32 direkt an den CN-CNT Port gesteckt. Das wars dann auch schon. Vor dem Zusammenbau sollte das Ganze nochmal getestet werden. Also Sicherung wieder rein und gucken, ob die Steuerung über FHEM funktioniert. Wenn alles geht, Sicherung wieder raus, und Gehäuse wieder zusammenbauen / schließen.

  • Wenn zuvor ein Wlan Adapter an der DNSK-P11 Schnittstelle hing, muss noch die WLAN Schnittstelle am Klimagerät über die Fernbedienung ausgemacht werden. Ansonsten wird die entsprechende LED ständig blinken.

Das wars dann auch schon und kostet keine 10 € je Gerät. Wenn man Zeit hat und sich die Sachen über Aliexpress bestellt kommt man sogar mit 2-3 € aus. Jedenfalls reagieren die Geräte nun instant. Das ist richtiger Luxus wenn man zuvor die Comfort Cloud App nutzten "durfte" ;D

Viel Spaß beim Nachbauen. Umsetzung erfolgt natürlich auf eigene Gefahr  ;D