Timestamp in Anwesenheitsmeldung einbinden

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

Moderatoren: Cyrelian, seppy

Antworten
Benutzeravatar
Grisu27
Beiträge: 31
Registriert: 30. Jun 2021 14:44

Timestamp in Anwesenheitsmeldung einbinden

Beitrag von Grisu27 »

Hallo Zusammen,
Habe schon die bisherigen Projekte durchforstet, konnte jedoch keine Lösung für meinen Wunsch finden.
Ich habe folgende Regel geschrieben:

Code: Alles auswählen

var Timer timer2 = null
val mailActions = getActions("mail","mail:smtp:ionos")

rule "Anwesenheit 5G Benutzer"
when 
    Item  S_H_H_O_Benutzer changed to "WLAN_5G"
then
    if(S_H_H_O_Benutzer.state.equals("WLAN_5G")){
        timer2 = createTimer(now.plusSeconds(30), [|
        if(S_H_H_O_Benutzer.state.equals("WLAN_5G")){
           S_H_H_Benutzer.sendCommand(ON)
        }              
        timer2 = null
        ])
    } 
    mailActions.sendMail("openhab@Mail-des-Benutzers.de", "Heimstatus", "Benutzer kommt nachhause")
end
Ich würde jetzt gerne in den mailActions.sendMail Befehl einen Timestamp einbauen, um dann in der Mail folgende Nachricht zu erzeugen:
"Heimstatus, Benutzer kommt um 13:15 Uhr nachhause"
Kann mir jemand helfen welche Syntax ich dazu verwenden kann?
Mit mailActions.sendMail("openhab@Mail-des-Benutzers.de"Heimstatus", "Benutzer kommt um", "[%1$td.%1$tm.%1$tY %1$tH:%1$tM]", "nachhause")
geht's nicht
vielen Dank schonmal im voraus

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

Re: Timestamp in Anwesenheitsmeldung einbinden

Beitrag von udo1toni »

Worauf soll sich %1$ denn beziehen?. Bitte denke immer daran, dass es sich hier um eine Variable handelt, die nur im Kontext gültig ist (in dem Fall also im Label eines DateTime Items).
Du kannst innerhalb der Rule die Funktion String::format() verwenden. Sie hat zwei Parameter. Der erste Parameter beschreibt das Format, und zwar exakt so, wie Du es auch schon angegeben hast, der zweite Parameter übergibt den zu formatierenden Wert, also die eigentliche Timestamp.

Code: Alles auswählen

mailActions.sendMail("openhab@Mail-des-Benutzers.de"Heimstatus", "Benutzer kommt um "+String::format("%1$td.%1$tm.%1$tY %1$tH:%1$tM",now) + " nachhause")
Es kann gut sein, dass now() als Parameter hier nicht korrekt ist, aber versuche es erst mal. Du kannst den Text auch in ein Log schreiben lassen, es ist ja letztlich einfach nur ein zusammengesetzter String.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Benutzeravatar
Grisu27
Beiträge: 31
Registriert: 30. Jun 2021 14:44

Re: Timestamp in Anwesenheitsmeldung einbinden

Beitrag von Grisu27 »

Hallo Udo,
Was soll ich sagen, " aus Erfahrung gut!!"
Vielen Dank
Hat auf Anhieb funktioniert

Antworten