Letzte Aktualisierung ermitteln
Moderator: Co-Administratoren
Re: Letzte Aktualisierung ermitteln
Hast Du das gesondert getestet oder nur in Deinem Skript geändert?
Bei letzterem musst Du alle State-Abfragen durch die o. g. Value-Zugriffe ersetzen.
Du hast dort einige drin. Die ändern dann den Timestamp bevor Du ihn ausgeben lässt.
Ursache für das unzutreffende Abfrageergebnis war ja nicht die Timestamp-Abfrage selbst, sondern das vorher durch State() der Timestamp neu gesetzt wurde.
Bei letzterem musst Du alle State-Abfragen durch die o. g. Value-Zugriffe ersetzen.
Du hast dort einige drin. Die ändern dann den Timestamp bevor Du ihn ausgeben lässt.
Ursache für das unzutreffende Abfrageergebnis war ja nicht die Timestamp-Abfrage selbst, sondern das vorher durch State() der Timestamp neu gesetzt wurde.
Grüße
moecki
moecki
Re: Letzte Aktualisierung ermitteln
Ja, das habe ich versuchsweise ohne andere Calls getestet.moecki hat geschrieben:Hast Du das gesondert getestet oder nur in Deinem Skript geändert?
Bei letzterem musst Du alle State-Abfragen durch die o. g. Value-Zugriffe ersetzen.
Du hast dort einige drin. Die ändern dann den Timestamp bevor Du ihn ausgeben lässt.
Ursache für das unzutreffende Abfrageergebnis war ja nicht die Timestamp-Abfrage selbst, sondern das vorher durch State() der Timestamp neu gesetzt wurde.
Selbst wenn es funktioniert, wie bleibt denn der Timestamp gleich, wenn ich den State auch abfragen muss (das Script soll ja minütlich prüfen, ob Türen etc. länger als eine def. Zeit offen sind)?
Beste Grüße
tunecase
tunecase
-
- Beiträge: 10754
- Registriert: 24.02.2011, 01:34
- System: CCU
- Hat sich bedankt: 65 Mal
- Danksagung erhalten: 673 Mal
Re: Letzte Aktualisierung ermitteln
Sorry, aber der von mir veröffentlichte Code fragt den Timestamp ab und zeigt Ihn an.
Da ich das gestern nur so schnell hingepinselt hatte, habe ich mich schon erschrocken.
Habe das gerade nochmals gegengecheckt, es wird genau die Zeit ausgegeben bei meinen HM-Sec-RHS, welche auch die WebUI anzeigt als letzte Aktualisierung. Der Fehler liegt alsowie mein Vorredner schon bemerkte in deinem Script.
Alchy
Da ich das gestern nur so schnell hingepinselt hatte, habe ich mich schon erschrocken.
Habe das gerade nochmals gegengecheckt, es wird genau die Zeit ausgegeben bei meinen HM-Sec-RHS, welche auch die WebUI anzeigt als letzte Aktualisierung. Der Fehler liegt alsowie mein Vorredner schon bemerkte in deinem Script.
Alchy
Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.
© Sandra Pulsfort (*1974)
Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.
Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.
-
- Beiträge: 10754
- Registriert: 24.02.2011, 01:34
- System: CCU
- Hat sich bedankt: 65 Mal
- Danksagung erhalten: 673 Mal
Re: Letzte Aktualisierung ermitteln
Brauchts Du noch ein passendes Script ? hab grad Zeit
Alchy
Alchy
Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.
© Sandra Pulsfort (*1974)
Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.
Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.
Re: Letzte Aktualisierung ermitteln
Auszug aus dem Script, das den falschen Timestamp erzeugt:
Erforderliche Änderung:
Code: Alles auswählen
WriteLine("Kanal " # channel # " - Zustand: " # channel.State() # " - Letzte Aenderung: " # channel.Timestamp());
if (channel.State() <> 0)
{
!Moment merken
...
Code: Alles auswählen
WriteLine("Kanal " # channel # " - Zustand: " # channel.Value() # " - Letzte Aenderung: " # channel.Timestamp());
if (channel.Value() <> 0)
{
!Moment merken
...
Versionen: HM-CC-TC 2.1, HM-LC-Sw1 1.9, HM-CC-RT-DN 1.1, HM-MOD-RPI-PCB 1.2.1 (keine CCU)
Re: Letzte Aktualisierung ermitteln
Hi paul53!
Nach der Änderung bleibt es trotzdem bei dem Ergebnis:
Kann die Zeile
schon einen Refresh triggern?
Beste Grüße und ein schönes WE!
Nach der Änderung bleibt es trotzdem bei dem Ergebnis:
Code: Alles auswählen
Kanal BidCos-RF.xxx:1.STATE - Zustand: 0 - Letzte Aenderung: 2013-03-16 12:18:01
Kanal BidCos-RF.xxx:1.STATE - Zustand: false - Letzte Aenderung: 2013-03-16 12:18:03
Kanal BidCos-RF.xxx:1.STATE - Zustand: false - Letzte Aenderung: 2013-03-16 12:18:52
Kanal BidCos-RF.xxx:1.STATE - Zustand: 0 - Letzte Aenderung: 2013-03-16 12:18:01
Kanal BidCos-RF.xxx:1.STATE - Zustand: 0 - Letzte Aenderung: 2013-03-16 12:18:01
Kanal BidCos-RF.xxx:1.STATE - Zustand: 0 - Letzte Aenderung: 2013-03-16 12:18:01
Kanal BidCos-RF.xxx:1.STATE - Zustand: 0 - Letzte Aenderung: 2013-03-16 12:18:01
Kanal BidCos-RF.xxx:1.STATE - Zustand: 0 - Letzte Aenderung: 2013-03-16 12:18:01
Kanal BidCos-RF.xxx:1.STATE - Zustand: false - Letzte Aenderung: 2013-03-16 12:18:01
Code: Alles auswählen
string channel_name = interface_name # "." # device_address # ":1.STATE";
Beste Grüße und ein schönes WE!
Beste Grüße
tunecase
tunecase
Re: Letzte Aktualisierung ermitteln
Warum arbeitest Du nicht mit den Kanalnamen ? Die sagen bei sinnvoller Namensvergabe viel mehr aus als die Kanaladressen.
Ich habe Dein Script einmal entsprechend abgewandelt:
Ein Test des Scriptes hat die richtigen Timestamps geliefert.
Ich habe Dein Script einmal entsprechend abgewandelt:
Code: Alles auswählen
!Script zum Pruefen von offenen Tueren und Temperaturverlusten
!Check open doors
var myAssembly = dom.GetObject("Verschluß");
!------------------------------------------------------------------------------
! Schleife, die alle Kanäle des Gewerkes "Verschluß" abfragt
!------------------------------------------------------------------------------
string name;
foreach(name, myAssembly.EnumUsedNames())
{
var dp = dom.GetObject(name).DPByHssDP("STATE");
var zustand = dp.Value();
var schaltpunkt = dp.Timestamp();
integer jetzt; ! aktuelle Zeit in s
integer zeitdiff; ! Zeitdifferenz in Minuten
!Zeit in sec merken
jetzt = system.Date("%F %X").ToTime().ToInteger();
WriteLine("Kanal " # name # " \t- Zustand: " # zustand # " - Letzte Aenderung: " # schaltpunkt);
if (zustand)
{
!Moment merken
schaltpunkt = schaltpunkt.ToInteger();
! Differenz in Minuten
zeitdiff = (jetzt - schaltpunkt) / 60;
WriteLine("Offen seit "#zeitdiff);
! letzte Aktion länger als 5 Minuten her?
if (zeitdiff > 5)
{
!Mail senden
}
}
}
Versionen: HM-CC-TC 2.1, HM-LC-Sw1 1.9, HM-CC-RT-DN 1.1, HM-MOD-RPI-PCB 1.2.1 (keine CCU)
Re: Letzte Aktualisierung ermitteln
Hallo,
ich muss das Thema noch mal hochholen.
Wie komme ich an den Timestamp der letzten Änderung, so wie im Web GUI heran? Alle Ausgaben sind nur die aktuelle Zeit, bzw. die Zeit wann der TFK das letzte Mal abgefragt wurde, jedoch nicht wann die letzte Änderung stattgefunden hat.
Liefert:
Timestamp: 2013-10-14 11:15:02
Zustand: 0
Sollte eigendlich sein:
Büro Fenster TFK | Batterie Verschluss | 14.10.2013 10:40:32
Auch mit dem Script über die Namen wird nicht die richtige letzte Änderungszeit angezeigt.
Liefert:
Kanal Büro Fenster TFK - Zustand: 0 - Letzte Aenderung: 2013-10-14 11:15:02
Kanal Küche Fenster TFK - Zustand: 0 - Letzte Aenderung: 2013-10-14 11:19:00
nach einen Zeitraum von 10 Minuten meldet sich der TFK scheinbar wieder und übermittelt den Zustand...
Kanal Büro Fenster TFK - Zustand: 0 - Letzte Aenderung: 2013-10-14 11:25:00
Kanal Küche Fenster TFK - Zustand: 0 - Letzte Aenderung: 2013-10-14 11:29:00
Nur ich möchte ja den Timesstamp der letzten Änderung haben und nicht wissen wann dieser den gleichen Zustand aktualisiert hat.
Grüße
dzvo
ich muss das Thema noch mal hochholen.
Wie komme ich an den Timestamp der letzten Änderung, so wie im Web GUI heran? Alle Ausgaben sind nur die aktuelle Zeit, bzw. die Zeit wann der TFK das letzte Mal abgefragt wurde, jedoch nicht wann die letzte Änderung stattgefunden hat.
Code: Alles auswählen
var x = dom.GetObject("BidCos-RF.JEQ0041500:1.STATE");
var s = x.Value();
var t = x.Timestamp();
WriteLine("Timestamp: " #t);
WriteLine("Zustand: " #s);
Timestamp: 2013-10-14 11:15:02
Zustand: 0
Sollte eigendlich sein:
Büro Fenster TFK | Batterie Verschluss | 14.10.2013 10:40:32
Auch mit dem Script über die Namen wird nicht die richtige letzte Änderungszeit angezeigt.
Code: Alles auswählen
!Script zum Pruefen von offenen Tueren und Temperaturverlusten
!Check open doors
var myAssembly = dom.GetObject("Verschluss");
!------------------------------------------------------------------------------
! Schleife, die alle Kanäle des Gewerkes "Verschluß" abfragt
!------------------------------------------------------------------------------
string name;
foreach(name, myAssembly.EnumUsedNames())
{
var dp = dom.GetObject(name).DPByHssDP("STATE");
var zustand = dp.Value();
var schaltpunkt = dp.Timestamp();
integer jetzt; ! aktuelle Zeit in s
integer zeitdiff; ! Zeitdifferenz in Minuten
!Zeit in sec merken
WriteLine("Kanal " # name # "\t - Zustand: " # zustand # " - Letzte Aenderung: " # schaltpunkt);
}
Kanal Büro Fenster TFK - Zustand: 0 - Letzte Aenderung: 2013-10-14 11:15:02
Kanal Küche Fenster TFK - Zustand: 0 - Letzte Aenderung: 2013-10-14 11:19:00
nach einen Zeitraum von 10 Minuten meldet sich der TFK scheinbar wieder und übermittelt den Zustand...
Kanal Büro Fenster TFK - Zustand: 0 - Letzte Aenderung: 2013-10-14 11:25:00
Kanal Küche Fenster TFK - Zustand: 0 - Letzte Aenderung: 2013-10-14 11:29:00
Nur ich möchte ja den Timesstamp der letzten Änderung haben und nicht wissen wann dieser den gleichen Zustand aktualisiert hat.
Grüße
dzvo
--------------------------------------------
168 Kanäle in 77 Geräten:
5x HM-CC-TC, 6x HM-LC-Dim1PWM-CV, 5x HM-CC-VD, 2x HM-PB-2-WM55, 1x HM-PB-4Dis-WM, 2x HM-SCI-3-FM, 1x HM-Sen-RD-O, 3x HM-WDS30-OT2-SM, 1x HM-WDS100-C6-O, 1x HM-Sen-MDIR-SM, 10x HM-ES-PMSw1-Pl, 6x HM-Sec-RHS, 1x HM-Sec-Sir-WM, 1x HM-Sen-MDIR-O, 1x HM-OU-LED16, 1x HM-Sec-SC, 1x HM-Sec-Key-S, 1x HM-Sen-DB-PCB, 2x HM-LC-Sw1-Ba-PCB, 1x HM-LC-Sw4-WM, 1x HM-Sen-MDIR-WM55, 1x HM-RC-Key4-2, 2x HM-RC-Key3-B, 1x HM-Sec-MDIR, 1x HM-Sec-WDS-2, 1x HM-LC-Sw1-Pl-2, 1x HM-PB-6-WM55, 2x HM-PB-2-WM, 1x HM-CC-SCD, 2x HM-LC-Dim1T-Pl-2, 5x HM-LC-Dim1T-Pl, 3x HM-LC-Bl1PBU-FM, 1x HM-RC-19-B, 1x HM-LC-Sw1-Pl, 1x HM-LC-Sw4-DR, 1x HM-Sec-Win
--------------------------------------------
168 Kanäle in 77 Geräten:
5x HM-CC-TC, 6x HM-LC-Dim1PWM-CV, 5x HM-CC-VD, 2x HM-PB-2-WM55, 1x HM-PB-4Dis-WM, 2x HM-SCI-3-FM, 1x HM-Sen-RD-O, 3x HM-WDS30-OT2-SM, 1x HM-WDS100-C6-O, 1x HM-Sen-MDIR-SM, 10x HM-ES-PMSw1-Pl, 6x HM-Sec-RHS, 1x HM-Sec-Sir-WM, 1x HM-Sen-MDIR-O, 1x HM-OU-LED16, 1x HM-Sec-SC, 1x HM-Sec-Key-S, 1x HM-Sen-DB-PCB, 2x HM-LC-Sw1-Ba-PCB, 1x HM-LC-Sw4-WM, 1x HM-Sen-MDIR-WM55, 1x HM-RC-Key4-2, 2x HM-RC-Key3-B, 1x HM-Sec-MDIR, 1x HM-Sec-WDS-2, 1x HM-LC-Sw1-Pl-2, 1x HM-PB-6-WM55, 2x HM-PB-2-WM, 1x HM-CC-SCD, 2x HM-LC-Dim1T-Pl-2, 5x HM-LC-Dim1T-Pl, 3x HM-LC-Bl1PBU-FM, 1x HM-RC-19-B, 1x HM-LC-Sw1-Pl, 1x HM-LC-Sw4-DR, 1x HM-Sec-Win
--------------------------------------------
-
- Beiträge: 10754
- Registriert: 24.02.2011, 01:34
- System: CCU
- Hat sich bedankt: 65 Mal
- Danksagung erhalten: 673 Mal
Re: Letzte Aktualisierung ermitteln
Häng ich mal kurz rein, nun aber richtig.
Hatte den Thread ganz vergessen.
Versuch mal folgendes:
Wobei 12345 die ID des entspechenden KANALS ist.
Alchy
Hatte den Thread ganz vergessen.
Versuch mal folgendes:
Code: Alles auswählen
string alchy = dom.GetObject(12345).LastTimestamp().ToString("%d-%m-%y %H:%M-Uhr");
WriteLine(alchy);
Alchy
Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.
© Sandra Pulsfort (*1974)
Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.
Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.
-
- Beiträge: 10754
- Registriert: 24.02.2011, 01:34
- System: CCU
- Hat sich bedankt: 65 Mal
- Danksagung erhalten: 673 Mal
Re: Letzte Aktualisierung ermitteln
Viele Zugriffe, aber kein weiterer Kommentar.
Also gehe ich mal davon aus daß meine Lösung das Problem entsprechend löst?!?
Damit sollte auch das leiidige Thema ' wie langer steht das Fenster schon auf" einfacher zu lösen sein.
Alchy
Unterwegs getippelt
Also gehe ich mal davon aus daß meine Lösung das Problem entsprechend löst?!?
Damit sollte auch das leiidige Thema ' wie langer steht das Fenster schon auf" einfacher zu lösen sein.
Alchy
Unterwegs getippelt
Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.
© Sandra Pulsfort (*1974)
Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.
Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.