Seite 1 von 1

Anfängerfrage: Zeitprotokollierung eines Homematic Fensterkontakt SWDM unter OH4

Verfasst: 25. Jul 2023 17:02
von KAyAN
Ich habe erfolgreich einen Homematic Fensterkontakt SWDM in OH4 eingepflegt der Point open oder closed meldet.
Was müsste ich tun um das Datum und die Zeit des jeweiligen Zustands in der Persistence zu protokollieren?
Mir eicht ein Hinweis welcher Ansatz zielführend ist. Google hat aus meine, vermutlich falsche Fragestellung, nicht brauchbares hervorgebracht. Oder meine Problem ist einfach zu trivial?! :shock:
Danke im vorraus!

Re: Anfängerfrage: Zeitprotokollierung eines Homematic Fensterkontakt SWDM unter OH4

Verfasst: 25. Jul 2023 17:37
von PeterA
Hi,

ich Versuchs mal obwohl ich noch auf einer "etwas" älteren Version von OpenHab unterwegs bin:

Zunächst brauchst Du zwei Items vom Type "DateTime"
Als Beispiel hier von einem Shelly:

Code: Alles auswählen

DateTime         Shelly1_04_DG_HK_Bad_Heater1_Aus_LUD    "Heizung mit Nachlauf DG HK Bad Ein [%1$ta, %1$td.%1$tm.%1$ty, %1$tH:%1$tM Uhr]"    <time>             (gShellys)
DateTime         Shelly1_04_DG_HK_Bad_Heater1_Ein_LUD    "Heizung mit Nachlauf DG HK Bad Aus [%1$ta, %1$td.%1$tm.%1$ty, %1$tH:%1$tM Uhr]"    <time>             (gShellys)
Und dazu zwei Rules:

Code: Alles auswählen

rule "Record Last Update Shellys EIN"
when
  Member of gShellys changed to ON
then
// post an update to the item with the same name and _Ein_LUD suffix
  sendCommand(triggeringItem.name+"_Ein_LUD", now.toString)
end

rule "Record Last Update Shellys AUS"
when
  Member of gShellys changed to OFF
then
// post an update to the item with the same name and _Ein_LUD suffix
  sendCommand(triggeringItem.name+"_Aus_LUD", now.toString)
end
Die beiden Items sind in der Gruppe "gShellys"
Die Rules triggern immer auf einen change der Shellys in der Gruppe.
"now.toString" schreibt den Timestamp in das DateTime Item.
Du müsstest dann natürlich noch die Trigger usw in der Rule entsprechend Anpassen.

Re: Anfängerfrage: Zeitprotokollierung eines Homematic Fensterkontakt SWDM unter OH4

Verfasst: 25. Jul 2023 21:55
von udo1toni
Nö, zu kompliziert :)
In openHAB4 (aber auch schon in openHAB3) geht das suuuuper einfach :)

Aber zunächst der Hinweis: Wenn ein Item mit der Strategy everyChange oder everyUpdate persistiert wird, wird bei jeder Wertänderung (oder Wertaktualisierung) der aktuelle Wert mitsamt einem Zeitstempel gespeichert.
Für den jeweils letzten Wert kann man den Zeitstempel auch einfach über die Persistence erfragen. Es reicht also völlig, das Item zu persistieren. Ich mache das gerne mit MariaDB, weil ich ohnehin eine Instanz betreibe und dort mit einfachen SQL Abfragen direkt Ergebnisse sehe.

Soll nur der Zeitpunkt der letzten Änderung angezeigt werden, so reicht es, den betreffenden Channel mit einem DateTime Item zu verlinken. Im Link selbst setzt man dann das Profile auf Zeitstempel bei Änderung oder auf Zeitstempel bei Aktualisierung, je nachdem, was man erreichen möchte.
Will man gezielt ausweisen, wann zuletzt OPEN gemeldet wurde und wann zuletzt CLOSED gemeldet wurde, braucht es zusätzlich noch zwei weitere (ungebundene) DateTime Items (eben eines für OPEN und eines für CLOSED) sowie ein kleine Rule:

Code: Alles auswählen

rule "Zeitstempel nach Zustand"
when
    Item StempelMeinZustand changed // Zeitstempel hat sich geändert
then
    if(MeinZustand.state == OPEN)
        StempelMeinOpen.postUpdate(StempelMeinZustand.state)
    if(MeinZustand.state == CLOSED)
        StempelMeinClosed.postUpdate(StempelMeinZustand.state)
end
Die Rule kopiert also je nach Zustand den Zeitstempel entweder in das eine oder das andere Item.

Re: Anfängerfrage: Zeitprotokollierung eines Homematic Fensterkontakt SWDM unter OH4

Verfasst: 31. Jul 2023 16:30
von KAyAN
Vielen Dank für eure Hilfe.
Ich habe mich mal an die Lösung von udo1toni hergemacht. Sie sah am Anfang kurz und knackig aus.
Bis meine Einarbeitung (… alles ist schwierig bis man es dann kann) war bzw. ist die Lösung auch optimal.
Ein wenig hatte ich die Hoffnung das sich bei den DateTime Items OPEN/ CLOSED die „Analyse“-Funktion bereitgestellt wird.
Aber das geht wahrscheinlich bei OPEN/CLOSED (Status) nicht?!
Eins muss ich feststellen, OpenHAB ist ein mächtiges Werkzeug. Nur man muss bereitsein seine auch zu lernen. Für „eben mal schnell“ ist OpenHAB nicht. Aber es macht Spaß, wenn sich langsam die Erfolge einstellen!
Nochmal herzlichsten Dank für eure Hilfe!

Re: Anfängerfrage: Zeitprotokollierung eines Homematic Fensterkontakt SWDM unter OH4

Verfasst: 31. Jul 2023 19:46
von udo1toni
KAyAN hat geschrieben: 31. Jul 2023 16:30 OpenHAB ist ein mächtiges Werkzeug. Nur man muss bereitsein seine auch zu lernen. Für „eben mal schnell“ ist OpenHAB nicht.
Ja, das Thema wird allgemein extrem unterschätzt.

Smarthome ist ein hochkomplexes Thema, das ist definitiv nichts für "mal eben", und es ist auch durchaus kein sehr preiswertes Hobby (wobei, doch, es ist seinen Preis wert...) ;)
openHAB vereint hunderte verschiedene - zueinander inkompatible - Steuer- und Kommunikationsprotokolle und dermöglicht es, alle Geräte einheitlich zu steuern, das ist die Idee hinter openHAB. Viele Dinge scheinen naheliegend, sind es dann aber erst mal nicht.
KAyAN hat geschrieben: 31. Jul 2023 16:30DateTime Items OPEN/ CLOSED die „Analyse“-Funktion
Analyze steht direkt beim Contact zur Verfügung, immer vorausgesetzt, das Item wird auch vernünftig persistiert.
Ein DateTime Item kann man aber nicht sinnvoll analysieren, speziell, wenn des einfach nur die Zeitstempel beinhaltet. Hier geht es nur darum, den jeweils letzten Zeitstempel komfortabel zur Ansicht zur Verfügung zu stellen.

Die Charts in openHAB sind toll, aber für "richtige" Datenanalyse sind externe Werkzeuge besser geeignet, hier ist im speziellen Grafana mit InfluxDB als Datenquelle zu nennen.