Ga naar hoofdinhoud

openHAB

logo

EMS-ESP kan op verschillende manieren worden geïntegreerd in openHab:

  • HomeAssistant MQTT Components Binding (gebaseerd op Home Assistant ontdekkingsprotocol)
  • MQTT Binding (Generiek MQTT Ding)
Example Dashboard (items depend on heating system)
Voorbeeld Dashboard (items zijn afhankelijk van verwarmingssysteem)
Het hangt van de entiteit en het apparaat af of deze schrijfbaar of alleen leesbaar is. Kijk in de entiteitenlijst Entities voor alle beschikbare entiteiten en gerelateerde attributen.
Documentatie is gemaakt voor openHab versie 3.x

HomeAssistant MQTT componenten binding

Installatie

EMS-ESP maakt behouden MQTT-berichten aan met als prefix homeassistant/ voor elk apparaat en hun waarden (entiteiten genoemd) op basis van het Home Assistant (HA) Discovery-protocol. Om automatische detectie in openHAB mogelijk te maken, moeten MQTT Binding en HomeAssistant MQTT Components Binding worden geïnstalleerd. Daarnaast zijn JINJA en JSONPath transformaties nodig om alle entiteiten en functies in kaart te brengen. Schakel in EMS-ESP de optie Discovery in op de pagina MQTT Settings.

Objecten in HA worden toegewezen aan Things, Component+Node aan ChannelGroup en Component Features aan Channels. Meer informatie is te vinden in de bindende specificatie.

Ontdekking

Je zou op basis van je verwarmingsinstellingen gerelateerde Things moeten zien in je Postvak IN

Inbox with EMS-ESP discovered Things
Inbox met EMS-ESP ontdekte dingen

Na het toevoegen van de Things kun je alle Channels zien die beschikbaar zijn voor het specifieke apparaat en die je hebt ingeschakeld in EMS-ESP voor MQTT.

Channels of a thermostat Thing
Kanalen van een thermostaatding

Beperkingen

Er zijn momenteel enkele beperkingen bij het gebruik van de binding. Een daarvan heeft ook invloed op de integratie van EMS-ESP in openHAB.

  • De HomeAssistant Klimaatcomponenten worden nog niet ondersteund (je vindt deze Channels niet in de lijst)

Het is mogelijk dat deze entiteiten in de toekomst worden ondersteund, afhankelijk van de verdere ontwikkeling van de binding.

MQTT Binding

EMS-ESP biedt alle informatie via het basispad MQTT ems-esp/ met behulp van onderwerpen en payloads die kunnen worden toegewezen aan Generic MQTT Things en verwante Channels.

openHAB biedt verschillende configuratiemodellen om nieuwe apparaten toe te voegen

  • Bestand gebaseerd
  • UI-gestuurd (kan worden gecombineerd)
    • gebaseerd op yaml (code-editor)
    • UI-geleide menu's

Installatie

Je moet de MQTT Binding installeren als client voor een MQTT-broker en de JSONPath Transformation Service voor het selecteren van de specifieke kanalen in de meegeleverde JSON-structuur van EMS-ESP.

Bestandsgebaseerde benadering

Algemeen MQTT ding

Het is mogelijk om voor elk apparaat een aparte Generic MQTT Thing te maken of alles in één. Hieronder wordt een voorbeeld gegeven dat kan worden aangepast aan je overeenkomstige opstelling en wensen. Het is gebruikelijk om een apart setonderwerp te hebben dat wordt gebruikt om gegevens terug te sturen naar de broker. stateTopic vertegenwoordigt de status van het ding en commandTopic wordt gebruikt om een waarde in te stellen. Je vindt alle relevante informatie over het onderwerp waarnaar je een commando moet sturen in de Commands.

things/mqtt.things
Bridge mqtt:broker:broker "MQTT Bridge" [ host="127.0.0.1", secure=false ]{
Thing topic ems-esp "Buderus Heating Pump" "gBoilerRoom" [availabilityTopic="ems-esp/status", payloadAvailable="online", payloadNotAvailable="offline"]{
Channels:
Type switch : EMS_s_pvcooling "Cooling only with PV" [stateTopic="ems-esp/boiler_data", commandTopic="ems-esp/boiler/pvcooling", ON="ON", OFF="OFF", transformationPattern="JSONPATH:$.pvcooling"]
Type number : EMS_n_pvraiseheat "Raise Hot Water with PV by" [stateTopic="ems-esp/thermostat_data", commandTopic="ems-esp/thermostat/pvraiseheat", transformationPattern="JSONPATH:$.pvraiseheat"]
Type string : EMS_maxheatheat "Auxilliary Heater Limit Heating" [stateTopic="ems-esp/boiler_data", commandTopic="ems-esp/boiler/maxheatheat", transformationPattern="JSONPATH:$.maxheatheat"]
}
}

Artikelen

Het is zinvol om de autoupdate functie te gebruiken. In plaats van de verwachte waarde van het wijzigen van het item te gebruiken wacht openHAB op een update van EMS-ESP via MQTT.

items/ems-esp.items
Switch           EMS_s_pvcooling
"Cooling only with PV"
<switch>
(gBoilerRoomHeatingHotWater)
["Switch", "Water"]
{channel="mqtt:topic:broker:ems-esp:EMS_s_pvcooling", autoupdate="false"}

Number EMS_n_pvraiseheat
"Raise Hot Water with PV by [%.1f K]"
<temperature>
(gBoilerRoomHeatingCircuit)
["Setpoint","Temperature"]
{channel="mqtt:topic:broker:ems-esp:EMS_n_pvraiseheat", autoupdate="false", listWidget="oh-stepper-item"[min=0, max=5, step=1]}

String EMS_maxheatheat
"Auxilliary Heater Limit Heating"
<heating>
(gBoilerRoomHeating)
["Control", "Current"]
{channel="mqtt:topic:broker:ems-esp:EMS_maxheatheat", autoupdate="false", stateDescription=""[options="0=0 KW,1=2 kW,2=3 kW,3=4 kW,4=6 kW,5=9 kW"]}

Sitemap (optioneel)

sitemaps/home.sitemap
Frame label="Heating" {
Switch item=EMS_s_pvcooling
Slider item=EMS_n_pvraiseheat
Selection item=EMS_maxheatheat
}
Example Sitemap (items depend on heating system)
Voorbeeld Sitemap (items zijn afhankelijk van verwarmingssysteem)

Op UI gebaseerde benadering

Het is ook mogelijk om de UI van openHab en de geïntegreerde Code-Editor te gebruiken om de integratie van EMS-ESP te implementeren. Hiervoor moeten verschillende stappen achter elkaar worden uitgevoerd.

  1. Maak een MQTT Broker door (Dingen -> (+) Icoon -> MQTT Binding -> MQTT Broker)
  2. Bewerk de aangemaakte MQTT Broker en plak de onderstaande code. Wijzig de attributen waar nodig of pas ze aan in de UI. (Dingen -> -Je aangemaakte MQTT Broker- -> Code-Tab)

MQTT Broker & MQTT Algemeen Ding

MQTT Broker
UID: mqtt:broker:broker
label: MQTT Bridge
thingTypeUID: mqtt:broker
configuration:
lwtQos: 0
publickeypin: true
keepAlive: 60
clientid: d825330e-3c51-4818-a43d-62778d379c83
qos: 0
reconnectTime: 60000
host: 127.0.0.1
secure: false
certificatepin: true
lwtRetain: true
enableDiscovery: true
  1. Maak een Generic MQTT Thing (Dingen -> (+) Pictogram -> MQTT Binding -> Generiek MQTT Ding)
  2. Bewerk de gemaakte Generic MQTT Thing en plak de onderstaande code. Wijzig de attributen waar nodig of pas ze aan in de UI. (Dingen -> -Uw aangemaakte generieke MQTT-ding- -> Code-tabblad)
Generic MQTT Thing
UID: mqtt:topic:broker:ems-esp
label: Buderus Heating Pump
thingTypeUID: mqtt:topic
configuration:
payloadNotAvailable: offline
availabilityTopic: ems-esp/status
payloadAvailable: online
bridgeUID: mqtt:broker:broker
location: gBoilerRoom
channels:
- id: EMS_s_pvcooling
channelTypeUID: mqtt:switch
label: Cooling only with PV
description: null
configuration:
retained: false
postCommand: false
formatBeforePublish: '%s'
commandTopic: ems-esp/boiler/pvcooling
stateTopic: ems-esp/boiler_data
transformationPattern: JSONPATH:$.pvcooling
off: off
on: on
- id: EMS_n_pvraiseheat
channelTypeUID: mqtt:number
label: Raise Hot Water with PV by
description: null
configuration:
retained: false
postCommand: false
formatBeforePublish: '%s'
commandTopic: ems-esp/thermostat/pvraiseheat
step: 1
stateTopic: ems-esp/thermostat_data
transformationPattern: JSONPATH:$.pvraiseheat
- id: EMS_maxheatheat
channelTypeUID: mqtt:string
label: Auxilliary Heater Limit Heating
description: null
configuration:
commandTopic: ems-esp/boiler/maxheatheat
retained: false
postCommand: false
formatBeforePublish: '%s'
stateTopic: ems-esp/boiler_data
transformationPattern: JSONPATH:$.maxheatheat

Artikelen

Selecteer in het Things overzicht je aangemaakte Thing en selecteer Channels. In de lijst met kanalen kun je klikken op Add Link to Item gebruiken en een item maken.

Fouten

  • Het kan gebeuren dat mqtt altijd de huidige status als waarde stuurt in plaats van de nieuwe. Een mogelijke oplossing zou kunnen zijn om de openHab service opnieuw te starten en te controleren of je een itemdimensie hebt. Als er een is, verwijder dan de dimensie.
  • Er is momenteel geen manier om de status van de Thing weer te geven zonder een regel te gebruiken