Hallo,
ich habe ein wenig Zeit gebraucht da ich in Urlaub war und die Familie Vorrang vor Openhab hat.

Dank der Infos hier und auch von LinkTap (die Antworten wirklich schnell) bin ich nun an mein Ziel gekommen. Danke hier an alle.
@Neuling10: Ich habe einen ähnlichen Ansatz wie Du. Die ausführlicher Einrichtung/Parametrierung mache ich auch in der LinkTap-App. Das geht dort sehr gut und ich wollte das Rad in OpenHab nicht neu erfinden.
Falls irgendwer mal über das gleiche Thema stolpert, hier mein Lösungsansatz ohne den Weg über Homeassistant. Ich hoffe es hilft bei Bedarf den Ein oder Anderen ein wenig weiter. Der Code hat mit Sicherheit Verbesserungspotential (bin kein Openhab Programmier-Experte)
Ich habe ein LinkTap D1. Das hat zwei Ventile mit Durchflussmessung. Bei meiner Parametrierung stellt jedes Ventil ein Device dar.
Gateway und Device haben eine eindeutige ID. Diese habe ich hier mal mit xxxxxxxxxx für die Gateway-ID und yyyyyyyyyy_1 für die Device-ID des ersten Ventils dargestellt (yyyyyyyyyy_2 wäre die des zweiten Ventils). Diese Angaben müssen natürlich bei jedem angepasst werden. Hier lohnt es sich ein MQTT-Explorer zu verwenden. Damit bekommt man die ID's einfach raus.
Folgend der Code für ein Device...
So sieht meine Sitemap am Ende aus:
openhab.jpg
Das LinKTab-Gateway ist in meinem Fall als MQTT-Client eingerichtet (ich gehe hier aber nicht auf die Einrichtung des MQTT-Brokers ein. Das sprengt den Rahmen)
gateway-settings.jpg
Für jedes Device habe ich in Openhab dann ein 'Generic MQTT Thing' angelegt. Für das erste Device/Ventil habe ich folgende Channels angelegt:
Code: Alles auswählen
channels:
- id: LinkTap01_1_battery
channelTypeUID: mqtt:number
label: LinkTap01_1_battery
description: ""
configuration:
stateTopic: /linktap/up_cmd/yyyyyyyyyy_1
transformationPattern: JSONPATH:$.dev_stat.battery
unit: "%"
- id: LinkTap01_1_signal
channelTypeUID: mqtt:number
label: LinkTap01_1_signal
description: ""
configuration:
stateTopic: /linktap/up_cmd/yyyyyyyyyy_1
transformationPattern: JSONPATH:$.dev_stat.signal
unit: "%"
- id: LinkTap01_1_remain_duration
channelTypeUID: mqtt:number
label: LinkTap01_1_remain_duration
description: ""
configuration:
stateTopic: /linktap/up_cmd/yyyyyyyyyy_1
transformationPattern: JSONPATH:$.dev_stat.remain_duration
unit: s
- id: LinkTap01_1_volume
channelTypeUID: mqtt:number
label: LinkTap01_1_volume
description: null
configuration:
stateTopic: /linktap/up_cmd/yyyyyyyyyy_1
transformationPattern: JSONPATH:$.dev_stat.volume
unit: l
- id: LinkTap01_1_flowrate
channelTypeUID: mqtt:number
label: LinkTap01_1_flowrate
description: null
configuration:
stateTopic: /linktap/up_cmd/yyyyyyyyyy_1
transformationPattern: JSONPATH:$.dev_stat.speed
unit: l
- id: LinkTap01_1_iswatering
channelTypeUID: mqtt:switch
label: LinkTap01_1_iswatering
description: null
configuration:
stateTopic: /linktap/up_cmd/yyyyyyyyyy_1
transformationPattern: JSONPATH:$.dev_stat.is_watering
off: "false"
on: "true"
- id: LinkTap01_1_startwartering_flowrate
channelTypeUID: mqtt:number
label: LinkTap01_1_startwartering_flowrate
description: null
configuration:
commandTopic: /linktap/down_cmd
formatBeforePublish: '{"cmd" : 6,"gw_id" : "xxxxxxxxxx","dev_id" :
"yyyyyyyyyy_1","duration":%d}'
stateTopic: /linktap/up_cmd/yyyyyyyyyy_1
transformationPattern: JSONPATH:$.dev_stat.total_duration
- id: LinkTap01_1_stopwartering
channelTypeUID: mqtt:switch
label: LinkTap01_1_stopwatering
description: null
configuration:
formatBeforePublish: '{"cmd" : 7,"gw_id" : "xxxxxxxxxx","dev_id" :
"yyyyyyyyyy_1"}'
commandTopic: /linktap/down_cmd
Nun die Items (Sorry, ich lege Items noch immer in einer Text-Datei an)
Code: Alles auswählen
String LinkTap01_1_action "Wasser Start/Stop" <faucet>
Switch LinkTap01_1_iswatering "Bewässerung" <faucet> { channel="mqtt:topic:a64cwfwefw:LinkTap01_1_iswatering" }
Number LinkTap01_1_target_time "Vorgabzeit [JS(sec2hms.js):%s]" <time> { channel="mqtt:topic:a64cwfwefw:LinkTap01_1_startwartering_flowrate" }
Number LinkTap01_1_remain_duration "Restlaufzeit [JS(sec2hms.js):%s]" <time> { channel="mqtt:topic:a64cwfwefw:LinkTap01_1_remain_duration"}
Number LinkTap01_1_volume "Gesamtabgabe [%.1f Ltr]" <bottle> { channel="mqtt:topic:a64cwfwefw:LinkTap01_1_volume"}
Number LinkTap01_1_speed "Durchfluss [%.1f Ltr/min]" <flow> { channel="mqtt:topic:a64cwfwefw:LinkTap01_1_flowrate"}
Number LinkTap01_1_battery "Batterie [%d %%]" <battery> {channel="mqtt:topic:a64cwfwefw:LinkTap01_1_battery"}
Number LinkTap01_1_signal "Signal [%d %%]" <network> {channel="mqtt:topic:a64cwfwefw:LinkTap01_1_signal"}
dazu habe ich folgende Rule:
Code: Alles auswählen
//==========================================================================
// Aktionsknopf zurücksetzten
//==========================================================================
rule "Action 1 zuruecksetzen"
when
Item LinkTap01_1_iswatering changed
then
LinkTap01_1_action.sendCommand("")
end
//==========================================================================
// Entsprechend der gewählten Aktion Ventil oeffnen bzw. schließen
//==========================================================================
rule "Wasser Links Ein/Aus"
when
Item LinkTap01_1_action changed
then
// Ventil oeffnen fuer n Sekunden
if (LinkTap01_1_action.state == "START")
{
LinkTap01_1_target_time.sendCommand(3600)
}
// Ventil schließen
if (LinkTap01_1_action.state == "STOP")
{
val mqttActions = getActions("mqtt","mqtt:broker:579z6dc338")
mqttActions.publishMQTT("/linktap/down_cmd", '{"cmd":7,"gw_id":"xxxxxxxxxx","dev_id":"yyyyyyyyyy_1"}');
}
end
So, ich hoffe ich hab nix übersehen und viel Spaß beim Bewässern mit LinkTap

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