Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [gelöst] Probleme mit sql logging (früher:Button Zustand bei Neustart einlesen)

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [gelöst] Probleme mit sql logging (früher:Button Zustand bei Neustart einlesen)

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

      Hallo,

      hab mal wieder ein Problem, dass ich nicht gelöst bekomme.

      Ich habe einen Button in der vis-Oberfläche und der schaltet eine selbsterzeugte Variable. Das funktioniert auch alles und diese ist unter Objekte->"javascript.0.Badezimmer.E-Heizung-Zeitsteuerung" sichtbar und ändert sich auch und die vis Oberfläche reagiert ebenfalls entsprechend.

      Jetzt möchte ich gerne bei einem ioBroker Neustart wissen, wie denn der letzte Zustand war, daher habe ich die Variable als Historie konfiguriert und er speichert diese auch in meinem sql-Adapter aber irgendwie scheint nicht jeder 0 und 1 Zustand protokolliert zu werden. Aktuell sieht es so aus, als wenn er immer den 1 Zustand speichert und nicht den 0, hatte aber auch schon den umgekehrten Fall. Wenn ich mir die letzten 100-Daten aus dem History-Adapter ausgeben lasse, dann kommen da nur die 1er-Werte drin vor, aber nicht die 0'er. Meine Idee war, beim Start den aktuellsten Wert aus demHistory-Adapter zu holen und den dann weiterzuverwenden, dass ist durch diesen "Fehler" aber nicht möglich, da ich immer nur 1 zurückbekomme.

      Wo ist da mein Gedankenfehler, dass das so nicht funktioniert. Müsste der Historieadapter nicht alles protokollieren? Die Variable wird bei subscribe ordentlich ausgelöst, daran kann es nicht liegen.

      raw-Werte der History-Konfig:

      {
        "from": "system.adapter.javascript.0",
        "ts": 1513028661310,
        "common": {
          "name": "Badezimmer.E-Heizung-Zeitsteuerung",
          "role": "javascript",
          "type": "mixed",
          "custom": {
            "sql.0": {
              "enabled": true,
              "changesOnly": true,
              "debounce": "",
              "retention": 0,
              "changesRelogInterval": 0,
              "changesMinDelta": 0,
              "storageType": ""
            }
          }
        },
        "native": {},
        "acl": {
          "object": 1638,
          "owner": "system.user.admin",
          "ownerGroup": "system.group.administrator",
          "state": 1638
        },
        "_id": "javascript.0.Badezimmer.E-Heizung-Zeitsteuerung",
        "type": "state"
      }
      
      1 Reply Last reply Reply Quote 0
      • Dutchman
        Dutchman Developer Most Active Administrators last edited by

        Das mit der history ist merkwürdig klinkt nach einen Bug.

        Ich verstehe aber nicht warum du das machen willst?

        iObroker behält bei einen Neustart seine object states also warum aus history lesen und setzen?

        –-----------------------

        Send from mobile device

        Das schöne ios hat Auto Korrektur zum k****

        Wer Schreibfehler findet darf sie behalten oder auf eBay verkaufen, mindest Umsatz 10% für die community

        1 Reply Last reply Reply Quote 0
        • G
          GerdSo last edited by

          Hallo Dutchman,

          hab es gerade ausprobiert und Du hast Recht funktioniert einwandfrei. Habe ich sicherlich vor längerer Zeit auch mal so probiert und da funktioniert es nicht, keine Ahnung weshalb.

          Bzgl. sql-Adapter: Soll/Kann ich da noch weiter evaluieren?

          Ich hab mal einen aktuellen Screenshot angehängt und darin sieht man, dass die Variable auf 0 steht aber der History-Adapter dies nicht mitbekommen hat

          Viele Grüße Gerd.
          1154_snip_20180110161803.png

          1 Reply Last reply Reply Quote 0
          • Dutchman
            Dutchman Developer Most Active Administrators last edited by

            Hmm ändere Mal bitten deinen topic Title in Probleme mit sql logging (ersten thread Editieren) da muss Wert anders ran 🙂

            Im Log kommt nichts ungewöhnliches wenn du die Variable änderst?

            Wie sehen deine SQL Einstellungen aus für diesen Datenpunkt ?

            –-----------------------

            Send from mobile device

            Das schöne ios hat Auto Korrektur zum k****

            Wer Schreibfehler findet darf sie behalten oder auf eBay verkaufen, mindest Umsatz 10% für die community

            1 Reply Last reply Reply Quote 0
            • G
              GerdSo last edited by

              Hallo Dutchman,

              die Konfig für den Datenpunkt siehst Du im ersten Beitrag, da habe ich die JSON davon. Im Log passiert nichts. Identisches Verhalten, habe ich auch bei 2 anderen Knöpfen, da sieht das genauso aus. Wenn ich die Knöpfe subscribe, dann wird sowohl bei 0 als auch bei 1 ausgelöst. Wenn ich dann jedesmal in eine weitere (neue) Variable schreibe und diese ebenfalls mitprotokolliere im History-Adapter, dann tritt da auch dieser Effekt auf, daher dürfte es nicht mit den Buttons zu tun haben.

              Viele Grüße Gerd.

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

                naja, der "Debouce"- Wert ist leer, also wird das Default aus dem Adapter genommen. Was ist denn da eingestellt?

                Wie lange ist das auf dem anderen Zustand? Lang genug?

                Am Ende wäre eine Idee mal den sql-Adapter in "Debug" zu schalten und zu schauen was dann so über die Zeit im Log steht nachdem du mal hin- und her geschaltet hast

                1 Reply Last reply Reply Quote 0
                • G
                  GerdSo last edited by

                  @apollon77:

                  naja, der "Debouce"- Wert ist leer, also wird das Default aus dem Adapter genommen. Was ist denn da eingestellt?

                  Wie lange ist das auf dem anderen Zustand? Lang genug?

                  Am Ende wäre eine Idee mal den sql-Adapter in "Debug" zu schalten und zu schauen was dann so über die Zeit im Log steht nachdem du mal hin- und her geschaltet hast `

                  Danke für den Hinweis den SQL in Debug zu schalten, hätte ich auch mal drauf kommen können:

                  2018-01-10 17:44:54.470  - [31merror[39m: Caught by controller[20]: 2018-01-10 17:44:35.656  - debug: sql.0 Min-Delta reached javascript.0.Badezimmer.E-Heizung-Zeitsteuerung, last-value=1, new-value=0, ts=1515602675657
                  2018-01-10 17:44:54.470  - [31merror[39m: Caught by controller[25]: 2018-01-10 17:44:37.593  - debug: sql.0 Min-Delta reached javascript.0.Badezimmer.E-Heizung-Zeitsteuerung, last-value=0, new-value=1, ts=1515602677595
                  
                  

                  Demnach hat er es erkannt und er sollte es speichern, lt. Tabelle des History-Adapters hat er es aber nicht gemacht.

                  sql ist wie folgt eingestellt
                  1154_snip_20180110175137.png

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

                    Also denounce time von 10000 sind 10s innerhalb dessen der Wert sich nicht ändern darf. Ansonsten wird nur der „stabile“ =letzte wert geloggt. Also die 1

                    Du schaltest also für die eingestellte debounce Zeit zu schnell. Setz mal den Wert runter.

                    Ansonsten steht da noch mehr im log? Das „caught by js-controller“ weist auf nen Fehler hin bei irgendwas …

                    1 Reply Last reply Reply Quote 0
                    • G
                      GerdSo last edited by

                      Hallo apollon77,

                      die Entprellzeit war es nicht, habe den Fehler jetzt aber gefunden. Die korrekte Lösung leider noch nicht!

                      Ich habe beim Anlegen mit createState einen Defaultwert true mitgegeben. Der Schalter vom Typ tplFancyToggleswitch schickt aber 0 oder 1, also einen Zahlenwert.

                      Es sieht also so aus, als ob der sql-Adapter jetzt nur Booleans loggen möchte und die 0 oder 1 Werte einfach ignoriert.

                      Wenn ich auf die Variable subscribe und einfach nochmal bei 1 den Wert auf true setze und bei 0 auf false, wird alles korrekt protokolliert. In ioBroker ist der Variablen Typ auf misc gesetzt. Kann man in der mySQL nachträglich den Typ ändern oder ist diese Variable für "immer" mit dem falschen Typ verbunden? Ein Neuanlegen hat nichts gebracht.

                      Viele Grüße Gerd.

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

                        Wenn Du nicht in der DB den typ ändern willst dann kannst Du versuchen bei dem Datenopunkt in den SQL-EInstellungen den "Speichern als" Typ (im Standard leer) auf Boolean zu setzen. Dann sollte 0/1 in false/true umgewandelt werden beim Speichern.

                        Versuch mal

                        1 Reply Last reply Reply Quote 0
                        • G
                          GerdSo last edited by

                          @apollon77:

                          Wenn Du nicht in der DB den typ ändern willst dann kannst Du versuchen bei dem Datenopunkt in den SQL-EInstellungen den "Speichern als" Typ (im Standard leer) auf Boolean zu setzen. Dann sollte 0/1 in false/true umgewandelt werden beim Speichern.

                          Versuch mal `
                          Hallo,

                          funktioniert leider nicht. Hab es auf "Logikwert" umgestellt und es wird nicht protokolliert. Zur Sicherheit habe ich noch javascript und sql neu gestartet, trotzdem kein Erfolg. Danach habe ich dann wieder meinen Workaround eingeschaltet und es hat geklappt.

                          Gibt es irgendwelche Möglichkeiten dieses "nicht protokollieren" per Script zu erkennen? Würde das dann bei mir einbauen, da ich immer mal wieder Variablen mit anderen Dingen/Typen fülle aufgrund von Änderungen im Script und da würde ich schon gerne sichergehen, dass der sql-Adapter dass auch ordentlich protokolliert. Die Überwachung müsste ja nur für eigene Variablen gemacht werden.

                          Viele Grüße Gerd.

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

                            naja ich denke nicht as er "Nicht "richtig arbeitet … er stellt ggf keine Änderung des wertes fest und loggt deswegen nichts .. also ist komplett korrekt.

                            Geht es wenn du "nur änderungen loggen" raus nimmst?

                            1 Reply Last reply Reply Quote 0
                            • G
                              GerdSo last edited by

                              @apollon77:

                              naja ich denke nicht as er "Nicht "richtig arbeitet … er stellt ggf keine Änderung des wertes fest und loggt deswegen nichts .. also ist komplett korrekt.

                              Geht es wenn du "nur änderungen loggen" raus nimmst? `
                              Leider nein, hatte ich auch schon probiert, dann funktioniert es auch nicht.

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

                                Ok, dann bleibt dir nur das fixen des Datentyps der ID direkt in der DB und potz. löschen falscher Daten und am besten immer an Datentypen halten :-))

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

                                Support us

                                ioBroker
                                Community Adapters
                                Donate

                                777
                                Online

                                31.7k
                                Users

                                79.8k
                                Topics

                                1.3m
                                Posts

                                3
                                14
                                1114
                                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