Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Publish more information via MQTT under wbec-Topic #81

Merged
merged 2 commits into from
Jun 24, 2023

Conversation

BenniG82
Copy link
Contributor

  • Added connection state of wbec (online/offline)
  • Offline state is set automatically via MQTTs last will feature
  • Added voltages of all 3 phases
  • Added current current limit
  • Added pcb temperature
  • Added result code of modbus communication
  • Added wifi RSSI
  • Added wifi channel
  • Added plug state
  • Added charge state

- Added connection state of wbec (online/offline)
- Offline state is set automatically via MQTTs last will feature
- Added voltages of all 3 phases
- Added current current limit
- Added pcb temperature
- Added result code of modbus communication
- Added wifi RSSI
- Added wifi channel
- Added plug state
- Added charge state
@BenniG82
Copy link
Contributor Author

BenniG82 commented Jun 18, 2023

Mit diesem Commit werden ein paar weitere Infos unter dem wbec-Topic zur Verfügung gestellt.
Mithilfe dieser Infos wird die Einbindung in z.B. HomeAssistant erleichtert.

Etwas besonders ist das Topic wbec/connection. Hier wird über das LWT (Last-Will and Testament) Feature von MQTT dafür gesorgt, dass Konsumenten erkennen können, wenn wbec gerade nicht mit MQTT verbunden ist. Der Wert von wbec/connection ändert sich dann auf "offline".

Beispiel-Ansicht in HomeAssistant
image

Um wbec als Gerät in HomeAssistant einzubinden kann ein Script in HomeAssistant mit folgendem Inhalt angelegt werden. Mit dem Script wird dafür gesorgt, dass HomeAssistant eine "MQTT-AutoDiscovery" für wbec machen kann. Das Script muss nach dem Speichern ein mal ausgeführt werden.

In einem nächsten Schritt kann man in wbec eine Funktion einbauen, um die entsprechenden Infos für die AutoDiscovery direkt per wbec schreiben zu lassen.

alias: WBEC Autodiscovery
sequence:
  - service: mqtt.publish
    data:
      topic: homeassistant/binary_sensor/wbec/plug_state/config
      retain: true
      payload: |
        {
          "state_topic": "wbec/lp/1/plugState",
          "value_template": "{{ '{{' }} 'OFF' if 'false' in value else 'ON' {{ '}}' }}",
          "name": "Stecker gesteckt",
          "unique_id": "unique_id_wbec_plug_state",
          "object_id": "wbec_plug_state",
          "device_class": "plug",
          "availability_topic":"wbec/connection",
          "payload_available":"online",
          "payload_not_available":"offline",
          "device": {
              "identifiers": ["wbec"],
              "name": "Heidelber Energy Control via wbec",
              "model": "HD_EnergyControl",
              "manufacturer": "HEIDELBERG via wbec",
              "sw_version": "1.0.0"
          }
        }
  - service: mqtt.publish
    data:
      topic: homeassistant/binary_sensor/wbec/charge_state/config
      retain: true
      payload: |
        {
          "state_topic": "wbec/lp/1/chargeState",
          "value_template": "{{ '{{' }}  'OFF' if 'false' in value else 'ON' {{ '}}' }}",
          "name": "Laden",
          "unique_id": "unique_id_wbec_charge_state",
          "object_id": "wbec_charge_state",
          "device_class": "battery_charging",
          "availability_topic":"wbec/connection",
          "payload_available":"online",
          "payload_not_available":"offline",
          "device": {
              "identifiers": ["wbec"],
              "name": "Heidelber Energy Control via wbec",
              "model": "HD_EnergyControl",
              "manufacturer": "HEIDELBERG via wbec",
              "sw_version": "1.0.0"
          }
        }
  - service: mqtt.publish
    data:
      topic: homeassistant/sensor/wbec/pcb_temp/config
      retain: true
      payload: |
        {
          "state_topic": "wbec/lp/1/pcbTemp",
          "name": "PCB Temperatur",
          "unique_id": "unique_id_wbec_pcb_temp",
          "object_id": "wbec_pcb_temp",
          "device_class": "temperature",
          "unit_of_measurement": "°C",
          "availability_topic":"wbec/connection",
          "payload_available":"online",
          "payload_not_available":"offline",
          "device": {
              "identifiers": ["wbec"],
              "name": "Heidelber Energy Control via wbec",
              "model": "HD_EnergyControl",
              "manufacturer": "HEIDELBERG via wbec",
              "sw_version": "1.0.0"
          }
        }
  - service: mqtt.publish
    data:
      topic: homeassistant/sensor/wbec/energy/config
      retain: true
      payload: |
        {
          "state_topic": "wbec/lp/1/energy",
          "name": "Wallbox Energie",
          "unique_id": "unique_id_wbec_energy",
          "object_id": "wbec_energy",
          "device_class": "energy",
          "unit_of_measurement": "kWh",
          "state_class": "total_increasing",
          "availability_topic":"wbec/connection",
          "payload_available":"online",
          "payload_not_available":"offline",
          "device": {
              "identifiers": ["wbec"],
              "name": "Heidelber Energy Control via wbec",
              "model": "HD_EnergyControl",
              "manufacturer": "HEIDELBERG via wbec",
              "sw_version": "1.0.0"
          }
        }
  - service: mqtt.publish
    data:
      topic: homeassistant/sensor/wbec/rssi/config
      retain: true
      payload: |
        {
          "state_topic": "wbec/lp/1/wifiRssi",
          "name": "Wifi Empfang",
          "unique_id": "unique_id_wbec_rssi",
          "object_id": "wbec_rssi",
          "device_class": "signal_strength",
          "unit_of_measurement": "dBm",
          "availability_topic":"wbec/connection",
          "payload_available":"online",
          "payload_not_available":"offline",
          "device": {
              "identifiers": ["wbec"],
              "name": "Heidelber Energy Control via wbec",
              "model": "HD_EnergyControl",
              "manufacturer": "HEIDELBERG via wbec",
              "sw_version": "1.0.0"
          }
        }
  - service: mqtt.publish
    data:
      topic: homeassistant/number/wbec/currLimit/config
      retain: true
      payload: |
        {
          "state_topic": "wbec/lp/1/currLimit",
          "command_topic": "wbec/lp/1/maxcurrent",
          "min": 0,
          "max": 16,
          "name": "Max Leistung",
          "unique_id": "unique_id_wbec_currLimit",
          "object_id": "wbec_currLimit",
          "device_class": "current",
          "unit_of_measurement": "A",
          "availability_topic":"wbec/connection",
          "payload_available":"online",
          "payload_not_available":"offline",
          "device": {
              "identifiers": ["wbec"],
              "name": "Heidelber Energy Control via wbec",
              "model": "HD_EnergyControl",
              "manufacturer": "HEIDELBERG via wbec",
              "sw_version": "1.0.0"
          }
        }
  - service: mqtt.publish
    data:
      topic: homeassistant/sensor/wbec/currL1/config
      retain: true
      payload: |
        {
          "state_topic": "wbec/lp/1/currL1",
          "name": "Leistung L1",
          "unique_id": "unique_id_wbec_currL1",
          "object_id": "wbec_currL1",
          "device_class": "current",
          "unit_of_measurement": "A",
          "availability_topic":"wbec/connection",
          "payload_available":"online",
          "payload_not_available":"offline",
          "device": {
              "identifiers": ["wbec"],
              "name": "Heidelber Energy Control via wbec",
              "model": "HD_EnergyControl",
              "manufacturer": "HEIDELBERG via wbec",
              "sw_version": "1.0.0"
          }
        }
  - service: mqtt.publish
    data:
      topic: homeassistant/sensor/wbec/currL2/config
      retain: true
      payload: |
        {
          "state_topic": "wbec/lp/1/currL2",
          "name": "Leistung L2",
          "unique_id": "unique_id_wbec_currL2",
          "object_id": "wbec_currL2",
          "device_class": "current",
          "unit_of_measurement": "A",
          "availability_topic":"wbec/connection",
          "payload_available":"online",
          "payload_not_available":"offline",
          "device": {
              "identifiers": ["wbec"],
              "name": "Heidelber Energy Control via wbec",
              "model": "HD_EnergyControl",
              "manufacturer": "HEIDELBERG via wbec",
              "sw_version": "1.0.0"
          }
        }
  - service: mqtt.publish
    data:
      topic: homeassistant/sensor/wbec/currL3/config
      retain: true
      payload: |
        {
          "state_topic": "wbec/lp/1/currL3",
          "name": "Leistung L3",
          "unique_id": "unique_id_wbec_currL3",
          "object_id": "wbec_currL3",
          "device_class": "current",
          "unit_of_measurement": "A",
          "availability_topic":"wbec/connection",
          "payload_available":"online",
          "payload_not_available":"offline",
          "device": {
              "identifiers": ["wbec"],
              "name": "Heidelber Energy Control via wbec",
              "model": "HD_EnergyControl",
              "manufacturer": "HEIDELBERG via wbec",
              "sw_version": "1.0.0"
          }
        }
  - service: mqtt.publish
    data:
      topic: homeassistant/sensor/wbec/voltL1/config
      retain: true
      payload: |
        {
          "state_topic": "wbec/lp/1/voltL1",
          "name": "Spannung L1",
          "unique_id": "unique_id_wbec_voltL1",
          "object_id": "wbec_voltL1",
          "device_class": "voltage",
          "unit_of_measurement": "V",
          "availability_topic":"wbec/connection",
          "payload_available":"online",
          "payload_not_available":"offline",
          "device": {
              "identifiers": ["wbec"],
              "name": "Heidelber Energy Control via wbec",
              "model": "HD_EnergyControl",
              "manufacturer": "HEIDELBERG via wbec",
              "sw_version": "1.0.0"
          }
        }
  - service: mqtt.publish
    data:
      topic: homeassistant/sensor/wbec/voltL2/config
      retain: true
      payload: |
        {
          "state_topic": "wbec/lp/1/voltL2",
          "name": "Spannung L2",
          "unique_id": "unique_id_wbec_voltL2",
          "object_id": "wbec_voltL2",
          "device_class": "voltage",
          "unit_of_measurement": "V",
          "availability_topic":"wbec/connection",
          "payload_available":"online",
          "payload_not_available":"offline",
          "device": {
              "identifiers": ["wbec"],
              "name": "Heidelber Energy Control via wbec",
              "model": "HD_EnergyControl",
              "manufacturer": "HEIDELBERG via wbec",
              "sw_version": "1.0.0"
          }
        }
  - service: mqtt.publish
    data:
      topic: homeassistant/sensor/wbec/voltL3/config
      retain: true
      payload: |
        {
          "state_topic": "wbec/lp/1/voltL3",
          "name": "Spannung L3",
          "unique_id": "unique_id_wbec_voltL3",
          "object_id": "wbec_voltL3",
          "device_class": "voltage",
          "unit_of_measurement": "V",
          "availability_topic":"wbec/connection",
          "payload_available":"online",
          "payload_not_available":"offline",
          "device": {
              "identifiers": ["wbec"],
              "name": "Heidelber Energy Control via wbec",
              "model": "HD_EnergyControl",
              "manufacturer": "HEIDELBERG via wbec",
              "sw_version": "1.0.0"
          }
        }
  - service: mqtt.publish
    data:
      topic: homeassistant/sensor/wbec/errorCode/config
      retain: true
      payload: |
        {
          "state_topic": "wbec/lp/1/resCode",
          "name": "Fehlercode",
          "unique_id": "unique_id_wbec_errorCode",
          "object_id": "wbec_errorCode",
          "icon": "mdi:alert-circle",
          "availability_topic":"wbec/connection",
          "payload_available":"online",
          "payload_not_available":"offline",
          "device": {
              "identifiers": ["wbec"],
              "name": "Heidelber Energy Control via wbec",
              "model": "HD_EnergyControl",
              "manufacturer": "HEIDELBERG via wbec",
              "sw_version": "1.0.0"
          }
        }

@BenniG82 BenniG82 marked this pull request as ready for review June 18, 2023 13:29
@BenniG82
Copy link
Contributor Author

Hmmpf, ich merke gerade, dass ich bei plug_state und charge_state auf einmal "_" nutze.. ich bau das noch schnell um :)

@steff393
Copy link
Owner

Vielen Dank, tolles Feature!

@steff393 steff393 merged commit 2892b09 into steff393:master Jun 24, 2023
@Eversman13
Copy link

Danke für dein Skript! Kannst du evtl noch beschreiben, was man in Home Assistant / in wbec sonst noch einstellen muss um eine Anbindung an HA ans laufen zu bekommen?

Ich habe den Mosquitto broker im HA als Addon laufen, die Home Assistant IP und den MQTT Port in der config in wbec eingetragen, dein Skript einmal ausgeführt. Aber alle mit dem skript angelegten Entitäten sind "nicht verfügbar".
Irgendwas habe ich wohl noch vergessen bzw. übersehen?

@BenniG82 BenniG82 deleted the mqtt-infos branch July 12, 2023 11:29
@BenniG82
Copy link
Contributor Author

Hi @Eversman13
seit dem Mergen meiner Änderungen hatte @steff393 noch kein neues Release gebaut.
Du kannst entweder selbst den master-branch bei dir auschecken und per VS-Code mit PlattformIO bauen, was am sichersten wäre, oder du vertraust mir und nimmst das Release hier, dass ich eben gebaut habe:
https://github.com/BenniG82/wbec/releases/tag/0.4.10-preview

@kallejoken
Copy link

Hi @Eversman13 seit dem Mergen meiner Änderungen hatte @steff393 noch kein neues Release gebaut. Du kannst entweder selbst den master-branch bei dir auschecken und per VS-Code mit PlattformIO bauen, was am sichersten wäre, oder du vertraust mir und nimmst das Release hier, dass ich eben gebaut habe: https://github.com/BenniG82/wbec/releases/tag/0.4.10-preview

dein release ist nicht für die wbec pro variante gedacht oder?

@BenniG82
Copy link
Contributor Author

@kallejoken
Das Release von mir basiert auf der freien Version. Das wird auf der Pro-Hardware nicht laufen. :(

@steff393
Copy link
Owner

@kallejoken
Ja, die Versionen für wbecPro kann nur ich erstellen. Mein Plan wäre aber noch im August eine neue Version zu erstellen, die dann als neues Feature auch die Zeitsteuerung enthält (#52 ).
Wenn's dringender ist, dann schreib mir einfach mal per e-Mail, vielleicht kann ich dir einen Zwischenstand schicken.

@kallejoken
Copy link

ist es noch möglich den sensor "letzte ladung in kwh" hinzuzufügen?
also wieviel kwh die letzte ladung gebraucht hat meine ich.

@steff393
Copy link
Owner

Ja, kommt demnächst

@FlensGo
Copy link

FlensGo commented Sep 10, 2023

Ich habe dank des hier von Benni bereitgestellten Scriptes in Homeassistant (HA) ein "Überschuss"-Laden realisieren können. In HA habe ich zwei Helfer als Schwellenwertsensor eingerichtet: Überschuss_6A mit der Untergrenze 1,8 kW und Obergrenze 3,8 kW und Überschuss_8A größer als 3,8 kW.
Ist der Ladestecker gesteckt, starten oder beenden vier Automatisierungen den Ladevorgang mit 6A oder 8A. Beispiel für 8A: Auslöser: Stecker gesteckt / Bedingungen: Batteriestand über 30% und Überschuss_8A ist an.

Ist jetzt nicht das eigentliche Prinzip des Überschussladens, bin aber mit dieser Lösung zufrieden.

@GLSSoftware
Copy link

GLSSoftware commented Dec 7, 2023

Hallo,
das Autodiscovery-Script ist super. Vielen Dank dafür!
Allerdings berücksichtigt die Integration von WBEC mit MQTT mehrere Ladepunkte. Im Script ist diese Möglichkeit nicht berücksichtigt. Es wäre schön, wenn hier auch mehrere Ladepunkte ansteuerbar wären.

Ich könnte mir vorstellen, dass man das Script nach folgendem Muster umbaut:

service: mqtt.publish
data:
topic: homeassistant/binary_sensor/wbec/plug_state_lp1/config
retain: true
payload: |
{
"state_topic": "wbec/lp/1/plugState",
"value_template": "{{ '{{' }} 'OFF' if 'false' in value else 'ON' {{ '}}' }}",
"name": "LP1 Stecker gesteckt",
"unique_id": "unique_id_wbec_plug_state_lp1",
"object_id": "wbec_plug_state_lp1",
"device_class": "plug",
"availability_topic":"wbec/connection",
"payload_available":"online",
"payload_not_available":"offline",
"device": {
"identifiers": ["wbec"],
"name": "Heidelberg Energy Control via wbec",
"model": "HD_EnergyControl",
"manufacturer": "HEIDELBERG via wbec",
"sw_version": "1.0.0"
}
}

Hat jemand vielleicht noch einen bessern Vorschlag?

@nb7user
Copy link

nb7user commented Dec 26, 2023

Ich würde noch den aktuellen Verbrauch hinzufügen:

  • service: mqtt.publish
    data:
    topic: homeassistant/sensor/wbec/power/config
    retain: true
    payload: |
    {
    "state_topic": "wbec/lp/1/power",
    "name": "Wallbox Power",
    "unique_id": "unique_id_wbec_power",
    "object_id": "wbec_power",
    "device_class": "power",
    "unit_of_measurement": "W",
    "availability_topic":"wbec/connection",
    "payload_available":"online",
    "payload_not_available":"offline",
    "device": {
    "identifiers": ["wbec"],
    "name": "Heidelber Energy Control via wbec",
    "model": "HD_EnergyControl",
    "manufacturer": "HEIDELBERG via wbec",
    "sw_version": "1.0.0"
    }
    }

und den aktuellen Ladevorgang :

  • service: mqtt.publish
    data:
    topic: homeassistant/sensor/wbec/energyC/config
    retain: true
    payload: |
    {
    "state_topic": "wbec/lp/1/energyC",
    "name": "Ladevorgang",
    "unique_id": "unique_id_wbec_energyC",
    "object_id": "wbec_energyC",
    "device_class": "energy",
    "unit_of_measurement": "kWh",
    "availability_topic":"wbec/connection",
    "payload_available":"online",
    "payload_not_available":"offline",
    "device": {
    "identifiers": ["wbec"],
    "name": "Heidelber Energy Control via wbec",
    "model": "HD_EnergyControl",
    "manufacturer": "HEIDELBERG via wbec",
    "sw_version": "1.0.0"
    }
    }

@hoenow
Copy link

hoenow commented Jan 7, 2024

Ich habe gerade wbecPro in der Version 1.5.1 installiert.
Über die wbec-Software kann ich den Ladevorgang steuern,
nur leider bekomme die Verbindung in Homeassistant über MQTT nicht hin.
Homeassistant findet die wbecPro nicht.
Das Script von BenniG82 ist wohl nicht für die Pro-Version geeignet.
Gibt es eine Anleitung, wie man die wbecPro in Homeassistant einbinden kann?

@steff393
Copy link
Owner

steff393 commented Jan 7, 2024

Doch, das Script ist unabhängig von der wbec-Variante. Man muss aber für MQTT bei Homeassistant einen User und Passwort vergeben und diesen auch in wbec konfigurieren: cfgMqtt...

@hoenow
Copy link

hoenow commented Jan 7, 2024

Die Werte hatte ich bereits in der Config, von wbec eingetragen.
cfgMqttIp
cfgMqttLp
cfgMqttPort
cfgMqttUser
cfgMqttPass

Ist das Script von BenniG82 von Jun 18, 2023 aktuell oder sind Ergänzungen notwendig?

Ist es auch möglich den Ladestatus der Batterie vom Auto auszulesen, so wie es an einigen öffentlichen Ladestationen möglich ist?

@FlensGo
Copy link

FlensGo commented Jan 7, 2024

Ich würde noch den aktuellen Verbrauch hinzufügen:

Wie füge ich die Ergänzung hinzu? Reicht es das in HA abgespeicherte Skript entsprechend zu erweitern?

@nb7user
Copy link

nb7user commented Jan 14, 2024

Ich würde noch den aktuellen Verbrauch hinzufügen:

Wie füge ich die Ergänzung hinzu? Reicht es das in HA abgespeicherte Skript entsprechend zu erweitern?

Genau das sollte reichen, einfach an das bestehende Skript hängen und es dann erneut ausführen.

Repository owner deleted a comment from EiKappo Aug 22, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants