Items aus openhab nach MQTT
-
- Beiträge: 110
- Registriert: 21. Dez 2019 23:44
Items aus openhab nach MQTT
Hallo !
Gibts eigentlich eine Möglichkeit Items welche eigentlich nur in Openhab existieren in MQTT abzubilden ?
Ich hab in Openhab ein paar Items welche ich dort quasi "erzeuge" (sprich ich rechne mir z.B. den Wirkungsgrad eines Erzeugers aus.
In Openhab existiert dazu eine Items welches auch korrekt befuellt und angezeigt wird.
Wie kann ich nun erreichen dass dies auch in MQTT landet ?
(passendes thing erstellen reicht anscheinend nicht aus da schon probiert
Gruss Gerd
Gibts eigentlich eine Möglichkeit Items welche eigentlich nur in Openhab existieren in MQTT abzubilden ?
Ich hab in Openhab ein paar Items welche ich dort quasi "erzeuge" (sprich ich rechne mir z.B. den Wirkungsgrad eines Erzeugers aus.
In Openhab existiert dazu eine Items welches auch korrekt befuellt und angezeigt wird.
Wie kann ich nun erreichen dass dies auch in MQTT landet ?
(passendes thing erstellen reicht anscheinend nicht aus da schon probiert
Gruss Gerd
- PeterA
- Beiträge: 1052
- Registriert: 8. Feb 2019 12:12
Re: Items aus openhab nach MQTT
Hi,
Du musst das Item noch mit einem Channel Verlinken.
Dann landet das auch beim Broker.
Hier ein Beispiel:
Definition thing:
Es gibt immer ein State und Command Topic
items:
Ich hoffe das Hilft weiter.
Gruß
Peter
Du musst das Item noch mit einem Channel Verlinken.
Dann landet das auch beim Broker.
Hier ein Beispiel:
Definition thing:
Es gibt immer ein State und Command Topic
Code: Alles auswählen
Type number : inv1_limit_relative "I1 limit relative" [stateTopic="solar/116183132641/status/limit_relative", commandTopic="solar/116183132641/cmd/limit_persistent_relative", unit="%"]
Type number : inv1_limit_absolute "I1 limit absolute" [stateTopic="solar/116183132641/status/limit_absolute", commandTopic="solar/116183132641/cmd/limit_persistent_absolute", unit="W"]
Code: Alles auswählen
Number:Dimensionless OpenDTU1_inv1_limit_relative "Limit (rel)" <qualityofservice> (OpenDTU) {channel="mqtt:topic:3448a27a:OpenDTU1:inv1_limit_relative"}
Number OpenDTU1_inv1_limit_absolute "Limit (abs)" <qualityofservice> (OpenDTU) {channel="mqtt:topic:3448a27a:OpenDTU1:inv1_limit_absolute"}
Gruß
Peter
- OpenHab 2.4
#PWRUP
#PWRUP
-
- Beiträge: 110
- Registriert: 21. Dez 2019 23:44
Re: Items aus openhab nach MQTT
Hi !
das habe ich ja..
thing
item
Gruss Gerd
das habe ich ja..
thing
Code: Alles auswählen
Type number : solar_eff "WR Wirkungsgrad" [stateTopic="solarview/WR1/EFF", commandTopic="solarview/WR1/EFF"]
Code: Alles auswählen
Number Solar_Efficiency "Wirkungsgrad [ %.2f %%]" <solarplant> { channel="mqtt:topic:home:solarview:solar_eff" }
- PeterA
- Beiträge: 1052
- Registriert: 8. Feb 2019 12:12
Re: Items aus openhab nach MQTT
Wenn ich mich richtig Erinnere wird nur was auf den Broker published wenn das Item einen "Command" bekommt.
https://community.openhab.org/t/solved- ... t/135634/3
Oder So:
viewtopic.php?t=4080
Und So:
viewtopic.php?t=6928
https://community.openhab.org/t/solved- ... t/135634/3
Oder So:
viewtopic.php?t=4080
Und So:
viewtopic.php?t=6928
- OpenHab 2.4
#PWRUP
#PWRUP
-
- Beiträge: 110
- Registriert: 21. Dez 2019 23:44
Re: Items aus openhab nach MQTT
Hi !
den 2ten und 3ten hab ich probiert irgendwie steigt da meine rule immer aus...
Gruss Gerd
den 2ten und 3ten hab ich probiert irgendwie steigt da meine rule immer aus...
Gruss Gerd
- udo1toni
- Beiträge: 13864
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Items aus openhab nach MQTT
Zeig doch mal Deine Rule konkret. Bitte die Code-Ansicht auswählen und den Text hier (als Code markiert) posten.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 110
- Registriert: 21. Dez 2019 23:44
Re: Items aus openhab nach MQTT
Hi !
Also die ersten zwei Zeilen das geht ja sprich ich krieg den Wirkungsgrad angezeigt...
Gruss Gerd
Code: Alles auswählen
rule "calc efficiency"
when
Item Solar_Power_dc changed or
Item Solar_Power_ac changed
then
sendCommand(triggeringItem.state.toString)
Solar_Efficiency.postUpdate(Solar_Power_ac.state as Number/Solar_Power_dc.state as Number * 100)
val mqttActions = getActions("mqtt", "mqtt:broker:home")
mqttActions.publishMQTT("solarview/WR1/EFF", Solar_Efficiency.state)
end
Gruss Gerd
- udo1toni
- Beiträge: 13864
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Items aus openhab nach MQTT
Also das hier:
kann schon mal nicht funktionieren, weil je nachdem, wie man des dreht, entweder der Itemname fehlt, oder aber es wird versucht, den Wert des triggernden Items als Item Name zu verwenden (dann fehlt immer noch der zu sendende Befehl - außerdem existiert das implizite Objekt triggeringItem nicht in dem Kontext, es sei denn, Du arbeitest mit openHAB2.x
Der Ausdruck Item.state as Number muss geklammert werden, damit die Berechnung funktioniert.
Besser:Das Item kann direkt den Wert an mqtt senden, warum mit einer Action lösen, wenn es auch über einen Channel geht?
Der Weg über lokale Variablen schützt vor Fehlermeldungen, weil z.B. eines der Items nicht initialisiert ist oder weil der Divisor vielleicht 0 ist.
Code: Alles auswählen
sendCommand(triggeringItem.state.toString)
Code: Alles auswählen
rule "calc efficiency"
when
Item Solar_Power_dc changed or
Item Solar_Power_ac changed
then
Solar_Efficiency.postUpdate((Solar_Power_ac.state as Number)/(Solar_Power_dc.state as Number) * 100)
val mqttActions = getActions("mqtt", "mqtt:broker:home")
mqttActions.publishMQTT("solarview/WR1/EFF", Solar_Efficiency.state)
end
Besser:
Code: Alles auswählen
rule "calc efficiency"
when
Item Solar_Power_dc changed or
Item Solar_Power_ac changed
then
var nPac = 0
var nPdc = 0
if(Solar_Power_ac.state instanceof Number)
nPac = Solar_Power_ac.state as Number
if(Solar_Power_dc.state instanceof Number)
nPdc = Solar_Power_dc.state as Number
var nEff = 0
if(nPdc > 0)
nEff = nPac / nPdc * 100
Solar_Efficiency.sendCommand(nEff)
end
Code: Alles auswählen
Number Solar_Efficiency (verlinkt mit einem mqtt number Channel, der als commandTopic solarview/WR1/EFF konfiguriert hat.)
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 110
- Registriert: 21. Dez 2019 23:44
Re: Items aus openhab nach MQTT
Hi !
Ergebnis
2023-06-03 11:35:18.669 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'test-1' failed: An error occurred during the script execution: Could not invoke method: org.eclipse.xtext.xbase.lib.IntegerExtensions.operator_greaterThan(int,int) on instance: null in test
Gruss Gerd
Code: Alles auswählen
rule "calc efficiency 2 "
when
Item Solar_Power_dc changed or
Item Solar_Power_ac changed
then
var nPac = 0
var nPdc = 0
if(Solar_Power_ac.state instanceof Number)
nPac = Solar_Power_ac.state as Number
if(Solar_Power_dc.state instanceof Number)
nPdc = Solar_Power_dc.state as Number
var nEff = 0
if(nPdc > 0)
nEff = nPac / nPdc * 100
Solar_Efficiency.sendCommand(nEff)
end
2023-06-03 11:35:18.669 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'test-1' failed: An error occurred during the script execution: Could not invoke method: org.eclipse.xtext.xbase.lib.IntegerExtensions.operator_greaterThan(int,int) on instance: null in test
Gruss Gerd
- udo1toni
- Beiträge: 13864
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Items aus openhab nach MQTT
Und die Rule ist in einer rules-Datei angelegt?
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet