Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Error/Bug
    4. SQL speichert bei hoher Entprellzeit nicht ab

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    SQL speichert bei hoher Entprellzeit nicht ab

    This topic has been deleted. Only users with topic management privileges can see it.
    • N
      NightWatcher last edited by

      Die Daten kommen von einem 1-wire Bus und dienen aktuell nur einer visuellen Darstellung. Nur loggen bei Abweichung x halte ich nicht für so toll. Die Linie im Chart sähe komisch aus, wenn lange Zeit nichts geloggt wird und dann plötzlich wieder.

      @Homoran:

      @NightWatcher:

      Was muss ich machen, um einzelne Werte nicht allzu häufig in die DB zu schreiben? `
      In der Konfiguration der zu loggenden Datenpunkten die entsprechenden Parameter einstellen 😞

      Bin gerade unterwegs und kann nicht nachsehen. `
      Dort habe ich bisher bereits alles eingestellt. Auch die hier genannte Entprellzeit. Wäre klasse, wenn du da mal nachsehen könntest.

      1 Reply Last reply Reply Quote 0
      • Homoran
        Homoran Global Moderator Administrators last edited by

        @NightWatcher:

        Dort habe ich bisher bereits alles eingestellt. Auch die hier genannte Entprellzeit. Wäre klasse, wenn du da mal nachsehen könntest. `
        Sorry, da hatte ich andere Einstellmöglichkeiten im Kopf, als es wirklich gibt.

        Aber vielleicht kann man da tricksen:
        144_sql.jpg
        Wenn man bei (1) den gewünschten Zeitabstand in Sekunden einstellt und bei (2) einen Delta-Wert, der "eigentlich" nicht so schnell überschritten wird, müsste es klappen.

        Gruß

        Rainer

        1 Reply Last reply Reply Quote 0
        • N
          NightWatcher last edited by

          Was mich ja ein wenig stutzig macht, bei manchen Datenpunkten hat die Entprellzeit von 30.000ms einwandfrei funktioniert, bei anderen wiederrum nicht.

          Jetzt habe ich überall eine Entprellzeit von 1000ms stehen und es wird alle 1min geloggt. (Nur Änderungen aufzeichnen steht auf NEIN)

          Er müsste doch rein logisch bei einer Entprellzeit von 30.000ms auch 30min warten und dann wieder den neuen Wert prüfen. Könnte es sein, dass evtl. ioBroker mit einem solch hohen wert nicht klar kommt? (Laufzeit oder sonstiges).

          1 Reply Last reply Reply Quote 0
          • apollon77
            apollon77 last edited by

            Die Entprellung funktioniert so:

            • Ein Wert kommt

            • Ein Zähler startet der "Entprellzeit" wartet

            Wenn jetzt bis zum Ablauf des Zählers KEIN neuer Wert kommt wird nach Ablauf der Entprellzeit geloggt.

            Wenn innerhalb der Entprellzeit ein neuer Wert kommt, gilt der letzte Wert als "Nicht stabil" und die Entprellzeit wird für den neuen Wert neugestartet.

            Wenn also bei 30 Sekunden Entprellzeit die Werte in Abständen von weniger als 30 Sekunden kommen würde nie was geloggt weil kein Wert in bezug auf "Entprellung" als Stabil gilt

            1 Reply Last reply Reply Quote 0
            • N
              NightWatcher last edited by

              Das erklärt auch, wieso es nicht klappt. Oh man ja richtig. Ich habe falsch rum gedacht.

              Die Daten kommen alle Minute zyklisch neu. Bei denen, wo es funktionierte, sind die Daten recht stabil, deshalb hat es auch funktioniert.

              1 Reply Last reply Reply Quote 0
              • paul53
                paul53 last edited by

                Prellen (im ursprünglichen Sinne) erfolgt nur unmittelbar nach einer Kontaktbetätigung bis nach einigen ms der Kontaktwiderstand (geschlossen oder offen) stabil ist. Deshalb erfolgt das Entprellen normalerweise so:

                • Wert kommt und Entprellzeit ist nicht aktiv, dann Wert loggen und Entprellzeit starten

                • Wert kommt und Entprellzeit ist aktiv, dann Wert ignorieren

                1 Reply Last reply Reply Quote 0
                • apollon77
                  apollon77 last edited by

                  Da gab es in einem anderes Thread (http://forum.iobroker.net/viewtopic.php?f=36&t=5519 / http://forum.iobroker.net/viewtopic.php?p=57214#p57214) eine interessante Diskussion dazu … 🙂

                  Am Ende ist es eine Mischform geworden ...

                  Man kann das Thema gern nochmal aufmachen?!

                  1 Reply Last reply Reply Quote 0
                  • fu_zhou
                    fu_zhou last edited by

                    Ich würde das Thema nochmal gerne aufmachen, weil für mich nicht 100% klar ist, nach welchen Kriterien Daten aufgezeichnet werde. Ich benutze MySQL, mal ist die Entprellzeit nachvollziehbar, mal wird der selbe Wert mit nur wenigen Millisekunden Abstand geschrieben.
                    356_zwischenablage02.jpg
                    Dann ist mir auch noch nicht klar, was bei "gleiche Werte aufzeichnen" reinkommt. Ist das eine Sekundenangabe?

                    Gilt " Minimale Abweichung vom letzten Wert für Aufzeichnung" nur wenn "Nur Änderungen aufzeichnen" angehakt ist?

                    1 Reply Last reply Reply Quote 0
                    • apollon77
                      apollon77 last edited by

                      @fu_zhou:

                      Ich würde das Thema nochmal gerne aufmachen, weil für mich nicht 100% klar ist, nach welchen Kriterien Daten aufgezeichnet werde. Ich benutze MySQL, mal ist die Entprellzeit nachvollziehbar, mal wird der selbe Wert mit nur wenigen Millisekunden Abstand geschrieben. `

                      Interessant. Mal Adapter in Debug laufen lassen und log schicken von so einem Zeitraum wo das doppelte Logging passiert ist.

                      Debug: Instanzen -> Expertenmodus -> Dann Loglevel ändern für die Instanz

                      @fu_zhou:

                      Dann ist mir auch noch nicht klar, was bei "gleiche Werte aufzeichnen" reinkommt. Ist das eine Sekundenangabe? `
                      Sind Sekunden

                      @fu_zhou:

                      Gilt " Minimale Abweichung vom letzten Wert für Aufzeichnung" nur wenn "Nur Änderungen aufzeichnen" angehakt ist? `
                      Ja, macht nur da sinn.

                      1 Reply Last reply Reply Quote 0
                      • fu_zhou
                        fu_zhou last edited by

                        Die minimale Abweichung macht aus meiner Sicht auch Sinn, ohne dass "Nur Änderungen aufzeichnen" aktiv ist. Problem ist nämlich, dass Sollwerte, z.B. Raumtemperatur-Sollwerte, nie aufgezeichnet werden, wenn sie nicht mindestens einmal verändert werden. Mein "Wunsch" wäre es, dass man z.B. gleiche Werte alle halbe Stunde (parametrierbar ist es ja schon durch "gleiche Werte aufzeichnen") aufzeichnet und ein Wert als "nicht gleich" erkannt wird, wenn er mindestens um X abweicht (=minimale Abweichung vom letzten Wert). Der ungleiche Wert wird dann sofort geschrieben. eine Prozentangabe für die Abweichung wäre hier ganz hilfreich. Mein Luxmeter misst von 0 bis 100.000 Lux, da möchte ich nicht bei einer Abweichung von 0,5 Lux aufzeichnen, sondern eher bei 500 Lux, was ca. 2% ausmacht. Bei der Außentemperatur möchte ich auch 2% Abweichung aufzeichnen, was bei 25° dann 0,5 K entspricht. Die Prozentangabe bezieht sich immer auf den letzten Wert, d.h. bei niedrigen Werten ist die absolute Abweichung dann etwas geringer, als bei hohen Werten. Lässt sich da was machen?

                        1 Reply Last reply Reply Quote 0
                        • apollon77
                          apollon77 last edited by

                          @fu_zhou:

                          Die minimale Abweichung macht aus meiner Sicht auch Sinn, ohne dass "Nur Änderungen aufzeichnen" aktiv ist. Problem ist nämlich, dass Sollwerte, z.B. Raumtemperatur-Sollwerte, nie aufgezeichnet werden, wenn sie nicht mindestens einmal verändert werden. Mein "Wunsch" wäre es, dass man z.B. gleiche Werte alle halbe Stunde (parametrierbar ist es ja schon durch "gleiche Werte aufzeichnen") aufzeichnet `
                          "Gleiche Werte aufzeichnen alle X Sekunden" sorgt dafür das auch ungeänderte Werte aufgezeichnet werden.

                          @fu_zhou:

                          und ein Wert als "nicht gleich" erkannt wird, wenn er mindestens um X abweicht (=minimale Abweichung vom letzten Wert). Der ungleiche Wert wird dann sofort geschrieben. eine Prozentangabe für die Abweichung wäre hier ganz hilfreich. Mein Luxmeter misst von 0 bis 100.000 Lux, da möchte ich nicht bei einer Abweichung von 0,5 Lux aufzeichnen, sondern eher bei 500 Lux, was ca. 2% ausmacht. Bei der Außentemperatur möchte ich auch 2% Abweichung aufzeichnen, was bei 25° dann 0,5 K entspricht. Die Prozentangabe bezieht sich immer auf den letzten Wert, d.h. bei niedrigen Werten ist die absolute Abweichung dann etwas geringer, als bei hohen Werten. Lässt sich da was machen? `

                          Ich habe mich damals gegen entschieden das Prozenuell zu machen weil auch das in genug Fällen nicht geht. Du kannst statt dessen die ganzen Grenzwerte auch damit auch die minimale-Log-Abweichung pro State einzeln festlegen. Also bei deinen Temperaturwerten schreibst Du 0.5 rein, beim Helligkeitssensor halt 500.

                          Ich denke mal drüber nach ob es irgendwie parallel geht …

                          1 Reply Last reply Reply Quote 0
                          • fu_zhou
                            fu_zhou last edited by

                            Ja ist klar, so mach ich das jetzt auch (0.5, 500 etc.), die schöne Massenprojektierung geht halt dann nicht, man muss diese Werte dann einzeln anfassen. Ich habe ca. 220 Variablen, die ich aufzeichne…

                            Im Moment habe ich 1800 Sek bei "Gleiche Werte aufzeichnen". Eine halbe Stunde ist längst um, einige Werte sind nach 39 Minuten geschrieben worden, andere noch nicht. Woran kann das liegen?

                            Was schlägst du vor, um Werte erstmalig zu schreiben, bevor sie geändert werden (z.B. Sollwert Raumtemperatur, der bleibt sehr wahrscheinlich immer auf 21° stehen)

                            1 Reply Last reply Reply Quote 0
                            • apollon77
                              apollon77 last edited by

                              Lass Adapter mal in Debug laufen und schau in die Logs bzw schicke die Logs … sollte an sich loggen. Das erste Logging für solche Werte ohne regelmäßige Änderungen erfolgt "per Zufall" verzögert für das erste mal ...

                              1 Reply Last reply Reply Quote 0
                              • frankjoke
                                frankjoke last edited by

                                Habe die Änderung auch bemerkt und musste die Entprellzeiten ändern.

                                Leider ist diese eher für digitale Signale ausgelegt (zum Entprellen…) aber nicht um analoge Signale zu verarbeiten.

                                Dafür wäre eigentlich ein Filter notwendig der höhere Frequenzen nicht durchlässt und dan bei Änderung um >=x alle t=Zeiteinheiten speichert .

                                Wollte schon mal son'en Filter in JS schreiben (in der Audio-Technologie werden sie ja zur Genüge eingesetzt, z.B- http://peabody.sapp.org/class/350.838/lab/biquad/) aber es war etwas Zeitraubend die Filterparameter zu setzten und ich hab's dann aufgegeben.

                                Hab dann einfachere Mittel verwendet, ohne Rückkopplung.

                                // bei der Initialisierung:
                                const factor = 0.05;
                                const round = 0.1; // eine Kommastelle, 0.01 wären 2 und 1 wäre ein int
                                var alterWert = neuerEingang;
                                
                                // bei neuen Werten
                                alterWert = neuerEingang/faktor + alterWert/(1-faktor); 
                                neuerAusgang = Match.round(alterWert/round)*round;
                                
                                

                                Damit konnte ich z.B. Daten die alle 20s ankamen und nur all 10min gespeichert werden sollen relativ gut und einfach filtern und nur einen Zwischenspeicher/ Datenpunkt verwendet.

                                Das könnte eigentlich auch gut in SQL-Routine eingebaut werden wenn die Faktoren für analoge Werte anders interpretiert werden könnten.

                                1 Reply Last reply Reply Quote 0
                                • fu_zhou
                                  fu_zhou last edited by

                                  Ich war die Woche unterwegs und wollte jetzt nochmal an die Sache ran und da habe ich mit Erschrecken festgestellt, dass kein Objekt mehr als "aktiviert" gezeigt/ gekennzeichnet ist, die Aufzeichnung aber (zum Glück) noch weiter läuft - allerdings mit geänderten Zeiten, z.B. alle 15 Minuten anstatt alle 30 Minuten, wie einmal parametriert.

                                  Wie kriege ich das behoben? Ich möchte die Objekte wieder als "aktiviert" sql.0 zugeordnet sehen.

                                  Das scheint nach einem Reboot passiert zu sein…

                                  1 Reply Last reply Reply Quote 0
                                  • First post
                                    Last post

                                  Support us

                                  ioBroker
                                  Community Adapters
                                  Donate

                                  850
                                  Online

                                  31.8k
                                  Users

                                  80.0k
                                  Topics

                                  1.3m
                                  Posts

                                  6
                                  20
                                  2150
                                  Loading More Posts
                                  • Oldest to Newest
                                  • Newest to Oldest
                                  • Most Votes
                                  Reply
                                  • Reply as topic
                                  Log in to reply
                                  Community
                                  Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                  The ioBroker Community 2014-2023
                                  logo