Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Anfänger Fragen - Log wird geflutet und Fehlererkennung

    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

    Anfänger Fragen - Log wird geflutet und Fehlererkennung

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

      Hallo zusammen,

      ich komme ursprünglich vom Arduino und arbeite mich jetzt in Javascript ein.
      Vieles habe ich durch Try and Error herausgefunden.

      Aktuelles Problem ->
      die Log Datei wird regelmäßig durch irgendwelche Einträge geflutet die aus einem Script kommen das zum einen gelöscht wurde oder bei dem der Eintrag console.log entfernt wurde (Script danach gespeichert und neu gestartet).
      Woher kann dieser Fehler kommen oder wie verhindert man das?

      Zusätzlich habe ich aktuell das Problem, dass eine Variable rot unterstrichen ist, aber nur in einem Vergleich. Ich lese den Wert aus einem BME280 ein und schreibe diesen in die Variable - tut soweit.
      In Zeile 16 ist "TemperaturSensor1neu" rot unterstrichen. Ich habe schon den Vergleich auf >= 0.0, >=0 gehabt - ändert sich nichts.
      Was übersehe ich? Meine Suche bei Google war auch etwas erfolglos. Zwar zig Anleitungen wie man etwas deklariert, aber die Lösung habe ich nicht gefunden oder übersehen.

      var Intervall1, NullGrad, FeuchteSensor1, FeuchteSensor2, TemperaturSensor1alt, TemperaturSensor1neu,  TemperaturSensor2talt, TemperaturSensor2neu;
      NullGrad = 0;
      TemperaturSensor1alt = 0;
      
      // neue Werte vorhanden?
      Intervall1 = setInterval(function () {  
      TemperaturSensor1neu = getState("i2c.0.0x76.temperature").val;
      console.log(TemperaturSensor1neu);
      console.log(TemperaturSensor1alt);
      }, 60000);
      
      //falls neue Werte je nach Temperatur Wasergehalt berechnen
      if (TemperaturSensor1alt != TemperaturSensor1neu){
          console.log("neue Werte");
      TemperaturSensor1alt = TemperaturSensor1neu;
      if (TemperaturSensor1neu >= NullGrad){
      FeuchteSensor1 = (13.233 * getState("i2c.0.0x76.humidity").val * (Math.pow(10, ((7.5 * getState("i2c.0.0x76.temperature").val) / (237 + getState("i2c.0.0x76.temperature").val))) / (273.16 + getState("i2c.0.0x76.temperature").val))).toFixed(2); //Berechnung Wassergehalt der Luft aussen
      setState('javascript.0.variables.feuchte'/*feuchte*/, parseFloat(FeuchteSensor1) , true);
      //console.log(FeuchteSensor1);
      };
      if (TemperaturSensor1neu < NullGrad){
      FeuchteSensor1 = (13.233 * getState("i2c.0.0x76.humidity").val * (Math.pow(10, ((9.5 * getState("i2c.0.0x76.temperature").val) / (237 + getState("i2c.0.0x76.temperature").val))) / (273.16 + getState("i2c.0.0x76.temperature").val))).toFixed(2); //Berechnung Wassergehalt der Luft aussen
      setState('javascript.0.variables.feuchte'/*feuchte*/, parseFloat(FeuchteSensor1) , true);
      //console.log(FeuchteSensor1);
      };
      };
      //Später für zweiten Sensor
      /*
      if (TemperaturSensor2alt != TemperaturSensor2neu){
      TemperaturSensor2alt = TemperaturSensor2neu;
      if(TemperaturSensor2neu >= 0){
      FeuchteSensor2 = (13.233 * getState("i2c.0.0x76.humidity").val * (Math.pow(10, ((7.5 * getState("i2c.0.0x76.temperature").val) / (237 + getState("i2c.0.0x76.temperature").val))) / (273.16 + getState("i2c.0.0x76.temperature").val))).toFixed(2); //Berechnung Wassergehalt der Luft aussen
      setState('javascript.0.variables.feuchte', parseFloat(FeuchteSensor2) , true);
      console.log(FeuchteSensor2);
      };
      if(TemperaturSensor2neu < 0){
      FeuchteSensor2 = (13.233 * getState("i2c.0.0x76.humidity").val * (Math.pow(10, ((9.5 * getState("i2c.0.0x76.temperature").val) / (237 + getState("i2c.0.0x76.temperature").val))) / (273.16 + getState("i2c.0.0x76.temperature").val))).toFixed(2); //Berechnung Wassergehalt der Luft aussen
      setState('javascript.0.variables.feuchte', parseFloat(FeuchteSensor2) , true);
      console.log(FeuchteSensor2);
      };
      };
      */
      

      So zu guter Letzt (da habe ich mich ehrlich gesagt noch nicht schlau gemacht). Wo speicher ich am besten Werte die auch nach einem Neustart vorhanden sein sollen? Im Arduino sollte man nur bedingt den EEPROM nutzen, wenn man keine Speicherkarte nutzt, welche Möglichkeiten gibt es beim Pi?

      Viele Grüße
      Oliver

      Homoran paul53 2 Replies Last reply Reply Quote 0
      • Homoran
        Homoran Global Moderator Administrators @OliS last edited by

        @olis sagte in Anfänger Fragen - Log wird geflutet und Fehlererkennung:

        durch irgendwelche Einträge

        die müsste man schon kennen, um helfen zu können

        wie ist der Wert von
        @olis sagte in Anfänger Fragen - Log wird geflutet und Fehlererkennung:

        i2c.0.0x76.temperature

        O 1 Reply Last reply Reply Quote 0
        • paul53
          paul53 @OliS last edited by paul53

          @olis sagte: Wo speicher ich am besten Werte die auch nach einem Neustart vorhanden sein sollen?

          In Datenpunkten. ioBroker sorgt dafür, dass Datenpunkte in einer Datei / Datenbank gesichert werden.

          @olis sagte in Anfänger Fragen - Log wird geflutet und Fehlererkennung:

          In Zeile 16 ist "TemperaturSensor1neu" rot unterstrichen.

          Wenn getState("i2c.0.0x76.temperature").val eine Zahl liefert (keinen String), sollte man es ignorieren.

          Anmerkung: Man fragt in ioBroker keine Werte per Intervall ab, sondern verwendet Datenpunkt-Trigger on(id, callback).

          O 1 Reply Last reply Reply Quote 0
          • O
            OliS @Homoran last edited by

            @homoran said in Anfänger Fragen - Log wird geflutet und Fehlererkennung:

            @olis sagte in Anfänger Fragen - Log wird geflutet und Fehlererkennung:

            durch irgendwelche Einträge

            die müsste man schon kennen, um helfen zu können

            Im Prinzip sind es Einträge die ich mal mit console.log angelegt habe, aber wieder gelöscht habe. Also ich lege zum Debuggen zB console.log("Starte auslesen)"; an , wenn es funktioniert hat lösche ich das raus und im Log erscheint es trotzdem noch im ursprünglichen Zyklus.

            wie ist der Wert von
            @olis sagte in Anfänger Fragen - Log wird geflutet und Fehlererkennung:

            i2c.0.0x76.temperature

            Sollte ein Float sein und wird auch als z.B. 17.2 auf der Console angegeben.

            Homoran 1 Reply Last reply Reply Quote 0
            • O
              OliS @paul53 last edited by

              @paul53 said in Anfänger Fragen - Log wird geflutet und Fehlererkennung:

              @olis sagte: Wo speicher ich am besten Werte die auch nach einem Neustart vorhanden sein sollen?

              In Datenpunkten. ioBroker sorgt dafür, dass Datenpunkte in einer Datei / Datenbank gesichert werden.

              @olis sagte in Anfänger Fragen - Log wird geflutet und Fehlererkennung:

              In Zeile 16 ist "TemperaturSensor1neu" rot unterstrichen.

              Wenn getState("i2c.0.0x76.temperature").val eine Zahl liefert (keinen String), sollte man es ignorieren.

              Anmerkung: Man fragt in ioBroker keine Werte per Intervall ab, sondern verwendet Datenpunkt-Trigger on(id, callback).

              Ok danke für die Info.
              Der Sensor wird über einen Adapter ausgelesen und der liefert alle 60 Sekunden ein Ergebnis. Später will ich evtl. den Intervall ganz weglassen - nur zum ausprobieren ist mir der Ablauf dann zu schnell 😉
              Werde ich mir aber auch noch anschauen (wenn der Rest mal läuft).

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

                @olis sagte in Anfänger Fragen - Log wird geflutet und Fehlererkennung:

                im Log erscheint es trotzdem noch im ursprünglichen Zyklus.

                und was steht dann da genau?

                O 1 Reply Last reply Reply Quote 0
                • O
                  OliS @Homoran last edited by OliS

                  @homoran said in Anfänger Fragen - Log wird geflutet und Fehlererkennung:

                  @olis sagte in Anfänger Fragen - Log wird geflutet und Fehlererkennung:

                  im Log erscheint es trotzdem noch im ursprünglichen Zyklus.

                  und was steht dann da genau?

                  Aktuell zB:
                  11:42:12.599 info javascript.0 (14688) script.js.aFeuchteSensor1: 17.2

                  die Ausgabe des Wertes ist aber gelöscht bzw. das ganze Script besteht aktuell nur aus der Variablendeklaration.

                  Nach einem Neustart des ioBroker ist das Problem weg. Was auch komisch ist: sind alle Scripte gestoppt kommt trotzdem noch ein Eintrag ins Log?

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

                    @olis sagte in Anfänger Fragen - Log wird geflutet und Fehlererkennung:

                    Aktuell zB:
                    11:42:12.599 info javascript.0 (14688) script.js.aFeuchteSensor1: 17.2

                    das ist aber doch nicht alles?
                    oder war das der Wert des beobachteten States?

                    @olis sagte in Anfänger Fragen - Log wird geflutet und Fehlererkennung:

                    Nach einem Neustart des ioBroker ist das Problem weg.

                    Bleibt das jetzt so?

                    @olis sagte in Anfänger Fragen - Log wird geflutet und Fehlererkennung:

                    sind alle Scripte gestoppt kommt trotzdem noch ein Eintrag ins Log?

                    wenn das z.B. in einem nicht gestoppten intervall läuft

                    O 1 Reply Last reply Reply Quote 0
                    • O
                      OliS @Homoran last edited by

                      @homoran said in Anfänger Fragen - Log wird geflutet und Fehlererkennung:

                      @olis sagte in Anfänger Fragen - Log wird geflutet und Fehlererkennung:

                      Aktuell zB:
                      11:42:12.599 info javascript.0 (14688) script.js.aFeuchteSensor1: 17.2

                      das ist aber doch nicht alles?
                      oder war das der Wert des beobachteten States?

                      @olis sagte in Anfänger Fragen - Log wird geflutet und Fehlererkennung:

                      Nach einem Neustart des ioBroker ist das Problem weg.

                      Bleibt das jetzt so?

                      @olis sagte in Anfänger Fragen - Log wird geflutet und Fehlererkennung:

                      sind alle Scripte gestoppt kommt trotzdem noch ein Eintrag ins Log?

                      wenn das z.B. in einem nicht gestoppten intervall läuft

                      So aktueller Stand:

                      Ich hab den Intervall entfernt und mit ID Callback gearbeitet. Einziger "Nachteil", es wird auch ausgeführt, wenn alle 60 Sekunden der Adapter neue Werte einliest - ohne Änderung. Stört aber nicht und ich weiß man könnte es noch anpassen, aber das kommt dann beim aufhübschen.

                      Zum Log:
                      alle Scripte waren gestoppt und es kamen trotzdem neue Werte im Log. Auch wenn die Zeile vorher komplett gelöscht wurde inkl. speichern und Neustart.
                      ABER nicht reproduzierbar! Ich konnte also auch Werte ausgeben, die Zeile löschen und es war dann auch gelöscht.
                      🤷‍♂️

                      Danke für eure Mühe und die hilfreichen Tipps!
                      Jetzt heißt es auf Hardware warten 🙂

                      Viele Grüße

                      Homoran paul53 2 Replies Last reply Reply Quote 0
                      • Homoran
                        Homoran Global Moderator Administrators @OliS last edited by

                        @olis sagte in Anfänger Fragen - Log wird geflutet und Fehlererkennung:

                        Ich konnte also auch Werte ausgeben, die Zeile löschen und es war dann auch gelöscht.

                        Dann lief da kein aktuelles Intervall, bei den andern ggf. ein mehrfach gestartetes Intervall, ohne dass es vor dem nächsten Aufruf gestoppt war

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

                          @olis sagte: Einziger "Nachteil", es wird auch ausgeführt, wenn alle 60 Sekunden der Adapter neue Werte einliest - ohne Änderung.

                          on("i2c.0.0x76.temperature", function(dp) {
                          

                          triggert nur, wenn sich der Temperaturwert ändert.

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

                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          745
                          Online

                          31.8k
                          Users

                          80.0k
                          Topics

                          1.3m
                          Posts

                          3
                          11
                          591
                          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