NEWS
InfluxDB schreiben nur Änderungen
-
@mickemup sagte in InfluxDB schreiben nur Änderungen:
Der DP wird von javascript gesteuert und dann folgt das Ack true vom rpi2.0
das ergäbe Sinn!
Ich bin aus den Erklärungen von @laser nicht schlau geworden. Nach meinem Verständnis liest er den GPIO aus, um einen Status zu überwachen.@Homoran
Den GPIO liest er nicht aus, sondern schreibt den (ist ein Output)
Im gezeigten Skript überwacht er einen UserDP (Brenner ist ein)
Wie der entsteht wissen wir aber nicht.Edit: Nachtrag: die Logik von der ganzen Steuerung wurde auch nicht gezeigt, aber dazu ist ja auch keine Frage da.
Einfach gesagt überwachen "wir" nur ober der setState Befehl für den GPIO auch ankommt.
Irgendwo (wahrscheinlich in einem anderen Skript wird der GPIO aber auch wieder auf true gesetzt...) -
@mickemup Der Datenpunkt soll wieder zurückgesetzt werden. Dafür ist der 2. Trigger.
Es gibt sicher viele Möglichkeiten, eine Logik zu realisieren. So, wie Sie jetzt ist, funktioniert es. Ich könnte jetzt versuchen, weiter zu vereinfachen. Getreu dem Motto "Wenn es dem Esel zu wohl wird, geht er aufs Eis tanzen! Meine Logik vor diesem Zustand war noch viel umfangreicher. Der Istzustand gefällt mir erst mal. Muß ja nicht für immer so bleiben. -
@Homoran sagte in InfluxDB schreiben nur Änderungen:
@Laser warum schreiben script und rpi2 in den DP und warum das Script, das ich immer noch nicht zu sehen bekommen habe(!), mit ack=false?
weder beantwortet, noch etwas geändert!
Der Verlauf sieht doch jetzt gut aus. Immer ein Steuern und kurz danach das Feedback von rpi2.0
Aber @laser du machst es uns wirklich schwierig zu helfen. Du fragst viel und gleichzeitig (es wirkt zumindest so), scheints du das Feedback nicht/nur widerwillig anzunehmen.
Löse die Teilprobleme einzeln:
Beschreibe den ist Zustand
Beschreibe den gewünschten Sollzustand
Ändere nicht 1000 Sachen gleichzeitig
Setze nicht voraus, dass die Leute dein Projekt kennen und/oder Gedanken lesen können.@homoran @mickemup sagte in InfluxDB schreiben nur Änderungen:
Der Verlauf sieht doch jetzt gut aus. Immer ein Steuern und kurz danach das Feedback von rpi2.0
Aber @laser du machst es uns wirklich schwierig zu helfen. Du fragst viel und gleichzeitig (es wirkt zumindest so), scheints du das Feedback nicht/nur widerwillig anzunehmen.
Ich nehme überhaupt nichts widerwillig an. Von mir aus hätte ich eine Änderung nach der Anderen vorgenommen. Dazwischen 1 Tag abgewartet, wie es läuft. Ich wurde doch gedrängt, endlich die Vorschläge einzuarbeiten. Das habe ich dann getan.
Ich wüßte schon gerne, was die wirkliche Ursache für das teileweise Fehlen des Schreibens in die Datenbank war. Deshalb parametriere ich im Adapter influxDB schrittweise um. Ist keine große Arbeit und kann jederzeit rückgängig gemacht werden. -
@Homoran
Den GPIO liest er nicht aus, sondern schreibt den (ist ein Output)
Im gezeigten Skript überwacht er einen UserDP (Brenner ist ein)
Wie der entsteht wissen wir aber nicht.Edit: Nachtrag: die Logik von der ganzen Steuerung wurde auch nicht gezeigt, aber dazu ist ja auch keine Frage da.
Einfach gesagt überwachen "wir" nur ober der setState Befehl für den GPIO auch ankommt.
Irgendwo (wahrscheinlich in einem anderen Skript wird der GPIO aber auch wieder auf true gesetzt...)@mickemup @homoran sagte in InfluxDB schreiben nur Änderungen:
Im gezeigten Skript überwacht er einen UserDP (Brenner ist ein)
Wie der entsteht wissen wir aber nicht.der Zustand Brenner ist EIN entsteht durch Überwachen der Leistungsaufnahme der Heizung.
Hatte ich weiter oben kurz beschrieben. Wenn das die Frage war? -
@mickemup @homoran sagte in InfluxDB schreiben nur Änderungen:
Im gezeigten Skript überwacht er einen UserDP (Brenner ist ein)
Wie der entsteht wissen wir aber nicht.der Zustand Brenner ist EIN entsteht durch Überwachen der Leistungsaufnahme der Heizung.
Hatte ich weiter oben kurz beschrieben. Wenn das die Frage war? -
@mickemup genau das werde ich versuchen, herauszufinden. Der Zustand steht ja über längere Zeit an. Warum stört da eine Entprell- und Blockzeit?
Übrigens (ist eben ohne seitenlange Romane schwer zu beschreiben) der GPIO ist die Freigabe für den Brenner der Heizung und wird in einem anderen Script nach Ablauf von 15 Minuten am Tag und 25 Minuten in der Nacht (Einstellbar) wieder gesetzt. Damit soll der vorzeitige Verschleiß der Zündelektrode vermieden werden (klappt auch). Die Überwachung des Freigabezustandes und Darstellung in Grafana ist ein hübscher Effekt, mir das Ablesen der Brennerlaufzeit zu erleichtert. Auswirkungen auf die Funktion der Steuerung gibt es nicht. -
Warum willst du den Entrpellen?
Das Blocken könnte das Feedback vom rpi2.0 geblockt haben, da dies ja kurz auf deinen Steuerinput folgt.
Irgendwo habe ich noch im Hinterkopf, das Entprelllen und Blocken gleichzeitig zu Problemen führen könnte...
Es fehlt mir auch gerade kein praktisches Beispiel ein, wo beides gleichzeitig Sinn macht.Nachtrag
Entrpellen: Macht z.B Sinn wenn man einen Taster einliest
Blocken: Macht z.B Sinn, wenn ein Sensor sehr oft Daten liefert und man z.B nicht öfter als jede Sekunde die Daten logen will.
Bei einem Output (den man selber steuert) machen beide Settings 0 Sinn. -
@mickemup Diese beiden Zeiten standen defaultmäßig drin. Aus reiner Nachlässigkeit habe ich die stehen gelassen. Ich habe die nicht aktiv eingetragen. Diese Zeiten brauche ich bei Sensoren, die immer mal Störimpulse generieren. Hier ist das absolut überflüssig. Trotzdem möchte ich wissen, ob das der Fehler war.
-
@mickemup Diese beiden Zeiten standen defaultmäßig drin. Aus reiner Nachlässigkeit habe ich die stehen gelassen. Ich habe die nicht aktiv eingetragen. Diese Zeiten brauche ich bei Sensoren, die immer mal Störimpulse generieren. Hier ist das absolut überflüssig. Trotzdem möchte ich wissen, ob das der Fehler war.
-
@mickemup im influxDB Adapter kann man "Standardeinstellungen" festlegen. Das habe ich getan. Was von Haus aus drinstand, weiß ich jetzt nicht mehr. Am Code habe ich eigentlich nichts angepaßt. Der war in Ordnung. Nur die Speichervariablen von Zustandstyp "boolean" auf "Zahl" geändert. Was aber scheinbar nicht funktioniert hat. Oder ich habe dabei einen Fehler gemacht. Danach habe ich diese Variablen gelöscht und als "Zahl" neu angelegt. Erst dann waren die vielen Warnungen verschwunden.
Ergänzung: Ich bin erst mal froh, daß die vereinfachte Steuerung den Brennerverschleiß minimiert. Das ist die Hauptaufgabe gewesen. Der Code vorher war zu kompliziert. Er ist schon stark vereinfacht. Auch wenn jetzt noch Feinheiten möglich sind. -
-
@mickemup Nein, es geht nicht wieder von vorn los. Der Unterschied ist ja schon mal, daß es keine Fehler mehr gibt. Und daß jetzt eine Änderung nach der Anderen (einzeln, nicht Alles zusammen) vorgenommen wird. Die Nächste Änderung (morgen) wird sein, den Haken bei "Nur Änderungen" zu setzen.
-
Hatte ich auch schon Alles draußen. Es wird noch ein Fehler im InfluxDB Adapter sein. Speziell bei der Funktion "Nur Änderungen" . Möglicherweise werden Binärzustände nicht so oft gespeichert, so daß das noch nicht aufgefallen ist? Vor Jahren hat das schon mal Jemand bemängelt.
@Laser sagte in InfluxDB schreiben nur Änderungen:
Hatte ich auch schon Alles draußen. Es wird noch ein Fehler im InfluxDB Adapter sein. Speziell bei der Funktion "Nur Änderungen" . Möglicherweise werden Binärzustände nicht so oft gespeichert, so daß das noch nicht aufgefallen ist? Vor Jahren hat das schon mal Jemand bemängelt.
-
@homoran Es wäre ja erfreulich, wenn der Adapter keinen offensichtliche Fehler hat. Daß es hier ein Problem geben könnte habe nicht ich in die Welt gesetzt, sondern der Thread- Ersteller vor Jahren für möglich (!) gehalten. Ich habe das gelesen und einen ähnlich gearteten Fehler bei mir bemerkt. An diesen Thread habe ich mich angehangen. Meine Ausführungen wurden dann von dort abgespalten und ein neuer Thread aufgemacht.
-
@Laser sagte in InfluxDB schreiben nur Änderungen:
@mickemup @homoran Der erste Test mit Veränderungen im influxDB Adapter lief ja erfolgreich durch.
Das war: "nur Änderungen" - Haken nicht gesetzt. Entprellzeit: 200 Blockzeit:500
Jetzt werde ich die beiden Zeiten auf 0 setzen und abwarten.
Das ist doch genau das Setting von Anfang...
Was willst du den nun erreichen mit dem umstellen?
Beschreibe den ist Zustand
Beschreibe den gewünschten Sollzustand -
@mickemup ich möchte ausschließen, daß ein Eintrag in diesen Zeiten etwas negatives für meinen Fall bewirkt. Da es absolut keinen Aufwand bedeutet, kann ich das doch machen?
Am Ende soll herauskommen: die Zeiten auf Null, "Nur Änderungen " angehakt.
Das nächste Problem bei "Nur Änderungen" sind die "trotzdem schreiben" Zeit (geringstes Problem) und die "minimale Differenz" bei meinen möglichen Werten von 0 und 1. -
@mickemup ich möchte ausschließen, daß ein Eintrag in diesen Zeiten etwas negatives für meinen Fall bewirkt. Da es absolut keinen Aufwand bedeutet, kann ich das doch machen?
Am Ende soll herauskommen: die Zeiten auf Null, "Nur Änderungen " angehakt.
Das nächste Problem bei "Nur Änderungen" sind die "trotzdem schreiben" Zeit (geringstes Problem) und die "minimale Differenz" bei meinen möglichen Werten von 0 und 1.@Laser sagte in InfluxDB schreiben nur Änderungen:
daß ein Eintrag in diesen Zeiten etwas negatives für meinen Fall bewirkt.
Das macht es nur, wenn im Vorfeld dein Konstrukt Blödsinn macht und dadurch das Logging verhindert.
@mickemup sagte in InfluxDB schreiben nur Änderungen:
Das Blocken könnte das Feedback vom rpi2.0 geblockt haben, da dies ja kurz auf deinen Steuerinput folgt.
Und höchstwahrscheinlich noch falsche Typen unterwegs waren, was wir mangels exakter Fehlermeldung nie erfahren werden.
-
@mickemup ich möchte ausschließen, daß ein Eintrag in diesen Zeiten etwas negatives für meinen Fall bewirkt. Da es absolut keinen Aufwand bedeutet, kann ich das doch machen?
Am Ende soll herauskommen: die Zeiten auf Null, "Nur Änderungen " angehakt.
Das nächste Problem bei "Nur Änderungen" sind die "trotzdem schreiben" Zeit (geringstes Problem) und die "minimale Differenz" bei meinen möglichen Werten von 0 und 1.@Laser sagte in InfluxDB schreiben nur Änderungen:
Das nächste Problem bei "Nur Änderungen" sind die "trotzdem schreiben" Zeit (geringstes Problem) und die "minimale Differenz" bei meinen möglichen Werten von 0 und 1.
Da gibt es kein "Problem", ausser du willlst dir eins kreieren...
Alles leer lassen und Haken setzen (bei nur Aenderungen).Wieder:
Beschreibe den ist Zustand
Beschreibe den gewünschten Sollzustand?Nachtrag: Du bist nicht der erste Mensch, der Zahlen (1 und 0 ) in eine DB schreibt.
Du kannst da schon rumdoktern, aber wenn du was dabei lernen willst mach dir einen "Plan" mit einem "Ziel -
@Laser sagte in InfluxDB schreiben nur Änderungen:
daß ein Eintrag in diesen Zeiten etwas negatives für meinen Fall bewirkt.
Das macht es nur, wenn im Vorfeld dein Konstrukt Blödsinn macht und dadurch das Logging verhindert.
@mickemup sagte in InfluxDB schreiben nur Änderungen:
Das Blocken könnte das Feedback vom rpi2.0 geblockt haben, da dies ja kurz auf deinen Steuerinput folgt.
Und höchstwahrscheinlich noch falsche Typen unterwegs waren, was wir mangels exakter Fehlermeldung nie erfahren werden.
@Homoran sagte in InfluxDB schreiben nur Änderungen:
Das Blocken könnte das Feedback vom rpi2.0 geblockt haben, da dies ja kurz auf deinen Steuerinput folgt.
Scheinbar wurde das Feedback aber nicht geblockt oder verhindert. Es kam ja.
Und ich möchte mich auch dafür bedanken, daß ich hier auf die Tabelle aufmerksam gemacht wurde. Das wird mir in Zukunft helfen. Ich möchte auch Niemanden etwas "in die Schuhe Schieben". Zu 99 % (100) lag der Fehler bei mir. Ich vermute, die Datentypen haben das Problem gebracht.
Für Binärzustände würde ich eigentlich den Typ "boolean" bevorzugen. Hatte ich im Ursprungszustand auch für alle Merker so gehabt und erst unmittelbar vor dem Datenbank-Schreiben den Alias zur Typenumwandlung angewendet. Dabei kam es zu den Aussetzern bei den Schreibvorgängen. Wie auch immer, es funktioniert jetzt. Auch wenn ich nicht weiß, was nun der Fehler war. Aber wieder von vorn anfangen wird es nicht geben.
Was trage ich denn nun sinnvoll bei "minimale Differenz zum letzten Wert" ein? Null, um die Prüfung zu deaktivieren?