ESP32 Wasserzähler und MQTT

Hallo,

erst mal vielen dank für die Tollen Videos! Habe mich vor ein paar Wochen dank dir für einen NUC5I5 entschieden und es nicht bereut. RaspberryPi war doch zu Absturz sensibel.

Steckdosen und Lampen laufen super.. Jetzt bin ich am Wasserzähler mit ESP 32 Cam.

Ich habe bereits AI on the edge - Watermeter laufen alles wird erkannt, aber ich bekomme es nicht ins Home Assistent integriert.

Home Assistant ist auf dem Aktuellsten stand.

Firmware ESP Cam v15.0.2

Folgendes versucht bzw. gelernt:

Habe mir deine Videos rauf und runter angeschaut aber irgend was übersehe ich wohl

Im Home Assistant einen Benutzer erstellt für den Wasserzähler mit Passwort und es im ESP Settings gespeichert. (Ich hoffe das war richtig) 😟

ESP 32.png

Mosquitto Broker installiert, aber was dann? Ich stehe vor einer wand 😞

Wie bokomme ich den Wasserstands Zähler angezeigt?

Ich wäre für die Hilfe dankbar. Muss zugeben bin, was das Programmieren angeht noch ein Noob.

Vielen Dank im vorraus

Peter

mittlerweile bekomme ich auch im log nach Neustart des HA:

Protokoll.png

Interessant ist nur es gibt eine erfolgreiche Anmeldung "Grün"

und ein Haufen anmelde versuche "Orange" vom ESP Modul wobei ich mir die Adresse nicht erklären kann..

Aber Wie ich was sehen kann im HA 😰 keine ahnung.

Wenn ich mich noch recht erinnere tauchte das Gerät nach der Installaton in der Integration-Kachel vom Mosquito-Broker auf

grafik

PS: Das Programm MQTT-Explorer ist immer ganz hilfreich um zu checken was im Netz mit MQTT los ist

Hallo, das mit dem MQTT-explorer war ne gute idee.
Es scheint alles empfangen zu werden aber unter binary_sensor ist wohl ein problemm :slight_smile:
{
“~”: “”,
“unique_id”: “-problem”,
“object_id”: “_problem”,
“name”: “Problem”,
“icon”: “mdi:alert-outline”,
“state_topic”: “~/main/error”,
“value_template”: “{{ ‘OFF’ if ‘no error’ in value else ‘ON’}}”,
“device_class”: “problem”,
“availability_topic”: “~/connection”,
“payload_available”: “connected”,
“payload_not_available”: “connection lost”,
“device”: {
“identifiers”: [
“”
],
“name”: “”,
“model”: “Meter Digitizer”,
“manufacturer”: “AI on the Edge Device”,
“sw_version”: “v15.0.3”,
“configuration_url”: “http://192.168.178.45
}
}
Wie löse ich es nur?

Wenn die MQTT Nachricht raus geht kannst du es doch manuell konfigurieren. Die automatische HA Discovery hat bei mir auch nicht funktioniert. Ich habe es einfach manuell in der configuration.yaml angelegt.

Kannst du mir zufällig deinen Code bzw Ausschnitt posten, bin da noch ziemlich unerfahren :woozy_face:

Schau da mal hinein da steht alles.
https://jomjol.github.io/AI-on-the-edge-device-docs/Integration-Home-Assistant/
Eine Eigenart hat das ganze system wenn es error liefert bekommst du auch keine in HA,
also versuch die einstellungen so zu verändern dass du keine ERROR Meldung mehr bekommst.

Hatte am Anfang auch Probleme und was war es am Ende einmal war es Main Topic und einmal Client ID und dann die Fehlermeldungen beim Lesen der Werte. Die Werte müssen immer richtig sein weil dir HA dann keine Werte mehr anzeigt.


Edit by HarryP: Doppelpost zusammengeführt

@bimbo009

benutze doch beim nächsten mal für die yaml-Datei die “Code-Funktion”
image
dann sieht es so aus:

hier den Code einfügen

und die anderen können den Text so direkt kopieren und bearbeiten.

Harry

1 „Gefällt mir“

mqtt:
sensor:
- state_topic: “wasserzaehler/main/value”
name: “Watermeter Value”
unique_id: watermeter_value
unit_of_measurement: ‘m³’
state_class: total_increasing
device_class: water # Needs Home Assistant 2022.11!
icon: ‘mdi:water-pump’
availability_topic: wasserzaehler/connection
payload_available: connected
payload_not_available: connection lost

- state_topic: "wasserzaehler/main/rate"
  name: "Watermeter Rate"
  unique_id: watermeter_rate
  unit_of_measurement: 'm³/min'
  state_class: measurement
  device_class: water # Needs Home Assistant 2022.11!
  icon: 'mdi:water-pump'
  availability_topic: wasserzaehler/connection
  payload_available: connected
  payload_not_available: connection lost

- state_topic: "wasserzaehler/main/error"
  name: "Watermeter Error"
  unique_id: watermeter_error
  icon: "mdi:water-alert"
  availability_topic: wasserzaehler/connection
  payload_available: connected
  payload_not_available: connection lost    

- state_topic: "wasserzaehler/uptime"
  name: "Watermeter Uptime"
  unique_id: watermeter_uptime
  unit_of_measurement: 's'
  state_class: measurement
  device_class: duration
  entity_category: diagnostic
  icon: "mdi:timer-outline"
  availability_topic: wasserzaehler/connection
  payload_available: connected
  payload_not_available: connection lost

https://jomjol.github.io/AI-on-the-edge-device-docs/Integration-Home-Assistant/

Edit by HarryP: Doppelpost zusammengeführt

@bimbo009

Alles klar.
Aber zwecks der Übersichtlichkeit des Forums wäre es gut, wenn Du Ergänzungen zu einem Posting über den Button “bearbeiten”
image machen würdest. Doppel-/Tripple- oder noch mehr Postings hintereinander sind nicht gerade übersichtlich. :wink:

Ich gelobe Besserung muss mich hier erst zurecht finden.

3 „Gefällt mir“

Hi, das Auto-Discovery funktioniert prinzipiell. Hast du es mit einem Neustart von Home Assistant versucht? Das war bei mir immer notwendig, danach wurde das Gerät erkannt und alle Entitäten standen zur Verfügung. Ich habe die letzte Woche 2 ESP-Cams mit AI eingerichtet.

Ich scheine da was zu übersehen beim MQTT mosquito evtl falsch eingerichtet. hattest du ne anleitung benutzt?? evtl fehlt mir nur ne datei irgend wo, :thinking:

Nee, nur die Option “Homeassistant Discovery” in den Settings von AI auf “true” setzen und “Meter Type” einstellen. Die Discovery-Nachrichten werden nur beim Start von AI gesendet. Du kannst das auch manuell anstoßen, indem du den Link http://IP/mqtt_publish_discovery aufrufst. Das habe ich ein paar Mal gemacht und die MQTT-Integration neu geladen. Dann noch HA neu gestartet, danach war alles da.

Der Discovery-Topic von Home Assistant lautet homeassistant/. Da muss irgendetwas ankommen, ansonsten schickt AI nichts heraus.

Beispiel:
Topic: homeassistant/sensor/watermeter4/raw/config
Payload:
{"~": "watermeter4","unique_id": "watermeter4-raw","object_id": "watermeter4_raw","name": "Raw Value","icon": "mdi:raw","state_topic": "~/main/raw","unit_of_meas": "m³","state_class": "total_increasing","entity_category": "diagnostic","availability_topic": "~/connection","payload_available": "connected","payload_not_available": "connection lost","device": {"identifiers": ["watermeter4"],"name": "watermeter4","model": "Meter Digitizer","manufacturer": "AI on the Edge Device","sw_version": "v15.0.3","configuration_url": "http://10.0.10.163"}}

1 „Gefällt mir“

Hallo an alle danke für eure hilfe schon mal !
Habe MQTT Mosquito deinstalliert neu installiert eingerichtet…
Immer wenn ich http://IP/mqtt_publish_discovery ausführe ( Danke w3c4nd0) bekomme ich im System log nur:

Logger: homeassistant.components.mqtt.discovery
Source: components/mqtt/discovery.py:111
Integration: MQTT (documentation, issues)
First occurred: 17:57:14 (102 occurrences)
Last logged: 17:58:31

Received message on illegal discovery topic 'homeassistant/sensor//rate_per_time_unit/config'. The topic contains not allowed characters. For more information see https://www.home-assistant.io/docs/mqtt/discovery/#discovery-topic
Received message on illegal discovery topic 'homeassistant/sensor//rate_per_digitalization_round/config'. The topic contains not allowed characters. For more information see https://www.home-assistant.io/docs/mqtt/discovery/#discovery-topic
Received message on illegal discovery topic 'homeassistant/sensor//timestamp/config'. The topic contains not allowed characters. For more information see https://www.home-assistant.io/docs/mqtt/discovery/#discovery-topic
Received message on illegal discovery topic 'homeassistant/sensor//json/config'. The topic contains not allowed characters. For more information see https://www.home-assistant.io/docs/mqtt/discovery/#discovery-topic
Received message on illegal discovery topic 'homeassistant/binary_sensor//problem/config'. The topic contains not allowed characters. For more information see https://www.home-assistant.io/docs/mqtt/discovery/#discovery-topic

Irgend was fehlt mir… eintwieder eine datei oder ein ordner oder inhalt (bild aus dem File editor)

Sorry wenn ich mich so blöd anstelle aber ich kapier es nicht XD

Danke für eure Hilfe!

Hier mal eine Anleitung und was willst du in der configuration.yaml machen.

Dieses Video habe ich 5 mal durch :smile:
Der MQTT Explorer empfängt auch alles (zum testen)
Aber unter Geräte/Dienste mqtt core-mosquito taucht nie ein dienst auf egal wie oft ich aktualisiere oder neu starte oder MQTT discovery am Wasserzähler anstoße.
in den meisten Videos wird auch noch in der yaml Datei der Sensor wert definiert wie ich verstanden habe…
Nur zum Verständnis:
1: Benutzer für mqtt brocker ist nicht der selbe wie der für Wasserzähler?
2: Im Wasserzähler die URL ist die IP des HA
3: ohne irgend welche Änderungen über File Editor in yaml oder sonst irgend wo muss der Wasserzähler erkannt werden?
im Prinzip iost es diese Fehlermeldung die ausschlaggebend ist denke ich:

Logger: homeassistant.components.mqtt.discovery
Source: components/mqtt/discovery.py:111
Integration: MQTT (documentation, issues)
First occurred: 06:36:00 (119 occurrences)
Last logged: 06:52:05

Received message on illegal discovery topic 'homeassistant/sensor//rate_per_time_unit/config'. The topic contains not allowed characters. For more information see https://www.home-assistant.io/docs/mqtt/discovery/#discovery-topic
Received message on illegal discovery topic 'homeassistant/sensor//rate_per_digitalization_round/config'. The topic contains not allowed characters. For more information see https://www.home-assistant.io/docs/mqtt/discovery/#discovery-topic
Received message on illegal discovery topic 'homeassistant/sensor//timestamp/config'. The topic contains not allowed characters. For more information see https://www.home-assistant.io/docs/mqtt/discovery/#discovery-topic
Received message on illegal discovery topic 'homeassistant/sensor//json/config'. The topic contains not allowed characters. For more information see https://www.home-assistant.io/docs/mqtt/discovery/#discovery-topic
Received message on illegal discovery topic 'homeassistant/binary_sensor//problem/config'. The topic contains not allowed characters. For more information see https://www.home-assistant.io/docs/mqtt/discovery/#discovery-topic

aber wie löse ich diese?

Hi,
als MQTT user kannst du dir einfach einen Benutzer im HA anlegen.
Mein Konfiguration im Wasserzähler sieht so aus:

In der configuration.yaml hab ich das hier:

    - name: "Wasserzaehler"
      state_class: total_increasing
      device_class: water
      state_topic: "wasserzaehler/main/json"
      value_template: "{{ value_json.value }}"
      unit_of_measurement: "m³"
      icon: "mdi:water"

Wasserzaehler taucht bei mir auch nicht unter Geräten auf. Schau mal unter Developer Tools bei States. Such da mal.

Bei der Syntax von MQTT bin aich auch kein Experte, aber sicher, dass da // rein gehört? Könnte einer zuviel sein

Versuche mal bei ClientID und trag da watermeter ein. Also so sieht das bei mir aus.
Hast du schon geschaut ob das Gerät in deinem Rooter auch im Netzwerk zu finden ist, nicht dass da schon etwas nicht stimmt und schau mal unter welchem Namen.
Ich kenne das Problem hab mich am Anfang auch dumm gesucht. Könntest das Add-on Mqtt Explorer installieren das hilft dir auch noch zum überwachen. Liegt wahrscheinlich dass du irgendwo verschieden Konfigurationen hast am besten genau so übernehmen wie in der Anleitung.
https://jomjol.github.io/AI-on-the-edge-device-docs/Integration-Home-Assistant/


ES LÄUFT!

Noch mal alles zusammengefasst was ich gelernt habe:

  1. Benutzer anlegen in Home Assistant
    die Gleichen Benutzer Daten im Kofiguration-sfenster des MQTT Mosquito und des AI ESP Cam
    Wasserzählers.
  2. Configuration des AI on the edge:
    MQTT = an
    URI = an IP Adresse des Home Asistant (da MQTT Broker auf dem selben gerät läuft)
    Main Topic =
    ClientID = an GANZ WICHTIG!! Wasserzähler mit “Ä” führt zu einem Problem!
    Ausgabe im LOG:
2023-03-10 02:58:55.989 WARNING (MainThread) [homeassistant.components.mqtt.discovery] Received message on illegal discovery topic 'homeassistant/sensor//uptime/config'. The topic contains not allowed characters. For more information see https://www.home-assistant.io/docs/mqtt/discovery/#discovery-topic
2023-03-10 02:58:55.992 WARNING (MainThread) [homeassistant.components.mqtt.discovery] Received message on illegal discovery topic 'homeassistant/sensor//MAC/config'. The topic contains not allowed characters. For more information see https://www.home-assistant.io/docs/mqtt/discovery/#discovery-topic
2023-03-10 02:58:55.994 WARNING (MainThread) [homeassistant.components.mqtt.discovery] Received message on illegal discovery topic 'homeassistant/sensor//hostname/config'. The topic contains not allowed characters. For more information see https://www.home-assistant.io/docs/mqtt/discovery/#discovery-topic
2023-03-10 02:58:56.010 WARNING (MainThread) [homeassistant.components.mqtt.discovery] Received message on illegal discovery topic 'homeassistant/sensor//freeMem/config'. The topic contains not allowed characters. For more information see https://www.home-assistant.io/docs/mqtt/discovery/#discovery-topic

user = an (selbe Benutzer Daten wie im Home Asistant hinterlegt für der Brocker)
password = an (selbe Benutzer Daten wie im Home Asistant hinterlegt für der Brocker)
Enable MQTT Retain Flag = true
Homeassistant Discovery = true
Meter Type = an
3. Keinerlei Einstellungen in einer Datei yaml oder ähnliches notwendig… Für den Start zumindest

So Läuft es für mich ohne Probleme.
Danke für eure Hilfe!