Seite 2 von 4
Re: Tag und Nacht Erkennung via Rule
Verfasst: 29. Jan 2022 16:10
von HiG
udo1toni hat geschrieben: ↑26. Jan 2022 23:49
Nacht.postUpdate(ON)
Leider...funktioniert das nicht richtig bei mir
Rules:
Code: Alles auswählen
rule "Tag"
when
Channel "astro:sun:local:civilDawn#event" triggered START
then
sNacht.postUpdate(OFF)
sTag.postUpdate(ON)
logInfo("Zeiten", "Der Tag beginnt")
end
Code: Alles auswählen
rule "Nacht"
when
Channel "astro:sun:local:civilDusk#event" triggered START
then
sNacht.postUpdate(ON)
sTag.postUpdate(OFF)
logInfo("Zeiten", "Die Nacht beginnt")
end
Wenn ich das jetzt aber in einer Rule auswerte...
egal ob mit
oder
bekomme ich ein NULL
Code: Alles auswählen
2022-01-29 15:56:04.885 [INFO ] [g.openhab.core.model.script.Bewegung] - xxxx oh3_LogLogger29.01.22 15:56:04:sNacht (Type=SwitchItem, State=NULL, Label=Nacht?, Category=sunset, Tags=[Entry], Groups=[gSystem, gPersist])
Das Model zeigt den Wert korrekt an
night.jpg
Re: Tag und Nacht Erkennung via Rule
Verfasst: 29. Jan 2022 18:26
von violine21
HiG hat geschrieben: ↑29. Jan 2022 16:10
Wenn ich das jetzt aber in einer Rule auswerte...
In dem Fall würde ich in der Rule statt den Ausdrücken
die Ausdrücke
verwenden.
sendCommand wirkt sicher über Rules und Bindings, was mit postUpdate nicht gewährleistet ist.
Re: Tag und Nacht Erkennung via Rule
Verfasst: 30. Jan 2022 02:55
von udo1toni
Nein?!?
Ich hab keine Ahnung, warum es bei Dir nicht so funktioniert, aber postUpdate ist nicht die Ursache. Hast Du openHAB schon mal neu gestartet?
postUpdate() setzt den Status eines Items und tut sonst nichts.
sendCommand() sendet einen Befehl und setzt erst mal nicht den Status. Allerdings "errät" openHAB anhand des gesendeten Befehls den wahrscheinlichen neuen Status und setzt diesen mit postUpdate. Im Allgemeinen klappt das auch ganz gut, es kann aber auch schief gehen und für zusätzliche Verwirrung sorgen. Dann muss man dieses autoupdate gezielt abschalten.
Den Status kannst Du ausschließlich mit Item.state abfragen, z.B. so:
oder als Bedingung:
Ich verstehe ehrlich gesagt auch nicht, warum Du zwei Items verwendest, um einen komplementären Zustand abzubilden. Man könnte natürlich eine "Grauzone" zwischen Tag und Nacht schaffen, aber dann wäre es sinnvoller, dafür ein Number Item zu verwenden, oder alternativ ein String Item, in welchem dann die verschiedenen Zustände als Text hinterlegt werden. Im englischen Forum gab es dazu eine Beispiel-Rule, welche diverse Tageszeiten über ein Item abdeckte.
Re: Tag und Nacht Erkennung via Rule
Verfasst: 30. Jan 2022 10:10
von int5749
HiG hat geschrieben: ↑29. Jan 2022 16:10
udo1toni hat geschrieben: ↑26. Jan 2022 23:49
Nacht.postUpdate(ON)
Leider...funktioniert das nicht richtig bei mir
:-/
HiG hat geschrieben: ↑29. Jan 2022 16:10
Das Model zeigt den Wert korrekt an
night.jpg
Hmm, hier hat die GUI - aus meiner Sicht - einen kleinen Nachteil, welcher verwirren kann. Denn: Der Status eines
Switch-Items sieht gleich aus, egal ob dieser
OFF -
UDEF oder
NULL ist, nur
ON wird in der GUI anders dargestellt. Ausnahme sind hier Switch-Items mit einem dynamischen Icon bei dem sich bereits
OFF oder
ON von anderen Unterscheiden, wobei dann nur das Icon anders dargesteltl wird, der "Switch" in der GUI ist bei nicht-
ON immer grau.
Was sagt denn das Log?? Da muß ja auch zu beiden Einträgen ein "Befehl" erfolgt sein. Evtl. stimmt der Aufruf der Nacht nicht und der Wert wird somit nicht gesetzt?
HiG hat geschrieben: ↑29. Jan 2022 16:10
Wenn ich das jetzt aber in einer Rule auswerte...
Ich bin immer neugierig, und mir hilft es dies etwas genauer zu sehen. Kannst Du evtl. einmal zeigen, wie genau die Items definiert sind die Rule, welche den Status auswertet?? Klappt denn die Abfrage des
sTag Status?
Viele Grüße
Re: Tag und Nacht Erkennung via Rule
Verfasst: 30. Jan 2022 12:49
von peter-pan
...hab grad gesehen, dass du deine Items in Textform angelegt hast und keinen Suffix/Pattern enthalten ist. Probier mal [%s] mit im Label zu definieren. Vielleicht sieht die Welt dann schon anders aus

oder du hängst den Pattern in die Metadaten.
Ich drück dir die Daumen.
Re: Tag und Nacht Erkennung via Rule
Verfasst: 30. Jan 2022 15:47
von HiG
peter-pan hat geschrieben: ↑30. Jan 2022 12:49
Ich drück dir die Daumen.
Das wars

Danke
Re: Tag und Nacht Erkennung via Rule
Verfasst: 31. Jan 2022 15:02
von HiG
udo1toni hat geschrieben: ↑30. Jan 2022 02:55
Ich verstehe ehrlich gesagt auch nicht, warum Du zwei Items verwendest
Ich jetzt auch nicht mehr

Wahrscheinlich weil Tag nicht gleich Nacht heißt...keine Ahnung.
Aber eine ander Sache beschäftigt mich noch....
Ich hatte überlegt dieses Item zu persistieren...das dann aber verworfen, da es keinen Sinn macht. Denn... wenn das System heute abend (Nacht=on) ausfällt...und morgen vormittag wieder da ist (Nacht=off) stimmt ja der persistierte Wert nicht mehr. Aber... wenn ich nich persistiere und das o.g. Szenario tritt auf...dann ist das Item bis aktuell knapp 17:00 undefiniert (Null?). Frage ich es nun in Rules ab....dann "knallts". Oder hab ich da nen Denkfehler?
Re: Tag und Nacht Erkennung via Rule
Verfasst: 31. Jan 2022 15:47
von int5749
HiG hat geschrieben: ↑31. Jan 2022 15:02
udo1toni hat geschrieben: ↑30. Jan 2022 02:55
Ich verstehe ehrlich gesagt auch nicht, warum Du zwei Items verwendest
Ich jetzt auch nicht mehr

Wahrscheinlich weil Tag nicht gleich Nacht heißt...keine Ahnung.
Da reicht doch dennoch 1 Item?
Ich arbeite z.B. nur mit einem Item
Night Wenn
ON ist es Nacht, wenn
OFF eben das Gegenteil = Tag

Re: Tag und Nacht Erkennung via Rule
Verfasst: 31. Jan 2022 16:11
von HiG
int5749 hat geschrieben: ↑31. Jan 2022 15:47
Ich arbeite z.B. nur mit einem Item Night Wenn ON ist es Nacht, wenn OFF eben das Gegenteil = Tag
ja doch.

Habs ja schon geändert
Re: Tag und Nacht Erkennung via Rule
Verfasst: 31. Jan 2022 16:46
von int5749
HiG hat geschrieben: ↑31. Jan 2022 16:11
int5749 hat geschrieben: ↑31. Jan 2022 15:47
Ich arbeite z.B. nur mit einem Item Night Wenn ON ist es Nacht, wenn OFF eben das Gegenteil = Tag
ja doch.

Habs ja schon geändert

geht doch
Ich würde das Item auch nicht persistieren, aber es sollte/könnte wie folgt klappen.
Du triggerst ja auf die Bürgerliche Morgendämmerung und diese hat natürlich auch eine Uhrzeit, wlche wiederum mit der aktuellen vergliechen werden kann.
Neues Item
Code: Alles auswählen
DateTime civilDawnTime "civilDawn [%1$td.%1$tm.%1$tY %1$tH:%1$tM]" {channel="astro:sun:local:civilDawn#start"}
kleine Rule
Code: Alles auswählen
rule Initialisierung
when
System started
then
val day_start = (civilDawnTime.state as DateTimeType).getZonedDateTime()
if (now.isAfter(day_start)) {
sNacht.postUpdate(OFF)
} else {
sNacht.postUpdate(ON)
}
end