Seite 1 von 1

Uhrzeit von letzter "Switch" Aktion in Sitemap anzeigen

Verfasst: 19. Jan 2020 10:51
von sonic
Guten Morgen Community,

Ich würde gerne in meiner Sitemap die Zeit der letzten Switch Aktion anzeigen lassen.

Folgendes ist der Aufbau:
mittels Magnetsensoren überwache ich den Briefkasten. Öffnet der Postbote also die Klappe, sendet der Magnetsensor eine 0 an eine NodeMCU mit EspEasy, diese sendet der Status via MQTT an meinen Raspi mit Openhabian. Das funktioniert auch tadellos.
Jetzt möchte ich aber gerne in der Sitemap die Uhrzeit dieser Aktion anzeigen lassen. Vielleicht kann mir hier jemand helfen.

Die entsprechenden Codezeilen:

briefkasten.rules

Code: Alles auswählen

rule "Briefkasten"
when
        Item Briefkasten changed to 0 // Sobald die Klappe geöffnet wird und der Kontakt unterbrochen wird
then
        logInfo("RULE", "--> Es ist Post gekommen")
        postUpdate(vBriefkasten, ON)        
        sendBroadcastNotification("Es ist Post gekommen!")
end
briefkasten.items

Code: Alles auswählen

Switch  vBriefkasten   "Briefkasten"
xxx.sitemaps (Der Bereich ist noch nicht fertig, bis jetzt habe ich den von meiner Klingel einfach übernommen. Es soll halt statt den mappings einfach die Uhrzeit des letzten Switch angezeigt werden)!

Code: Alles auswählen

Frame label="Briefkasten" {
        Switch item=vBriefkasten mappings=[ "ON"="Post ist da", "OFF"="Briefkasten geschlossen"] icon=motion
    }

Viele Grüße
Bernhard

P.S.: Eine entsprechende Vorstellung meinerseits und meines Smarthome werde ich selbstverständlich im Bereich "Projekte" posten.

Re: Uhrzeit von letzter "Switch" Aktion in Sitemap anzeigen

Verfasst: 19. Jan 2020 11:40
von violine21
Ich habe für solche Fälle den Zeitpunkt in der Sitemap an zu zeigen ein Item angelegt.
z.B. bei meiner Wetterstation

Code: Alles auswählen

String					virtual_wetterereignis							"Auslöser[%s]"
In der Rule dann folgende Zeile

Code: Alles auswählen

virtual_wetterereignis.postUpdate(now.toString("HH:mm"))
In deiner Sitemap (dann mit deinen Items)

Code: Alles auswählen

Frame label="Briefkasten" {
        Switch item=vBriefkasten mappings=[ "ON"="Post ist da", "OFF"="Briefkasten geschlossen"] icon=motion
        Text   item=virtual_wetterereignis
    }
Für die Nachricht kannst du mal das probieren:

Code: Alles auswählen

sendBroadcastNotification("Es ist Post gekommen!" + (now.toString("HH:mm")) +" Uhr")

Re: Uhrzeit von letzter "Switch" Aktion in Sitemap anzeigen

Verfasst: 19. Jan 2020 12:10
von sonic
Ganz ganz herzlichen Dank schonmal für die Antwort.
Ich werde es kommenden Mittwoch direkt testen, dann kommen leider erst meine Bausteine um 12v auf 5v bzw. 3,3v zu drosseln. Da die Teile schon verbaut sind kann ich vorher nicht testen.

Ich werde aber natürlich sofort Rückmeldung geben ob es geklappt hat. Davon gehe ich allerdings aus.
Noch einen schönen RestSonntag :-)

Re: Uhrzeit von letzter "Switch" Aktion in Sitemap anzeigen

Verfasst: 19. Jan 2020 22:00
von udo1toni
Weil hier eventuell die Uhrzeit nicht ausreichend ist:

Code: Alles auswählen

"yyyy/MM/dd HH:mm:ss"
wäre ein komplettes Datum, Jahr/Monat/Tag Stunde:Minute:Sekunde...

Re: Uhrzeit von letzter "Switch" Aktion in Sitemap anzeigen

Verfasst: 23. Jan 2020 17:02
von sonic
Hervorragend. Es hat alles funktioniert. BESTEN DANK.

ESPEasy auf den NodeMcu's lief allerdings nicht wirklich stabil. Gleiches geht aber auch mit Tasmota habe ich festgestellt.

Re: Uhrzeit von letzter "Switch" Aktion in Sitemap anzeigen

Verfasst: 29. Okt 2020 18:43
von Jojo
Servus,

das hätte ich auch gern,
klappt aber nicht.
Rule:

Code: Alles auswählen

rule "Zeit der Aktualisierung"
 
when 
Item ptotaltv received update 
then
Zeitaktuell.postUpdate(now.toString("HH:mm"))
end
Item:

Code: Alles auswählen

String Zeitaktuell "aktualisiert um: " <time>
Sitemap:

Code: Alles auswählen

Text item=Zeitaktuell
Mag mir jemand helfen ?


Danke schonmal

Re: Uhrzeit von letzter "Switch" Aktion in Sitemap anzeigen

Verfasst: 29. Okt 2020 19:50
von PeterA
Dein Item muss vom "Typ" DateTime sein.

Also z.B. so:

item:

Code: Alles auswählen

DateTime Filterwechsel_last	"Letzter Filterwechsel [%1$ta, %1$td.%1$tm.%1$ty, %1$tH:%1$tM Uhr]" <time>
rule:

Code: Alles auswählen

rule "Letzter Filterwechsel"
when
    Item FiltertimerReset changed from ON to OFF
then
    FiltertimerReset.state == OFF  // Filter wurde gewechselt
    Filterwechsel_last.postUpdate(now.toString())
end
sitemap:

Code: Alles auswählen

Default   item=Filterwechsel_last

Re: Uhrzeit von letzter "Switch" Aktion in Sitemap anzeigen

Verfasst: 29. Okt 2020 20:22
von peter-pan
Du könntest es aber auch so machen:

Code: Alles auswählen

String Zeitaktuell "aktualisiert um: [%s Std/Min] " <time>
Die Umwandlung in einen String geht schon auch. Du musst nur auch ein Format definieren, das macht OH nicht immer automatisch.

Re: Uhrzeit von letzter "Switch" Aktion in Sitemap anzeigen

Verfasst: 30. Okt 2020 13:43
von Jojo
Servus Peters,
die erste Lösung funktioniert traumhaft.
Danke euch beiden !!!