MQTT Item nach Systemstart = NULL -> publishMQTT

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

Moderatoren: Cyrelian, seppy

Antworten
Benutzeravatar
Florian.Reinartz
Beiträge: 117
Registriert: 11. Apr 2022 08:47
Answers: 0
Wohnort: bei Schwerin

MQTT Item nach Systemstart = NULL -> publishMQTT

Beitrag von Florian.Reinartz »

Hallo Zusammen,

ich habe noch ein kleines Problem.
Die Items der MQTT-Things sind nach dem Systemstart alle auf NULL.
Nach einer Frage im Forum (ich weiß nicht mehr wo ?!?) bekam ich folgende Hilfestellung:

Code: Alles auswählen

rule "Tasmota-Status"
    when
        //Time cron "*/30 * * * * ?" or
        //Time cron "0 0 0 * * ?" or
        Item SystemStart_5Min changed to ON
    then
        //get stats of tasmota devices"
        val mqttActions = getActions("mqtt","mqtt:broker:RzHomeControl_MQTT_Broker")
        mqttActions.publishMQTT("cmnd/tasmotas/POWER",null, false)
        mqttActions.publishMQTT("cmnd/tasmotas/FanSpeed",null, false)
        mqttActions.publishMQTT("cmnd/tasmotas/Dimmer",null, false)
end
Leider zeigt mit Visual Studio Code diese Zeilen immer als fehlerhaft an.
Ich kann diesbezüglich keine Infos im Netzt finden ... zumindest keine, die ich verstehe :lol:
Ich bekomme zum rot markierten Teil

mqttActions.publishMQTT("cmnd/...

immer folgende Info

Ambiguous feature call.
The extension methods
publishMQTT(ThingActions, String, String, Boolean) in MQTTActions and
publishMQTT(ThingActions, String, byte[], Boolean) in MQTTActions
both match.


Bin für jede Hilfe dankbar.
Gruß
Florian
openHAB 4.3.4 (64 bit) auf einem Raspberry Pi 5 Model B Rev 1.0 mit 8GB

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

Re: MQTT Item nach Systemstart = NULL -> publishMQTT

Beitrag von udo1toni »

Ambiguous feature call bedeutet, dass openHAB ohne weitere Information nicht entscheiden kann, welche der zwei möglichen Methoden es ausführen soll.
Das Problem ist hier allerdings, dass für den Call gewöhnlich ein null-String übergeben werden muss. Aber probiere mal, ob es auch mit einem Leerstring geht (""). Wie man ein leeres Byte-Array übergibt, müsste ich auch erst herausfinden :).

Der Trigger über ein Item (welches dann vermutlich über die Expiration Time mach einer fixen Zeit triggert) geht natürlich, eleganter wäre der startlevel 100 - den man allerdings nicht in der DSL über Dateien nutzen kann. Aber für genau diese Art Rules könnte man auch über die UI gehen. Wenn man den Code als Text beibehalten will, bietet es sich an, den Code als Script abzuspeichern und dieses Script dann per callScript aufzurufen:
/etc/openhab/scripts/startup.script:

Code: Alles auswählen

//get stats of tasmota devices"
val mqttActions = getActions("mqtt","mqtt:broker:RzHomeControl_MQTT_Broker")
mqttActions.publishMQTT("cmnd/tasmotas/POWER","", false)
mqttActions.publishMQTT("cmnd/tasmotas/FanSpeed","", false)
mqttActions.publishMQTT("cmnd/tasmotas/Dimmer","", false)
und eine UI Rule mit diesem Code:

Code: Alles auswählen

configuration: {}
triggers:
  - id: "1"
    configuration:
      startlevel: 100
    type: core.SystemStartlevelTrigger
conditions: []
actions:
  - inputs: {}
    id: "2"
    configuration:
      type: application/vnd.openhab.dsl.rule
      script: callScript("startup")
    type: script.ScriptAction
Damit sollten die Befehle zuverlässig nach dem Start aller Systemkomponenten ausgeführt werden, aber eben nicht erst nach 5 Minuten.

- ungetestet - müsste aber eigentlich gehen...
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Benutzeravatar
Florian.Reinartz
Beiträge: 117
Registriert: 11. Apr 2022 08:47
Answers: 0
Wohnort: bei Schwerin

Re: MQTT Item nach Systemstart = NULL -> publishMQTT

Beitrag von Florian.Reinartz »

Moin Zusammen,

habe jetzt wieder Luft mich dem Problem zu widmen.
Einfach nur null gegen "" auszutauschen hat schon mal die Fehlermeldung in VSC eliminiert.
Werde noch mal einen Reboot abwarten und schauen ob die Werte der MQTT-Items geholt werden.
Wenn nicht versuche ich die Variante mit dem Script.

Vielen Dank
Gruß
Florian
openHAB 4.3.4 (64 bit) auf einem Raspberry Pi 5 Model B Rev 1.0 mit 8GB

Antworten