Objekt letzter Empfang mit Datum+Uhrzeit

Programmierung der FHZ-Zentralen mit contronics homeputer Standard / homeputer Studio & WEB-Server

Moderator: Co-Administratoren

m.jansen
Beiträge: 219
Registriert: 16.03.2011, 16:30
Wohnort: Aachen

Re: Objekt letzter Empfang mit Datum+Uhrzeit

Beitrag von m.jansen » 24.04.2011, 20:42

Hi buempi :(
nicht schlagen :roll:
Musste Heute haufen Überstunden machen,dazwischen hab ich immer versucht hier was zu machen.
Ok besser ich mache jetzt Feierabend :P

P.S
Du bist wohl immer am PC was :wink:

Mfg.
m.jansen

SpiRu
Beiträge: 74
Registriert: 18.09.2012, 23:05
Wohnort: Deutschland.Freiburg

Re: Objekt letzter Empfang mit Datum+Uhrzeit

Beitrag von SpiRu » 02.10.2012, 20:59

Meine Lösung für solche Fälle: ein Roll-Textfenster ("Ticker"), in dem die aktuelle Statusmeldung oben reingeschrieben wird und die alten Einträge dabei nach unten schiebt.

Abhängig von einer "Geschwätzigkeitsvariable" zeige ich bei jeder Makroausführung dann alle interessierenden Werte des Objekts an, mit vorausgestellter Uhrzeit sowie "CT".
Hilfe.Variablen hat geschrieben: Es gibt eine vordefinierte Variable des Typs Uhrzeit für jedes Objekt. Der Name der Variablen ist CT (für ChangeTime). In dieser Variablen wird die jeweils letzte Änderungszeit eines Objekts gespeichert. Mit der Funktion STOPPZEIT(Objektname.CT) kann ermittelt werden wie lange ein Objekt sich in seinem aktuellen Zustand befindet.

Code: Alles auswählen

Anzeig_: lokale Variable vom Typ [Zeichen]
Anzeige: Objekt vom Typ [Zeichen] (50 Spalten,  3 Zeilen)
Ticker:  Objekt vom Typ [Zeichen] (50 Spalten, 50 Zeilen)

Anzeig_:= UHRZEIT      +"  Raumregler "+Name +"<<"+
          STOPPZEIT(CT)+"  "           +CT   +"<<"+
          Fenster      +"  "+Alarm+"  "+Zeittabelle+"  "+Modus+"  "+Temperatur+"  "+Ventilpos
Anzeige:= Anzeig_

wenn verbose >= 6 dann
     Ticker:= Anzeig_+"<<<<"+Ticker
wenn-Block-Ende
FHZ 1000 PC, Homeputer Studio V2.0 Rel. 120301
FHT80b-Raumregler, Windows XP (SP3)

Bugs? - Das sind keine Bugs! Das sind Features!

Familienvater
Beiträge: 7151
Registriert: 31.12.2006, 15:18
System: Alternative CCU (auf Basis OCCU)
Wohnort: Rhein-Main
Danksagung erhalten: 34 Mal

Re: AW: Objekt letzter Empfang mit Datum+Uhrzeit

Beitrag von Familienvater » 07.10.2012, 13:26

Moin,

Zu dem Ticker:
Ich habe so etwas auch bei mir, ich GLAUBE? es ist sinnvoll, regelmäßig die Grösse (Textlänge) des Objekts zu Prüfen und ggf zu 'clippen'. Die Anzeige zeigt nur ca. 1200 Zeichen an, ab ca. 2000 Zeichen taucht auf einmal ein führendes " in der Anzeige auf. Spätestens jetzt läuft meiner Meinung was bei HPCL schief. Wer nur vornedran reinschreibt und eben hinten nichts wegwirft schafft es mit meinem Verständnis irgendwann den Speicher der CCU zum überlaufen zu bringen.
Gegenmaßnahme: Ich habe dazu einfach das Textobjekt mit einem Makro gefüttert, was bei jeder Aktualisierung prüft, ob mehr als 1250 Zeichen drinstehen und dann nur die vorderen 1250 Zeichen dem Textobjekt zuweist. Mir fehlen dazu Langzeiterfahrungen, aber seit einigen Tagen habe ich diese Funktion und bisher nichts negatives festgestellt. (ich hatte aber vorher auch keine Abstürze, evtl weil ich noch zuviel am Entwickeln bin und keine Version länger als ein paar Tage lief)


Der Familienvater

Gesendet von meinem Nexus 7 mit Tapatalk 2

SpiRu
Beiträge: 74
Registriert: 18.09.2012, 23:05
Wohnort: Deutschland.Freiburg

Re: AW: Objekt letzter Empfang mit Datum+Uhrzeit

Beitrag von SpiRu » 07.10.2012, 15:28

Familienvater hat geschrieben:Ich habe dazu einfach das Textobjekt mit einem Makro gefüttert, was bei jeder Aktualisierung prüft, ob mehr als 1250 Zeichen drinstehen und dann nur die vorderen 1250 Zeichen dem Textobjekt zuweist.
Wie kann man denn die Länge einer Zeichenkette feststellen? Außer Zuweisungen und Vergleichen gibt es in diesem System ja keine String-Funktionen!

Und von wegen Pufferüberlauf: wozu wäre denn dann die Angabe der Zeilen im Ticker gut, wenn das dann eh nicht ausgewertet wird zwecks eben dieser Überlaufs-Begrenzung?
FHZ 1000 PC, Homeputer Studio V2.0 Rel. 120301
FHT80b-Raumregler, Windows XP (SP3)

Bugs? - Das sind keine Bugs! Das sind Features!

Familienvater
Beiträge: 7151
Registriert: 31.12.2006, 15:18
System: Alternative CCU (auf Basis OCCU)
Wohnort: Rhein-Main
Danksagung erhalten: 34 Mal

Re: AW: Objekt letzter Empfang mit Datum+Uhrzeit

Beitrag von Familienvater » 07.10.2012, 15:58

Moin,

Oops, das kann dann evtl. nur die CL und nicht die alte Studio nur für FHZ.
Dann würde ich evtl. einmal pro Tag oder so das Objekt mit einem leeren String 'nullen'.

Und wozu das Clippen gut ist: (Jetzt mal wieder im falschen Forum, eigentlich Homematic und CL-Thema)
Ich logge normalerweise via Syslog auf einen externen Linux-Rechner, aber ich schreibe die Meldungen auch in das Debug-Text-Element, immer schön vorne dran, und damit das dann nicht überläuft clippe ich. Je nach Einstellungen meiner Debug-Logging-Schalter kann ich so locker pro Tag 2000 Log-Zeilen pro Tag generieren (Jeder Temp Sensor schreibt dann z.B. bei jedem Empfang den Wert plus Statistiken etc.)

Der Familienvater

Gesendet von meinem Nexus 7 mit Tapatalk 2

SpiRu
Beiträge: 74
Registriert: 18.09.2012, 23:05
Wohnort: Deutschland.Freiburg

Re: AW: Objekt letzter Empfang mit Datum+Uhrzeit

Beitrag von SpiRu » 08.10.2012, 00:33

Familienvater hat geschrieben:Zu dem Ticker:
Ich habe so etwas auch bei mir, ich GLAUBE? es ist sinnvoll, regelmäßig die Grösse (Textlänge) des Objekts zu Prüfen und ggf zu 'clippen'. Die Anzeige zeigt nur ca. 1200 Zeichen an, ab ca. 2000 Zeichen taucht auf einmal ein führendes " in der Anzeige auf. Spätestens jetzt läuft meiner Meinung was bei HPCL schief. Wer nur vornedran reinschreibt und eben hinten nichts wegwirft schafft es mit meinem Verständnis irgendwann den Speicher der CCU zum überlaufen zu bringen.
Gegenmaßnahme: Ich habe dazu einfach das Textobjekt mit einem Makro gefüttert, was bei jeder Aktualisierung prüft, ob mehr als 1250 Zeichen drinstehen und dann nur die vorderen 1250 Zeichen dem Textobjekt zuweist. Mir fehlen dazu Langzeiterfahrungen, aber seit einigen Tagen habe ich diese Funktion und bisher nichts negatives festgestellt. (ich hatte aber vorher auch keine Abstürze, evtl weil ich noch zuviel am Entwickeln bin und keine Version länger als ein paar Tage lief)
Ich habe jetzt mal ein paar Stunden lang sekündlich eine 17 Zeichen (inkl. <<) lange Meldung in den Ticker geschrieben, also ein paar Tausend Zeilen, und tatsächlich kam jetzt im
Objekt Systemmeldung hat geschrieben: Überlauf der Zeichen-Variablen TICKER.TICKER in Makro Test
Aber der Test bzw. der Ticker scheint unbeeindruckt weiter zu laufen und irgendwelche Auswirkungen kann ich bis jetzt nicht erkennen.

Die obige Meldung müsste unbedingt mal in der Hilfe beschrieben werden. Und überhaupt das Konzept mit den mehrzeiligen Zeichenvarablen!
FHZ 1000 PC, Homeputer Studio V2.0 Rel. 120301
FHT80b-Raumregler, Windows XP (SP3)

Bugs? - Das sind keine Bugs! Das sind Features!

MikeT
Beiträge: 5
Registriert: 28.10.2012, 10:09
Wohnort: Franken

Re: Objekt letzter Empfang mit Datum+Uhrzeit

Beitrag von MikeT » 07.11.2012, 07:59

Hallo liebe HomeMatic-Forum Mitglieder,

ich bin absoluter Neueinsteiger in die Welt von HomeMatic und habe auch schon sehr gute Fortschritte gemacht.
Server läuft als Zentrale (zunächst) und es sind auch schon mehrere Komponeten angelernt, verknüpft und mit Makro´s versehen
worden. Auch das Meldungsfenster läuft in der VisuWin soweit so gut. Allerdings habe ich das Problem mit dem Ticker bzw.
Rolltextfenster. Meine Meldungen werden von oben nach unten statisch geschrieben und wenn die vorgegebenen 15 Zeilen voll sind, wird die nächste Meldung einfeich ignoriert. Deshalb habe ich aufmerksam die Beiträge von Ihnen gelesen.
SpiRu hat geschrieben:Meine Lösung für solche Fälle: ein Roll-Textfenster ("Ticker"), in dem die aktuelle Statusmeldung oben reingeschrieben wird und die alten Einträge dabei nach unten schiebt.

Abhängig von einer "Geschwätzigkeitsvariable" zeige ich bei jeder Makroausführung dann alle interessierenden Werte des Objekts an, mit vorausgestellter Uhrzeit sowie "CT".
Hilfe.Variablen hat geschrieben: Es gibt eine vordefinierte Variable des Typs Uhrzeit für jedes Objekt. Der Name der Variablen ist CT (für ChangeTime). In dieser Variablen wird die jeweils letzte Änderungszeit eines Objekts gespeichert. Mit der Funktion STOPPZEIT(Objektname.CT) kann ermittelt werden wie lange ein Objekt sich in seinem aktuellen Zustand befindet.

Code: Alles auswählen

Anzeig_: lokale Variable vom Typ [Zeichen]
Anzeige: Objekt vom Typ [Zeichen] (50 Spalten,  3 Zeilen)
Ticker:  Objekt vom Typ [Zeichen] (50 Spalten, 50 Zeilen)

Anzeig_:= UHRZEIT      +"  Raumregler "+Name +"<<"+
          STOPPZEIT(CT)+"  "           +CT   +"<<"+
          Fenster      +"  "+Alarm+"  "+Zeittabelle+"  "+Modus+"  "+Temperatur+"  "+Ventilpos
Anzeige:= Anzeig_

wenn verbose >= 6 dann
     Ticker:= Anzeig_+"<<<<"+Ticker
wenn-Block-Ende
Werde aber leider nicht ganz schlau daraus. Auch der Versuch, dies nachzuvollziehen ging leider tüchtig in die Hose.
Können Sie mir das bitte noch mal erklären.

Meine Anzeigen verarbeite ich unter den eigentlichen Objekten per Makro.
Das Objekt "Meldung" dient lediglich nur zur Anzeige und enthält folgende Zeile, wobei das Fenster auf 15 Zeilen mit 33 Zeichen begrenzt ist:
z.B. Zeile 1 und 2 usw.
Meldung:=""+Funkstecker1.CT+Funkstecker1.Anzeige1+" "
Meldung:=Meldung+""+Funkstecker2.CT+Funkstecker2.Anzeige2+" "

Die Leerzeichen am Ende der Zeilen dienen dazu, um eine verträgliche Anzeigendarstellung zu erreichen.

Nur es ist eben kein Rolltextfenster.
WAS mache ich falsch???
Vielleicht kann mir jemand dabei helfen.

Grüße aus Franken wünscht
MikeT

buempi
Ehrenmitglied
Beiträge: 12194
Registriert: 29.07.2006, 15:58
Wohnort: Schweiz
Danksagung erhalten: 5 Mal

Re: Objekt letzter Empfang mit Datum+Uhrzeit

Beitrag von buempi » 07.11.2012, 09:28

Hallo Mike und herzlich willkommen im Forum

Du generierst in deinem Makro das Anzeige-Objekt "Meldung" jedes mal neu, indem du in der ersten Zeile mit einer Zuweisung und nicht einer Verkettung beginnst. Erst in der zweiten Makro-Zeile wird an den bestehenden Melde-Text was drangehängt. Deshalb gibt es keinen Rolltext. Es wird ferner alles auf 1 Zeile geschrieben, weil du nirgends "<<" drin hast.

Wozu brauchst du einen Rolltesxt, wenn du doch anzeigen willst, wie lange sich das Objekt momentan schon im aktuellen Zustand befindet. Da bringt es doch nichts, wenn die Anzeige dann nach oben oder unten gescrollt wird? Oder interessiert dich, dass das Licht vor 15 Minuten 37 Minuten lang gebrannt hatte und jetzt seit 52 Minuten brennt?

Der Inhalt und Zweck deiner Variablen Anzeige1 und Anzeige2 in den beiden Funksteckern ist mir leider nicht ersichtlich...

Wenn du einen scrollenden Text haben willst, kannst du das lösen, indem du ereignisgesteuert aus dem jeweiligen Schaltobjekt (Ausführen bei Änderung aktivieren!) einen Eintrag in dein Anzeige-Objekt VORNE reinschreibst. Die alten Einträge verschwinden dann unten im Niemandsland:

Code: Alles auswählen

Meldung := Zeit + " Steckdose 1 " + Funkstecker1 + "<<" + Meldung
fügt oben in dein Anzeigeobjekt eine Zeile dieser Art ein:

Code: Alles auswählen

07.11.12 09:30:00 Steckdose 1 an
.... alte Meldungen
Da das Objekt "Meldung" so (intern) endlos gross werden könnte, und man einen Überlauf nicht ausschliessen kann, empfiehlt es sich, das ganze Objekt jeweils zum Tageswechsel zu löschen mit:

Code: Alles auswählen

Meldung := ""
Wie man das Ganze mit einer entsprechenden Anzahl Variablen nach oben scrollen lassen kann, habe ich weiter vorne in diesem Thread ausführlich beschrieben.

Viele Grüsse
Bümpi

MikeT
Beiträge: 5
Registriert: 28.10.2012, 10:09
Wohnort: Franken

Re: Objekt letzter Empfang mit Datum+Uhrzeit

Beitrag von MikeT » 14.11.2012, 21:45

Hallo Bümpi,

Herzlichen Dank für die freundliche Aufnahme im Forum.

Da ich leider nicht jeden Tag Zeit habe um Tips auszuprobieren, bin ich erst heute dazu gekommen.
Danke. Es hat Funktioniert. Allerdings habe ich in den Objekt-Elementen eine "Wenn"-Bedingung eingebunden, um den Schaltzustand
anzuzeigen.

Und das mit dem Zeilenumbruch, zur besseren Darstellung der Meldungen werde ich auch noch hinbekommen.

Grüße

Mike

Antworten

Zurück zu „homeputer Studio / Standard: Programmierbeispiele“