LinkTap Bewässerungscomputer und Flow Meter via MQTT integrieren

Für welche Projekte verwendet Ihr OpenHAB? Was habt Ihr automatisiert? Stellt eure Projekte hier vor.

Moderatoren: Cyrelian, seppy

neuling10
Beiträge: 56
Registriert: 26. Mär 2022 18:15

LinkTap Bewässerungscomputer und Flow Meter via MQTT integrieren

Beitrag von neuling10 »

Hallo an die Runde,

ich habe mir zur Bewässerungssteuerung einen LinkTap G2-S Bewässerungscomputer samt Flow Meter zugelegt. Der Computer unterstützt MQTT, somit habe ich ihn in mein MQTT eingebunden, leider gibts jedoch noch Probleme mit den Channels...

Im MQTT Explorer sehe ich, dass alle laut Hersteller verfügbaren Topics in MQTT ankommen (habe Host type Home Assistant gewählt, habe aber kein Home Assistant laufen)

Anschließend habe ich ein LinkTap Thing in Openhab erstellt, über das auch sämtliche Channels zur Verfügung stehen. Übers Model habe ich ein Equipment from Thing erstellt.

Leider kommen bei den meisten Channels keine Werte an (Status NULL). Ich kann beispielsweise den Bewässerungscomputer über Channel State über einen Switch steuern und sehe auch umgekehrt über den Switch, wenn bewässert wird. Auch die Alarm-Channels kommen richtig an mit "disarmed"/"armed". Bei den Channels battery, signal, volume, duration usw. kommen jedoch keine Werte an. Weiß vielleicht jemand von Euch, ob die Konfiguration nicht passt? Anbei Screenshots meiner MQTT-Konfiguration, MQTT Explorer (Beispiel Value) und Topics laut Hersteller.

Seltsamerweise kommt im Channel child_lock ein String mit wohl allen Eigenschaften an:
{"dev_id":"3D26E81D004B1200","plan_mode":0,"plan_sn":0,"is_rf_linked":"ON","is_flm_plugin":"ON","is_fall":"OFF","is_broken":"OFF","is_cutoff":"OFF","is_leak":"OFF","is_clog":"OFF","signal":100,"battery":100,"child_lock":0,"is_manual_mode":"OFF","is_watering":"OFF","is_final":"ON","total_duration":5,"remain_duration":0,"speed":0.00,"volume":0.00,"volume_limit":0.00,"failsafe_duration":0}

Hier noch meine Thing Konfiguration:

Code: Alles auswählen

UID: mqtt:homeassistant_3D26E81D004B1200:2e5f0240eb:3D26E81D004B1200
label: TapLinker (Switch, Sensor, Sensor, Sensor, Alarm Control Panel, Sensor,
  Alarm Control Panel, Sensor, Alarm Control Panel, Sensor, Sensor, Sensor,
  Sensor, Sensor, Sensor, Sensor, Sensor)
thingTypeUID: mqtt:homeassistant_3D26E81D004B1200
configuration:
  topics:
    - switch/3D26E81D004B1200_water_switch
    - sensor/3D26E81D004B1200_volume_limit
    - sensor/3D26E81D004B1200_remain_duration
    - binary_sensor/3D26E81D004B1200_is_watering
    - alarm_control_panel/3D26E81D004B1200_cutoff_alarm
    - sensor/3D26E81D004B1200_total_duration
    - sensor/3D26E81D004B1200_failsafe_duration
    - alarm_control_panel/3D26E81D004B1200_broken_alarm
    - alarm_control_panel/3D26E81D004B1200_fall_alarm
    - sensor/3D26E81D004B1200_child_lock
    - sensor/3D26E81D004B1200_volume
    - binary_sensor/3D26E81D004B1200_is_flm_plugin
    - binary_sensor/3D26E81D004B1200_is_rf_linked
    - sensor/3D26E81D004B1200_battery
    - binary_sensor/3D26E81D004B1200_is_manual_mode
    - sensor/3D26E81D004B1200_speed
    - sensor/3D26E81D004B1200_signal
  basetopic: homeassistant
bridgeUID: mqtt:broker:2e5f0240eb


Grüße
neuling10
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Benutzeravatar
udo1toni
Beiträge: 13866
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: LinkTap Bewässerungscomputer und Flow Meter via MQTT integrieren

Beitrag von udo1toni »

Nun ja, offensichtlich sind ein paar Channel nicht korrekt angelegt worden.
Dummerweise hast Du durch die Autodiscovery keinen Zugriff auf die wichtigen Parameter (die JSONPATH Pfade).

Wobei es auch sein könnte, dass Du lediglich noch gar keinen JSONPATH Transformation Service installiert hast, den brauchst Du auf jeden Fall.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

neuling10
Beiträge: 56
Registriert: 26. Mär 2022 18:15

Re: LinkTap Bewässerungscomputer und Flow Meter via MQTT integrieren

Beitrag von neuling10 »

Alles klar, vielen Dank für den Hinweis, JSONPath Transformation hatte ich tatsächlich noch nicht installiert. Dies habe ich nun in den Add-Ons nachgeholt.
Leider brachte dies keinen Erfolg, auch mit einer neuerlichen Anlage des Things nichts Neues :/

Sicherheitshalber die Nachfrage:
Muss das JSONPath Transformation Add-On noch irgendwo konfiguriert werden oder sollte eine einfache Installation genügen? Muss dies auch auf MQTT installiert werden oder nur in OH? Im MQTT Broker und in OH sehe ich 5 ankommende Channels korrekt, bei allen anderen steht "config=..."; das macht mich etwas stutzig warum es bei 5 Topics geht und bei den anderen (die meisten davon mit Typ "number") nicht...

Vielleicht nutzt ja noch eine Support-Anfrage an LinkTap was.... versuchen werde ich es jedenfalls, denn die Hardware, der Flow Meter und die diversen Fehler-Sensoren haben mich überzeugt :)

Benutzeravatar
udo1toni
Beiträge: 13866
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: LinkTap Bewässerungscomputer und Flow Meter via MQTT integrieren

Beitrag von udo1toni »

Im Zweifel kannst Du die Channel auch manuell anlegen, ohne die automatische Erkennung über das HA-Protokoll. Damit lassen sich auf jeden Fall alle Werte korrekt auslesen.
Sofern die Topics zum Senden bekannt sind (die könnte man sich auch über den mqtt Explorer beschaffen, samt gefordertem Datenformat) ist auch die Richtung zum Bewässerungscompluter kein Thema. Ist halt nicht ganz so komfortabel, wie "Klick-und-läuft"
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

neuling10
Beiträge: 56
Registriert: 26. Mär 2022 18:15

Re: LinkTap Bewässerungscomputer und Flow Meter via MQTT integrieren

Beitrag von neuling10 »

Wie immer tausend Dank udo1toni

Ich glaube ich stehe nun kurz vor der Lösung, allerdings weiß ich nicht, nach welcher Syntax ich die einzelnen Items ansprechen kann.

Folgendes habe ich verändert:
Ich verwende nun den Regular MQTT Broker und nicht mehr Home Assistant. Im MQTT Explorer habe ich nun ein Topic /linktap/up_cmd mit allen Channels in einer langen String-Wurst und als Code:

Code: Alles auswählen

{
  "cmd": 3,
  "gw_id": "17482312004B1200",
  "dev_stat": [
    {
      "dev_id": "3D26E81D004B1200",
      "plan_mode": 0,
      "plan_sn": 456806444,
      "is_rf_linked": true,
      "is_flm_plugin": true,
      "is_fall": false,
      "is_broken": false,
      "is_cutoff": false,
      "is_leak": false,
      "is_clog": false,
      "signal": 100,
      "battery": 100,
      "child_lock": 0,
      "is_manual_mode": false,
      "is_watering": false,
      "is_final": true,
      "total_duration": 30,
      "remain_duration": 0,
      "speed": 0,
      "volume": 0,
      "volume_limit": 0,
      "failsafe_duration": 0
    }
  ]
}
In OH habe ich ein Generic MQTT Thing angelegt mit einzelnen Channels (alle true/false als Switch, alle Zahlenwerte als Number, "dev_id" benötige ich nicht). Nach reichlich Herumprobieren habe ich jedoch immer noch nicht herausgefunden, wie die Channels und Items konfiguriert werden müssen, um die Einzelwerte angezeigt zu bekommen.

Mit meinem bis dato letzten Versuch habe ich alle Channels konfiguriert mit:
MQTT State Topic:
/linktap/up_cmd

MQTT Command Topic: (nur für "is_watering", da das wohl der Channel zum Bewässern ist)
/linktap/up_cmd

Die Items, z.B. für "battery", konfiguriert mit:
Profile:
JSONPATH

JSONPath Ausdruck:
$dev_stat.battery


Leider bis dato immer nur NULL-Werte in den Items :/

Grüße
neuling10

Benutzeravatar
udo1toni
Beiträge: 13866
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: LinkTap Bewässerungscomputer und Flow Meter via MQTT integrieren

Beitrag von udo1toni »

Nein, es muss zwei Topics geben, das eine zum senden, das andere zum empfagnen. Kommunikation in mqtt ist immer gerichtet, es ist nicht möglich, beide Richtungen über das selbe Topic abzuwickeln. Wie die Topics heißen, sollte die Doku verraten, der MQTT Explorer kann Dir nur für die Senderichtung vom Device das Topic verraten.

Der JSONPATH Ausdruck z.B. für die Batterie sollte

Code: Alles auswählen

$.dev_stat[0].battery
lauten.
Alle anderen Werte auf gleicher Ebene haben das $.dev_stat[0]. vorneweg gemeinsam.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

neuling10
Beiträge: 56
Registriert: 26. Mär 2022 18:15

Re: LinkTap Bewässerungscomputer und Flow Meter via MQTT integrieren

Beitrag von neuling10 »

Ich habs nun geschafft die Item States zu bekommen :D

Es hat seltsamerweise allerdings nur funktioniert, indem ich direkt bei den Generic MQTT Thing Channels die JSON-Transformation angestoßen habe mit:

Code: Alles auswählen

JSONPATH:$.dev_stat.battery

Das Item habe ich dann einfach mit Profil Standard angelegt.
Keine Ahnung, warum es nicht auch funktioniert, wenn man den JSONPath Ausdruck im Item hinterlegt aber bin nun erstmals froh, dass es nun funktioniert :)

Danke auch für den Tipp fürs zweite Topic für die andere Senderichtung. Den Watering-Switch steuere ich von OH aus mit dem automatisch angelegten Channel, der übers Linktap MQTT Thing hereinkam.

Benutzeravatar
udo1toni
Beiträge: 13866
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: LinkTap Bewässerungscomputer und Flow Meter via MQTT integrieren

Beitrag von udo1toni »

Vermutlich hast Du keinen String Channel verwendet.

Der Channel muss das gesamte JSON Objekt speichern können.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

brauni
Beiträge: 6
Registriert: 25. Jun 2022 19:49

Re: LinkTap Bewässerungscomputer und Flow Meter via MQTT integrieren

Beitrag von brauni »

Hallo Zusammen,

ich habe jetzt auch einen LinkTap und bin ganz begeistert von diesem Bewässerungscomputer.
Natürlich versuche ich diesen nun in OpenHab via MQTT zu integrieren. MQTT ist für mich Neuland und stolpere so vor mich hin. Wie in den Beiträgen zuvor schon zu lesen, kann man den LinkTap auf eine von zwei Host-Varianten einstellen
hosttypes.png

Auch ich habe durch Zufall zuerst die zweite Variante "HomeAssistant" gewählt und fand es doch recht einfach alle Werte auszulesen. Man muss halt die Things in Openhab mit JSON-Angaben einzeln anlegen. Auch habe ich den Weg gefunden das Ventil Ein- bzw. auszuschalten. Hierfür gibt es einen /set. Das war schon mal ein Erfolg.

Beispiel-Code aus Openhab (bei Verwendung Hosttype "HomeAssistant)":
homeassistant.png
Ich würde gerne noch einen kleinen Schritt weitergehen und die Zeit wie lange das Ventil offen bleiben soll aus openhab setzen. Und da scheitere ich nun. Es gibt unter dem HostType "HomeAssistant" scheinbar kein /set hierfür.

Aus Verzweiflung über mein Unwissen habe ich den LinkTap dann auf HostType "Regula MQTT Broker" umgestellt. Ich hoffte das sich ein Weg für mich erschließt. Mittels des Topic /linktap/up_cmd bekommt man die verschiedenen Statis. Soweit erstmal kein Problem was das auslesen angeht.
up_cmd2.png
Wie kann ich aber nun einen Wert ans LinkTap senden? z.B. zum Öffnen/Schließen oder zur Einstellung der Öffnungsdauer (total_duration)
In der Doku vom Hersteller (https://linktap-static.s3.amazonaws.com ... ration.pdf) habe ich ein Beispiel/Publish gefunden, wie man das Ventil für eine gewisse Zeit öffnet. Hier der Code-Schnipsel:

linktap/down_cmd
{
"cmd" : 6,
"gw_id" : "xxxxxxxxxxxxxx",
"dev_id" : "xxxxxxxxxxxxx",
"duration":60
}


Setzte ich das zum Test über MQTT.fx ab, funktioniert das sogar. Das Ventil öffnet und schließ nach 60 Sekunden. :-)
Aber wie schließe ich es bei Bedarf zuvor wieder?
Und vor allem... wie kann ich das nun openhab am elegantesten beibringen? Z.B. wenn ich über die Sitemap die Dauer einstelle und diesen Wert dann an das LinkTap senden möchte. Oder halt zum vorzeiten Schließen des Ventils (also ein ON/OFF)?

Da fehlt mir einfach das KnowHow. Hat das jemand schon mal mit den LinkTap-Geräten hinbekommen?

ich freue mich über jeden Tipp,
Viele Grüße,
Andreas
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Benutzeravatar
udo1toni
Beiträge: 13866
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: LinkTap Bewässerungscomputer und Flow Meter via MQTT integrieren

Beitrag von udo1toni »

Also grundsätzlich sollte der Home Assistant Modus ein Topic senden, anhand dessen Payload Home Assistant in der Lage sein sollte, automatisch passende Elemente zu erzeugen. Diese Payload enthält also (im JSON Format) sämtliche notwendigen Informationen.
Kann natürlich sein, dass LinkTap hier nur Teile umgesetzt hat, das wäre dann doof. (openHAB bedient sich ebenfalls dieses Topics, um automatisch passende Things zu erzeugen).

Letztlich musst Du zwingend zwei Topics im LinkTap definieren, das eine welches zum Senden in Richtung Broker verwendet wird (In der Doku Uplink Topic) und ein zweites, welches dem Empfang von Befehlen dient (Downlink Topic).

Meine Empfehlung dazu wäre, das Uplink Topic als stat zu definieren und das Downlink Topic als cmd oder cmnd, denn LinkTap sendet keine Befehle sondern Status ([klugscheiß] Status wird nicht flexiert, es ist für Einzahl und Mehrzahl das selbe Wort [/klugscheiß])
Auf openHAB-Seite hast Du dann das stateTopic (ankommend) und das commandTopic (abgehend).

Da Du ein JSON Objekt senden musst, das zugehörige Item (das wäre Typ Number) aber nur eine Zahl zur Verfügung stellt, musst Du in Advanced Options den Parameter formatBeforePublish konfigurieren.
Ich empfehle dringend, einen MQTT Sniffer zu verwenden, um Dich vom korrekten Inhalt der Payload zu überzeugen (z.B. MQTT Explorer lässt sich über den Microsoft Store kostenlos installieren) Der Sniffer wird als ganz normaler MQTT Client am Broker angemeldet und zeigt sämtliche Topics an, die so hin und her gehen.

formatBeforePublish wird vermutlich so etwas beinhalten müssen:

Code: Alles auswählen

formatBeforePublish : '{"cmd" : 6,"gw_id" : "xxxxxxxxxxxxxx","dev_id" : "xxxxxxxxxxxxx","duration":%f}'
%f wird dabei automatisch mit dem Befehl ersetzt, den das Item zum Channel sendet, also z.B. 5.7 oder 4711. Falls keinesfalls Nachkommastellen erlaubt sind, kannst Du auch statt %f einfach %.0f schreiben, das schneidet alle Nachkommastellen (incl. dem Punkt) ab. Hat die gesendete Zahl keine Nachkommastellen, wird formatBeforePublish auch keine anhängen).

Wie gesagt, teste es am besten, indem Du alles konfigurierst und Dir im MQTT Explorer (oder einem anderen vergleichbaren Werkzeug) anschaust, was openHAB tatsächlich sendet.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Antworten