Jump to content

Home Assistant Anbindung


Recommended Posts

Besteht Hoffnung das Tinkerforge an einer Home Assistant Anbindung arbeitet?
Ich finde das würde super zusammen passen, wenn man in Home Assistant auf die Sensoren und Aktoren von Tinkerforge zugreifen könnte, das wäre WoW!
Und so schwer kann es doch eigentlich nicht sein die MQTT Anbindung etwas umzubauen, so das sie mit HA funktioniert?

Link to comment
Share on other sites

Moin,

On 11/20/2020 at 8:48 PM, derAngler said:

Besteht Hoffnung das Tinkerforge an einer Home Assistant Anbindung arbeitet?

Im Moment eher nicht. Du kannst aber die MQTT-Bindings benutzen, mit einem init_file Callbacks für die Werte aktivieren die dich interessieren und dann mit der MQTT-Sensor-Integration die Werte in Home Assistant bekommen.

Link to comment
Share on other sites

  • 3 months later...
Zitat

... Du kannst aber die MQTT-Bindings benutzen, mit einem init_file Callbacks für die Werte aktivieren die dich interessieren und dann mit der MQTT-Sensor-Integration die Werte in Home Assistant bekommen.

Da ich wohl doch der einzige bin der Interesse an einer Umsetzung von Tinkerforge nach Home Assistant interessiert ist muss ich mich wohl hinsetzen und das irgendwie programmieren.
Leider habe ich so gar keine Ahnung wie ich das am besten anfange.
Was ist mit "kannst aber die MQTT-Bindings benutzen, mit einem init_file Callbacks für die Werte aktivieren" gemeint, vor allem wie "init_file Callback" umsetzen kann.
Hat irgendwer eine Tip oder einen kleinen Stück Beispiel-Code für mich?
Am liebsten in python ;)

Link to comment
Share on other sites

Ich meinte damit folgendes: Du kannst die MQTT-Bindings von uns (hier: https://www.tinkerforge.com/de/doc/Software/API_Bindings_MQTT.html) benutzen und die Werte mit der oben verlinkten MQTT-Sensor-Integration von Home Assistant auslesen. Wenn du da etwas runterscrollst kommt eine Erklärung, wie du mit JSON-Daten (das Format benutzen wir für die MQTT-Bindings) umgehen kannst.

Du musst dann noch die Callbacks der Bricks/Bricklets aktivieren, die du benutzen willst. Dafür kannst du ein init_file schreiben, das ist eine Konfigurationsdatei für die MQTT-Bindings, die initial ausgeführt wird.

Am besten experimentierst du etwas mit den MQTT-Bindings, Mosquitto mit den mosquitto_pub- und _sub-Befehlen bieten sich da an.

 

Wenn du wirklich eine native Home Assistent-Anbindung (also ein Binding) schreiben willst: das ist vom Aufwand her vergleichbar mit den openHAB-Bindings in die ich schon ungefähr 9 Monate Arbeit versenkt habe, da würde ich dir eher von abraten.

Link to comment
Share on other sites

  • 5 months later...

Hallo zusammen,

ich habe mal das Beispiel mit einem Outdoor Weather Bricklet durchgespielt und es hat mich etwas Zeit gekostet, das Zusammenspiel von tinkerforge-mqtt und den Dateien zu verstehen. Daher mal meine Dateien als ein "konkretes" Beispiel im Anwendungsfall:

  1. Erfassung der Daten über Tinkerforge
  2. Publish als MQTT
  3. Anbindung an HomeAssistant als MQTT-Sensor (hier habe ich Fragen...).

In meinem Aufbau habe ich ein Outdoor-Weather Bricklet (UID: "Er2") mit einer Station und mehreren Sensoren (um die 6...). Der Tinkerforge-MQTT Daemon läuft auf einem Raspberry Pi, an dem per USB das Bricklet mit einem Master Brick angeschlossen ist.

daemon-cmd-args

=====

--ipcon-host 127.0.0.1
--ipcon-port 4223
--broker-host homeassistant.local
--broker-username user
--broker-password password
--debug
--symbolic-response
--show-payload
--init-file daemon-init-msgs

=====

daemon-init-msgs

{
    "tinkerforge/request/outdoor_weather_bricklet/Er2/set_station_callback_configuration": {"enable_callback": true},
    "tinkerforge/request/outdoor_weather_bricklet/Er2/set_sensor_callback_configuration": {"enable_callback": true},
    "tinkerforge/register/outdoor_weather_bricklet/Er2/station_data": {"register": true},
    "tinkerforge/register/outdoor_weather_bricklet/Er2/sensor_data": {"register": true}
}

=====

Starten des Daemon mit "tinkerforge_mqtt --cmdline-file daemon-cmd-args" führt dazu, dass die Daten entsprechend in MQTT publiziert werden:

Topic: "tinkerforge/callback/outdoor_weather_bricklet/Er2/sensor_data"

Data: {"temperature": 227, "identifier": 214, "humidity": 63}

=====

Frage(n):

Die üblichen Dokumentationen für MQTT-Sensor in HA sehen vor, dass es ein Topic pro Sensor gibt (bspw. "homeassistant/sensor/plant_sensor_1/temperature/config" für MQTT-Discovery). Nun ist der Ansatz bei Tinkerforge im Falle des Outdoor-Bricklets umgekehrt. Unter "tinkerforge/callback/outdoor_weather_bricklet/Er2/sensor_data" werden die Daten verschiedener Sensoren veröffentlicht, wobei zur Unterschiedung der "identifier" enthalten ist.

  1. Ist hier überhaupt eine direkte Nutzung in HomeAssist möglich, da ja hier basierend auf dem "identifier" eine Aufteilung auf verschiedene Entities erfolgen müsste?
  2. Und wäre es nicht für Tinkerforge sinnvoller, unterhalb des Bricklets und der Aufteilung nach Station oder Sensor noch nach den Identifiern aufzuteilen? Bspw. "tinkerforge/callback/outdoor_weather_bricklet/Er2/sensor_data/214/" für den Sensor mit der Identifier "214" aus obigen Beispieldaten ?
  3. Wie kann ich den Daemon mit diesem CMD-File als Service starten, sodass ich keine blockierte Konsole habe?

Danke !!
Und danke für die super Hardware/Software und den Support !

Grüße
Niels Göran

Edited by ngblume
Link to comment
Share on other sites

Moin Niels,

12 hours ago, ngblume said:

Ist hier überhaupt eine direkte Nutzung in HomeAssist möglich, da ja hier basierend auf dem "identifier" eine Aufteilung auf verschiedene Entities erfolgen müsste?

Mit etwas Bastelei sollte das gehen. Habe spontan das hier gefunden:

https://community.home-assistant.io/t/multi-sensor-using-same-mqtt-topic/172552/3

Der Teil mit dem "data demultiplexer" sieht nützlich aus.

12 hours ago, ngblume said:

Und wäre es nicht für Tinkerforge sinnvoller, unterhalb des Bricklets und der Aufteilung nach Station oder Sensor noch nach den Identifiern aufzuteilen? Bspw. "tinkerforge/callback/outdoor_weather_bricklet/Er2/sensor_data/214/" für den Sensor mit der Identifier "214" aus obigen Beispieldaten ?

In diesem Fall wäre es sinnvoller, aber so funktionieren die Bindings nicht. Die Bindings mappen 1:1 auf die Python-API und in der sind die Sensor-IDs ein Rückgabewert. Das ist immer das Problem bei "generischen" MQTT-Bindings, wenn es ein reines HA-Binding wäre, sähe das anders aus.

12 hours ago, ngblume said:

Wie kann ich den Daemon mit diesem CMD-File als Service starten, sodass ich keine blockierte Konsole habe?

Hast du die Bindings auf dem Pi als Debian-Paket installiert? Falls ja kannst du deine cmdline-Datei nach /etc/tinkerforge_mqtt.cmdline packen bzw. mit der Datei zusammenlegen.

Falls du die Bindings von Hand heruntergeladen hast kannst du die .service-Datei aus dem Zip bearbeiten und  --cmdline-file daemon-cmd-args einfügen.

Link to comment
Share on other sites

Hallo,

7 minutes ago, rtrbt said:

https://community.home-assistant.io/t/multi-sensor-using-same-mqtt-topic/172552/3

Der Teil mit dem "data demultiplexer" sieht nützlich aus.

danke für den Tip mit dem Data Multiplexer... Den Link habe ich schon mal offen gehabt, aber irgendwie unter "passt nicht"  wieder geschlossen...
Schaue nochmal in Ruhe in die Details und dann sollte es hoffentlich machbar sein...

5 minutes ago, rtrbt said:

In diesem Fall wäre es sinnvoller, aber so funktionieren die Bindings nicht. Die Bindings mappen 1:1 auf die Python-API und in der sind die Sensor-IDs ein Rückgabewert. Das ist immer das Problem bei "generischen" MQTT-Bindings, wenn es ein reines HA-Binding wäre, sähe das anders aus.

Nachvollziehbar, aber ja beim Übergang vom Empfang mittels der Python-API als Callback zum Publishen auf den MQTT-Topics abhängig von einem Config-Parameter "Split by Identifier" sicherlich relativ einfach und sinnvoll machbar... Und wäre auch der allgemeinere Ansatz im Vergleich zu MQTT-Sensoren...

7 minutes ago, rtrbt said:

Hast du die Bindings auf dem Pi als Debian-Paket installiert? Falls ja kannst du deine cmdline-Datei nach /etc/tinkerforge_mqtt.cmdline packen bzw. mit der Datei zusammenlegen.

Bindings als Debian-Paket installiert > Ansatz probiere ich auch und melde mich ggf. bei Problemen nochmal...

Danke !

Grüße
Niels Göran

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...