Falsche Zustandsanzeige nach Neustart

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

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

Re: Falsche Zustandsanzeige nach Neustart

Beitrag von udo1toni »

peter-pan hat geschrieben: 2. Feb 2019 00:58 Noch eine Frage zu split und get: Sind das auch Methoden/Funktionen zu einem Objekt ?
Hast du vielleicht auch noch einen Link, wo man das vielleicht auch noch (für den Laien verständlich) nachlesen kann ? (Bitte nicht xtend,xtext, das ist mir noch etwas zu abstrakt).
Die Methoden split() und get() sind leicht erklärt:
name als Methode liefert einen String zurück. name erbt alle Methoden der Klasse String. Eine der Methoden dieser Klasse ist split(), welches den String an der gewünschten Zeichenfolge auftrennt. Da man nicht weiß, wie oft gesplittet wird, liefert split() ein Array zurück. Arrays kennen die Methode get(), welche einen bestimmten Eintrag des Array zurück liefert, in diesem Fall den 2. (wir fangen mit 0 an zu zählen)

Eine Dokumentation kann ich Dir nicht empfehlen, Du kannst in Java-Handbüchern viel darüber lernen, da xtend und xtext ( :D ) viele Gemeinsamkeiten haben, allerdings ist nicht alles so verfügbar. Am sichersten kann man mit VSCode feststellen, welche Methoden ein Objekt zur Verfügung stellt. Oft ist der Name sprechend (split und get z.B.), mit dem Wissen um die Funktion kann man sich dann Codebeispiele anschauen.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Benutzeravatar
peter-pan
Beiträge: 2758
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: Falsche Zustandsanzeige nach Neustart

Beitrag von peter-pan »

super :idea: , da geht mir doch gleich ein Licht auf. Ich muss mich auch besser mit VSC anfreunden.

Danke - Peter
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

cwieser111
Beiträge: 9
Registriert: 30. Apr 2021 06:33
Answers: 0

Re: Falsche Zustandsanzeige nach Neustart

Beitrag von cwieser111 »

Ich habe das auch probiert.
Geht leider nicht seit dem ich auf die neue mqtt channel variante umgestiegen bin.

seit dem ich das neue Binding habe geht die alte Variante nicht mehr
das war die alte schreibweise

Switch S10sonoff "Ladegeraet Buero" <light> (G449) ["Switchable"] { mqtt=">[broker13:cmnd/S10-Ladegeraet/POWER:command:*:default], <[broker13:stat/S10-Ladegeraet/POWER:state:default]"}

das ist die neue
Switch Su4 "Ladegeraet Buero" (Grsonoff) {channel="mqtt:topic:S10_Sonoff_Ladegeraet-Buero:S10-Ladegeraet-Buero"}


wie sollte ich das umschreiben in der rule auf die neue variante,
Bin Ratlos

Benutzeravatar
peter-pan
Beiträge: 2758
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: Falsche Zustandsanzeige nach Neustart

Beitrag von peter-pan »

...wie sieht denn dein "Thing" aus ?
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

cwieser111
Beiträge: 9
Registriert: 30. Apr 2021 06:33
Answers: 0

Re: Falsche Zustandsanzeige nach Neustart

Beitrag von cwieser111 »

Ich habe lt einer Anleitung nur ein rule erstellt

Group item

Code: Alles auswählen

Group:Switch:OR(ON,OFF) Grsonoff "Sonoffgruppe [%s]" {autoupdate="false"}
Switch Su4 "Ladegeraet Buero" (Grsonoff)  {channel="mqtt:topic:S10_Sonoff_Ladegeraet-Buero:S10-Ladegeraet-Buero"}

Rule:

Code: Alles auswählen

var Timer tMqttState = null

rule "initial mqtt state"
when
    System started
then
    tMqttState?.cancel
    logInfo("initialState","Initializing Timer")
    tMqttState = createTimer(now.plusSeconds(20),[|
        logInfo("initialState","Timer ended. Initializing Items")
        GRsonoff.members.filter[m|m.state == NULL].forEach[i|
            logInfo("initialState","Initializing {}",i.name)
            publish("peter", "cmnd/" + i.name.split("_").get(1) + "/POWER", "?")
        ]
    ])
end

Benutzeravatar
peter-pan
Beiträge: 2758
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: Falsche Zustandsanzeige nach Neustart

Beitrag von peter-pan »

Da fehlt aber noch was.
In OH2 konnte man noch zwischen MQTT1 und MQTT2 wählen. Mit OH3 gibt es nur noch MQTT2.

Dazu musst du das Binding installieren und eine Bridge und mindestens ein Thing (mit Channels) anlegen.

Ich gehe davon aus, dass du einen Broker (Mosquitto) bereits installiert hast.

Was ist denn das für ein Teil, dieser Sonoff und ist der mit Tasmota geflasht ?

Verstehe ich die Regel richtig: Für jedes Item (Channel), das den Status NULL hat soll der aktuelle Wert des Channels ermittelt/initialisiert werden.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

cwieser111
Beiträge: 9
Registriert: 30. Apr 2021 06:33
Answers: 0

Re: Falsche Zustandsanzeige nach Neustart

Beitrag von cwieser111 »

ja genau so ist es
es läüft ein Mqtt broker als bridge
der Sonoff ist geflasht mit Tasmota

habe die letzte version von obenhab 2 (2.5.12)
und seit dem update ging die Variante mit MQtt 1.1 nicht mehr.
alte VAriante
Switch S10sonoff "Ladegeraet Buero" <light> (G449) ["Switchable"] { mqtt=">[broker13:cmnd/S10-Ladegeraet/POWER:command:*:default], <[broker13:stat/S10-Ladegeraet/POWER:state:default]"}

musste alles umschreiben auf diese channel Variante
neue VAriante
Switch Su4 "Ladegeraet Buero" (Grsonoff) {channel="mqtt:topic:S10_Sonoff_Ladegeraet-Buero:S10-Ladegeraet-Buero"

deshalb glaube ich das das rule nicht stimmt, weil es mit cmnd geschrieben wird

möchte nur eine Abfrage machen wenn der openhab neu startet oder Stromausfall ist, das er beim mqtt sonoff den ist schaltzustand abfragt.

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

Re: Falsche Zustandsanzeige nach Neustart

Beitrag von udo1toni »

Bitte Code immer als Code markieren (siehe oben, ich hab's mal übernommen)

Dein Problem ist ein Tippfehler. Das GroupItem heißt Grsonoff, in der Rule verwendest Du aber GRsonoff.
Jeder. Buchstabe. Muss. Exakt. Übereinstimmen. :D

Abgesehen davon enthält .name den Namen des Items. Das wäre z.B. Su4, was bedeutet, dass kein Unterstrich im Namen vorkommt. Du kannst das Topic natürlich aus dem Namen des Items errechnen, es muss dann aber auch Teil des Itemnamens sein ;)
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

cwieser111
Beiträge: 9
Registriert: 30. Apr 2021 06:33
Answers: 0

Re: Falsche Zustandsanzeige nach Neustart

Beitrag von cwieser111 »

danke für die Hilfe,
eines verstehe ich nicht ganz, was hier gemeint ist.
Zitat:
Abgesehen davon enthält .name den Namen des Items. Das wäre z.B. Su4, was bedeutet, dass kein Unterstrich im Namen vorkommt. Du kannst das Topic natürlich aus dem Namen des Items errechnen, es muss dann aber auch Teil des Itemnamens sein ;)

Benutzeravatar
peter-pan
Beiträge: 2758
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: Falsche Zustandsanzeige nach Neustart

Beitrag von peter-pan »

cwieser111 hat geschrieben: 10. Jun 2021 07:56 Zitat:
Abgesehen davon enthält .name den Namen des Items. Das wäre z.B. Su4, was bedeutet, dass kein Unterstrich im Namen vorkommt. Du kannst das Topic natürlich aus dem Namen des Items errechnen, es muss dann aber auch Teil des Itemnamens sein
Da der Post schon "sehr " alt ist , konnte ich mich nicht mehr so genau erinnern, was da eigentlich abgelaufen ist :oops: . Was Udo aber damit meinte ist , dass der Item-Name "Su4" heisst, aber in einer Zeile der Regel

Code: Alles auswählen

publish("peter", "cmnd/" + i.name.split("_").get(1) + "/POWER", "?")
nach einem zusammengesetzten Item-Namen (z.B: Su4_buerobatt) gesucht wird und dann der Teil mit Index 1 (buerobatt) extrahiert wird. Vorher wurde der Item-Name natürlich mit "split" noch in ein Array umgewandelt (ganz schön verwirrend).

Da Udo mir damals mit der Rule geholfen hat, hoffe ich, dass das so (einigermassen) richtig interpretiert ist.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

Antworten