Seite 3 von 3

Re: Fenstergriff betätigt Zeitstempel

Verfasst: 20. Jan 2024 17:47
von peter-pan
Bei einem Item mit dem Item-Typ "Switch" klappt die Formatierung mit dem Zeitstempel. Hab's hier getestet:

Code: Alles auswählen

Switch   HmIP_SRH_0515_0SABOTAGE      "Terrassentuer Sabotage [%s]" (gSen_0515) ["Alarm"] {channel="homematic:HmIP-SRH:3014F711A0001F98A9AABCAF:0007D7099D0515:0#SABOTAGE"}
DateTime HmIP_SRH_0515_0SABOTAGE_Time "Terrassentuer Sabotage Zeit" (gSen_0515) ["Alarm"] {channel="homematic:HmIP-SRH:3014F711A0001F98A9AABCAF:0007D7099D0515:0#SABOTAGE" [profile="system:timestamp-update"], stateDescription="pattern" [pattern="%1$td.%1$tm.%1$ty - %1$tH:%1$tM Uhr"] }
zeitstempel.jpg
REST-Api:

Code: Alles auswählen

{
  "link": "http://192.168.178.38:8080/rest/items/HmIP_SRH_0515_0SABOTAGE_Time",
  "state": "2024-01-20T17:36:55.978212705+0100",
  "stateDescription": {
    "pattern": "%1$td.%1$tm.%1$ty - %1$tH:%1$tM Uhr",
    "readOnly": true,
    "options": []
  },
  "metadata": {
    "semantics": {
      "value": "Point_Alarm",
      "config": {
        "isPointOf": "gSen_0515"
      }
    },
    "stateDescription": {
      "value": "pattern",
      "config": {
        "pattern": "%1$td.%1$tm.%1$ty - %1$tH:%1$tM Uhr"
      }
    }
  },
  "editable": false,
  "type": "DateTime",
  "name": "HmIP_SRH_0515_0SABOTAGE_Time",
  "label": "Terrassentuer Sabotage ",
  "tags": [
    "Alarm"
  ],
  "groupNames": [
    "gSen_0515"
  ]
}
Welche Abhängigkeiten hier vorhanden sind, vermag ich nicht zu beurteilen. Mal sehen was Rich oder andere Entwickler dazu sagen.

Edit: Bei Number-Items klappt das Formatieren auch !!!

Re: Fenstergriff betätigt Zeitstempel

Verfasst: 23. Jan 2024 18:14
von pauliv_de
@peter-pan
in deinem Item steht aber doch.... type "DateTime"

Code: Alles auswählen

"editable": false,
  "type": "DateTime",
  "name": "HmIP_SRH_0515_0SABOTAGE_Time",
  "label": "Terrassentuer Sabotage ",
  "tags": [
    "Alarm"
...!?

und Sabotage ist von Haus aus ein Switch, der Fenstergriffsensor gibt aber 3 verschiedene Meldungen nämlich "CLOSED", "TILTED" und "OPEN"

Re: Fenstergriff betätigt Zeitstempel

Verfasst: 23. Jan 2024 19:16
von peter-pan
@pauliv_de
pauliv_de hat geschrieben: 23. Jan 2024 18:14 in deinem Item steht aber doch.... type "DateTime"
das ist richtig. Der Typ des "korrespondierenden" Items ist ja auch "DateTime".
Das gilt sowohl für String als auch für Number, oder Switch, oder Dimer, oder...oder.

Aber ich denke mal, dass das Problem nur bei String-Items bzw. bei dem dazugehörigen TimeStamp-Item zum Tragen kommt, oder besser gesagt zu dem an den Channel gebunden Item.
Ich vermute mal, dass da "im Hintergrund" basierend auf dem Channel bei dem Timestamp-Item automatisch die Metadaten (stateDescription), des ursprünglichen zu verknüpfenden Items hinterlegt werden.

Ich denke auch, dass es sich Rich Koshak hier zu einfach macht, wenn er schreibt, dass du, wenn du Entwickler bist, das am schnellsten lösen könntest. Wenn man nämlich mal genauer in Github oder auch in openHAB sucht, findet man schon mal den ein oder anderen Aufsatz/Thread zu diesem Thema

Ich persönlich bin erst durch dich auf die Geschichte mit dem Zeitstempel gekommen(weil du den gleichen Sensor im Einsatz hast wie Ich). Ich hatte das seither nie so richtig auf dem Schirm.

In diesem Fall (gebundenes String-Item/Channel) ist mein Vorschlag als Workaround:
ein ungebundenes DateTime Item in Verbindung mit einer Regel, welche bei Änderung des Status triggert und den Zeitstempel setzt, so wie in Github beschrieben.

Re: Fenstergriff betätigt Zeitstempel

Verfasst: 24. Jan 2024 09:38
von pauliv_de
In diesem Fall (gebundenes String-Item/Channel) ist mein Vorschlag als Workaround:
ein ungebundenes DateTime Item in Verbindung mit einer Regel, welche bei Änderung des Status triggert und den Zeitstempel setzt, so wie in Github beschrieben.
Ja so ähnlich habe ich das auch gemacht.

Allerdings habe ich dafür ein String-Item verwendet, da ich für die Regel in Blockly kein Element welches mir einen Timestamp im DateTime-Format zur Verfügung stellt, gefunden habe.

Bild

Re: Fenstergriff betätigt Zeitstempel

Verfasst: 24. Jan 2024 11:53
von peter-pan
Blockly ist nicht so meins :roll:
Ich hab das einfach so gemacht:

.items

Code: Alles auswählen

String   HmIP_SRH_0515_1STATE       "Terrassentuer Status String[MAP(de.map):%s]" <window> (gSen_0515)  ["Point"]  {channel="homematic:HmIP-SRH:3014F711A0001F98A9AABCAF:0007D7099D0515:1#STATE"}
DateTime HmIP_SRH_0515_1STATE_Time1 "Terrassentuer Datum per Rule"                <window> (gSen_0515)  ["Point"]  {stateDescription="pattern" [pattern="%1$td.%1$tm.%1$ty - %1$tH:%1$tM Uhr"]} // Update ist Trigger über Rule
Das erste Item kennst du ja, das ist das Sensor-Item des SRH
Das zweite Item ist ein ganz normales Item vom Typ DateTime (ohne Verlinkung mit einem Channel)

und dazu kommt eine kleine Regel, die beim Wechsel des Sensor-Zustands getriggert wird und die Zeit in das Datetime-Item reinschreibt. Wie du das dann formatierst bleibt dir dann überlassen. Ich hab halt einfach deinen Pattern benutzt. Die Regel sieht so aus:

Code: Alles auswählen

rule "Terrassentuer Esszimmer Zeitstempel"
    when
      Item HmIP_SRH_0515_1STATE changed 
    then
// und zu guter letzt noch ein Zeitstempel -
      HmIP_SRH_0515_1STATE_Time1.postUpdate(now.toLocalDateTime().toString())
      logInfo("homematic","Terrassentür bewegt {} ", HmIP_SRH_0515_1STATE_Time1.state )   
end
Die Beschreibung und das "logInfo" kannst du ja weglassen. Das ist nur zum Test. Im Prinzip auch nur ein "Einzeiler"
Aber ich denke dass es in Blockly die gleiche Möglichkeit gibt (Ich kenn' sie nur nicht :P ;) ).

Re: Fenstergriff betätigt Zeitstempel

Verfasst: 24. Jan 2024 17:02
von Harka
pauliv_de hat geschrieben: 24. Jan 2024 09:38Allerdings habe ich dafür ein String-Item verwendet, da ich für die Regel in Blockly kein Element welches mir einen Timestamp im DateTime-Format zur Verfügung stellt, gefunden habe.
Du kannst einfach den now-Block per postUpdate an ein DateTime-Item schicken, also ohne das "grüne Zeugs" drum herum.

Re: Fenstergriff betätigt Zeitstempel

Verfasst: 24. Jan 2024 22:39
von peter-pan
Harka hat geschrieben: 24. Jan 2024 17:02 Du kannst einfach den now-Block per postUpdate an ein DateTime-Item schicken, also ohne das "grüne Zeugs" drum herum.
....genau das macht diese Zeile auch:

Code: Alles auswählen

HmIP_SRH_0515_1STATE_Time1.postUpdate(now.toLocalDateTime().toString())
;)

Re: Fenstergriff betätigt Zeitstempel

Verfasst: 31. Jan 2024 09:51
von pauliv_de
Ja, danke, funktioniert auch ohne das "grüne Zeugs" drum herum !

Löst das ursprünglich hier genannte Problem nicht. https://github.com/openhab/openhab-core/issues/4050