Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. HttpGet Balkonkraftwerk => Nachts Errors in Protokoll

    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

    HttpGet Balkonkraftwerk => Nachts Errors in Protokoll

    This topic has been deleted. Only users with topic management privileges can see it.
    • Samson71
      Samson71 Global Moderator @fichtenmoped82 last edited by

      @fichtenmoped82
      Wie ist der Wechselrichter angeschlossen? Falls per Steckdose dann eine einfache Messsteckdose davor und die erste Leistung als Auslöser für den Beginn der Abfrage nehmen.

      F 1 Reply Last reply Reply Quote 0
      • OliverIO
        OliverIO @fichtenmoped82 last edited by

        @fichtenmoped82

        Wahrscheinlich ist die Fehler Ausgabe direkt in HTTPget im JavaScript Adapter eingebaut worden.
        https://github.com/ioBroker/ioBroker.javascript/blob/840d03855636c4271971afc202532d008c22d264/lib/sandbox.js#L1263

        Im Zweifel, wahrscheinlich nur wenn du axios direkt verwendest.

        Du kannst ja ml ein issue anlegen. Evtl. wird eine Option eingeführt
        Bei der man diese fehlerausgabe unterdrücken kann und man selbst err auswerten muss.

        F 1 Reply Last reply Reply Quote 0
        • F
          fichtenmoped82 @Samson71 last edited by

          @samson71 Danke für den Vorschlag: Ja, so einen ähnlichen Workaround mache ich ja bereits mit dem Lichtsensor. Derzeit habe ich dort keine Steckdose mit Leistungsmessung angeschlossen.

          Ich hatte mich allerdings gefragt, ob es eventuell eine elegante codebasierte Lösung statt eines Workarounds gibt.

          OliverIO Samson71 2 Replies Last reply Reply Quote 0
          • OliverIO
            OliverIO @fichtenmoped82 last edited by

            @fichtenmoped82

            Also besser ist natürlich die Ursache abzustellen, da du aber nichts dazu geschrieben hast, gehe ich davon aus, dass du weißt, warum das Gerät irgendwann nachts nicht erreichbar ist,
            Das ist grundsätzlich schon okay Ist wenn dieser entsteht, du ihn aber nicht im log stehen haben möchtest.

            1 Reply Last reply Reply Quote 0
            • F
              fichtenmoped82 @OliverIO last edited by

              @oliverio Danke, der Weg mit dem Issue und der Option wäre vermutlich eine Möglichkeit.

              Axios direkt zu verwenden übersteigt vermutlich meine Möglichkeiten 😉

              OliverIO 1 Reply Last reply Reply Quote 0
              • Samson71
                Samson71 Global Moderator @fichtenmoped82 last edited by

                @fichtenmoped82
                Code kann ggf. die Meldung ausschalten. Das wäre die Richtung von @OliverIO .
                Ein stoppen des sinnlosen Traktierens des WR mit Abfragen während der Nacht wirst Du damit nicht erreichen. Ich würde eher das Unterbinden als Wert auf das Ausschalten der "hässlichen" Fehlermeldungen zu legen. Das ist doch nur Kosmetik und behebt das Problem der unnötigen/sinnlosen Abfrage nicht.

                F 1 Reply Last reply Reply Quote 0
                • F
                  fichtenmoped82 @Samson71 last edited by

                  Ok danke Euch, dann nutze ich den Lichtsensor weiter um die Abfragen nur dann durchzuführen, wenn der Lichteinfall den Wechselrichter versorgt und er erreichbar ist.

                  M 1 Reply Last reply Reply Quote 0
                  • OliverIO
                    OliverIO @fichtenmoped82 last edited by

                    @fichtenmoped82

                    HTTPget verwendet axios und reicht die Optionen weitgehend 1:1 durch.

                    https://axios-http.com/docs/example

                    MartinP 1 Reply Last reply Reply Quote 0
                    • MartinP
                      MartinP @OliverIO last edited by

                      Klammern könnte man das dadurch, dass man den Wechselrichter nur anspricht, wenn er per Ping erreichbar ist..

                      Samson71 1 Reply Last reply Reply Quote 0
                      • Samson71
                        Samson71 Global Moderator @MartinP last edited by

                        @martinp sagte in HttpGet Balkonkraftwerk => Nachts Errors in Protokoll:

                        dass man den Wechselrichter nur anspricht, wenn er per Ping erreichbar ist..

                        Auf die Idee kam er in seinem Eröffnungspost auch schon selber.

                        @fichtenmoped82 sagte in HttpGet Balkonkraftwerk => Nachts Errors in Protokoll:

                        Ist aber genauso wie ein vorheriger Ping o.ä. auf den Webserver irgendwie keine schöne Lösung...

                        1 Reply Last reply Reply Quote 0
                        • M
                          MCU @fichtenmoped82 last edited by

                          @fichtenmoped82 Versuche mal das? Timeout abfangen

                          httpGet('http://192.168.178.58:8050/getOutputData', { timeout: 2000 }, (err, response) => {
                              if (err) {
                                  if (err.code === 'ETIMEDOUT') {
                                      // Prüfe Bedingungen, die Anzeige willst du ja nicht
                                      // console.error("Timeout-Fehler: Die Anfrage hat zu lange gedauert.");
                                  } else {
                                      console.error("HTTP-Fehler:", err.message);
                                  }
                                  // Setze den Zustand auf 0 bei Fehler
                                  setState('0_userdata.0.Balkonkraftwerk.Current_Combined_Power_W' /*Current Combined Power W*/, 0);
                              } else if (response.statusCode == 200) {
                                  try {
                                      const resObj = JSON.parse(response.data);
                                      setState('0_userdata.0.Balkonkraftwerk.Current_Combined_Power_W' /*Current Combined Power W*/, resObj.data.p1 + resObj.data.p2);
                                  } catch (parseError) {
                                      console.error("JSON-Parse-Fehler:", parseError.message);
                                      // Setze den Zustand auf 0 bei einem Parse-Fehler
                                      setState('0_userdata.0.Balkonkraftwerk.Current_Combined_Power_W' /*Current Combined Power W*/, 0);
                                  }
                              } else {
                                  console.error(`HTTP-Fehler: Statuscode ${response.statusCode}`);
                                  // Setze den Zustand auf 0 bei unerwartetem Statuscode
                                  setState('0_userdata.0.Balkonkraftwerk.Current_Combined_Power_W' /*Current Combined Power W*/, 0);
                              }
                          });
                          
                          
                          F 1 Reply Last reply Reply Quote 0
                          • F
                            fichtenmoped82 @MCU last edited by fichtenmoped82

                            @mcu Danke dafür, aber bei "err" handelt es sich bei mir lediglich um einen Datentyp String. Vielleicht hast Du noch eine ältere Codebasis (?) des JS-Controllers? Bin bei Version 7.0.6. Der Code funktioniert also in der Form bei mir so nicht. Ich vermute aber, dass das keinen Unterschied machen wird.

                            Hintergrund:

                            Der störende Logeintrag wird meines Verständnisses nach VOR dem Ausführen der Callback-Funktion (alles innerhalb der geschweiften Klammern ab "=>" { ... Callbackfunktion ... }" erzeugt. Dein Vorschlag zielt darauf ab, innerhalb der Callback-Funktion das Fehlerhandling noch etwas detaillierter durchzuführen, aber da ist der Logeintrag leider bereits erzeugt worden...

                            O 1 Reply Last reply Reply Quote 0
                            • O
                              opöl @fichtenmoped82 last edited by opöl

                              @fichtenmoped82 ,

                              bei einer ähnlichen Fragestellung habe ich den Radar Adapter zu Hilfe genommen.
                              Damit können Geräte (der WR in Deinem Fall) auf Anwesenheit überwacht werden. Dann kannst Du die HTTP Abfrage gegen den WR nur ausführen, wenn Radar für den WR ein „true“ in den zugehörigen DP schreibt.
                              In etwa so, wie @MartinP weiter oben schreibt, nur ohne Ping. Spart neben den Log Einträgen auch noch Rechenleistung -;)

                              Gruß

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

                              Support us

                              ioBroker
                              Community Adapters
                              Donate

                              626
                              Online

                              31.9k
                              Users

                              80.1k
                              Topics

                              1.3m
                              Posts

                              6
                              14
                              544
                              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