NEWS
Problem mit Widget last change timestamp
-
Hallo zusammen
Evtl kann mir einer von euch helfen. Ich versuche gerade meinen neuen Klingelsensor von Homematic ins Vis einzubinden um mir anzeigen zu lassen wann es das letzte mal geklingelt hat. Nun habe ich das Problem das der Zeitstempel nicht geändert wird im Vis, in der Ccu sehe ich den neuen Zeitstempel immer. Bei anderen Statusanzeigen z.b. Türkontakten klappt das ohne probleme.
Hier mal nen Screen von meine Widget config.
filename="timestamp.png" index="0">~~
-
läuft denn dein rpc wieder???
-
Also Xml-Rpc ja
-
Ich habe auf der CCU ein Skript laufen welches einen Counter hochzählt (wie oft wurde geklingelt) und in eine Systemvariable schreibt. Zusätzlich erzeuge ich noch einen Timestamp und schreibe ihn ebenfalls in eine CCU Systemvariable. Beide Variable lassen sich dann Problemlos in vis anzeigen. Wenn da Interesse besteht kann ich das gerne hier veröffentlichen.
-
Hallo Spaceduck
Sehr gerne würde mich sehr Interessieren dein skript, damit hab ich mich zwar noch nich beschäftigt aber wäre Interessant.
Wird der Zähler Nachts zurück gesetzt oder wie hast du das gemacht?
-
Hallo Blue14!
Ich möchte in diesem Forum einmal "anschreiben" 8-)
- in der CCU2 eine Systemvariable anlegen (bei mir "sv16_EG_Glocke_Count"), Typ nummerisch, Maßeinheit "mal" 2) Script anlegen und bei jedem Läuten auf der CCU2 ausführen:
dom.GetObject("sv16_EG_Glocke_Count").State(1 + dom.GetObject("sv16_EG_Glocke_Count").Value());
3) tgl um 00:01 läuft bei mir ein CCU2-Programm, unter anderen mit diesem Script zum Zurücksetzen des Zählers````
! setzt Glockencounter vom Vortag auf 0, damit der Zähler von Neuem beginnt
dom.GetObject("sv16_EG_Glocke_Count").State(0);
Den Timestamp schreibe ich nicht, werde ich aber künftig einbauen. Die Visualisierung in Vis dann mit einem passenden Widget (z.B. "basic Number" oder "basic String") einpflegen. Ich habe es über "basic - Red Number" gelöst da ich nur etwas sehen möchte, wenn tatsächlich mind 1x am Tag geläutet wurde. LG, mxa
- in der CCU2 eine Systemvariable anlegen (bei mir "sv16_EG_Glocke_Count"), Typ nummerisch, Maßeinheit "mal" 2) Script anlegen und bei jedem Läuten auf der CCU2 ausführen:
-
Hallo,
ich habe zwar einen Klingelsensor auf Mysensors Basis, frage dann die Variable auf Update ab und erstelle dann eine Liste mit dem Timestamp. Diese kann dann im Vis angezeigt werden. Am Anfang war die Zeit noch nicht richtig formatiert, siehe rechts oben. Stimmt aber jetzt.
Schöne Grüße
ThomasD
var cacheSelectorKlingelinnen = $('channel[state.id=mysensors.0.192_168_0_243.16.3_CUSTOM.V_VAR1]'/*192_168_0_243.16.3_CUSTOM.V_VAR1*/); var cacheSelectorKlingelaussen = $('channel[state.id=mysensors.0.192_168_0_243.16.4_CUSTOM.V_VAR1]'/*192_168_0_243.16.4_CUSTOM.V_VAR1*/); function Klingelinnen(obj) { var neuexport; var neu; var neust; var daten; var zeiten = []; neu = getState("mysensors.0.192_168_0_243.16.3_CUSTOM.V_VAR1"/*192_168_0_243.16.3_CUSTOM.V_VAR1*/).val; neust = timeConverter(neu); daten = getState("javascript.0.Klingel.Innen.Izeiten"/*Izeiten*/).val; zeiten = daten.split(","); zeiten.push(neust); neuexport = zeiten.toString(); setState("javascript.0.Klingel.Innen.Izeiten"/*Izeiten*/, neuexport); } function Klingelaussen(obj) { var neuexport; var neu; var neust; var daten; var zeiten = []; neu = getState("mysensors.0.192_168_0_243.16.4_CUSTOM.V_VAR1"/*192_168_0_243.16.4_CUSTOM.V_VAR1*/).val; neust = timeConverter(neu); daten = getState("javascript.0.Klingel.Draussen.Dzeiten"/*Dzeiten*/).val; zeiten = daten.split(","); zeiten.push(neust); neuexport = zeiten.toString(); setState("javascript.0.Klingel.Draussen.Dzeiten"/*Dzeiten*/, neuexport); } function timeConverter(UNIX_timestamp){ var a = new Date(UNIX_timestamp * 1000); var months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']; var year = a.getFullYear(); var month = months[a.getMonth()]; var date = a.getDate(); var hour = a.getHours() < 10 ? '0' + a.getHours() : a.getHours(); // var hour = a.getHours(); var min = a.getMinutes() < 10 ? '0' + a.getMinutes() : a.getMinutes(); // var min = a.getMinutes(); var sec = a.getSeconds() < 10 ? '0' + a.getSeconds() : a.getSeconds(); // var sec = a.getSeconds(); var time = date + ' ' + month + ' ' + year + ' ' + hour + ':' + min + ':' + sec ; return time; } cacheSelectorKlingelinnen.on(function(obj) { // bei Zustandänderung Klingelinnen(obj); }); cacheSelectorKlingelaussen.on(function(obj) { // bei Zustandänderung Klingelaussen(obj); });
-
Hallo Blue14,
hier das Script auf der CCU. Systemvariablen: Klingelzaehler -> Typ Zahl & Klingel-Timestamp -> Typ Zeichenkette
Zurücksetzen auf 0 bzw. Löschen der Timestamps mache ich mit der CCU Zeitsteuerung jeweils um Mitternacht.
object sv; ! Systemvariable integer n; ! Zählwert sv = dom.GetObject("Klingelzaehler"); n = 1 + sv.Value(); sv.State(n); var t = system.Date("%d.%m - %H:%M"); var x = dom.GetObject("Klingel-Timestamp").Value(); dom.GetObject("Klingel-Timestamp").State(x + " " + t);