Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

  1. ioBroker Community Home
  2. Deutsch
  3. Praktische Anwendungen (Showcase)
  4. [Linux Shell-Skript] WLAN-Wetterstation

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.2k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.9k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.3k

[Linux Shell-Skript] WLAN-Wetterstation

Geplant Angeheftet Gesperrt Verschoben Praktische Anwendungen (Showcase)
linuxshell-scriptwetterstationwlan-wetterstation
5.7k Beiträge 152 Kommentatoren 3.8m Aufrufe 134 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • SBorgS SBorg

    So ganz tun ich das auch ned verstanden...

    Ich habe jetzt nochmal alles gelesen und endlich mal den Part wieder gefunden. Also Noppe, es soll der relative Druck sein.
    Habe ich jetzt geändert:
    Bild 004.png
    Bild 005.png

    Soweit so gut...
    Warum muss ich aber nun für den absoluten (=mein Aufstellungsort) noch einen Wert hinzuaddieren? Eigentlich muss ich den doch abziehen, da mit der Höhe der Luftdruck sinkt (ich habe noch keinen Negativwert probiert). Eigentlich unlogisch, da wohl mehr Menschen über dem Meeresspiegel leben werden als unter ihm.

    Unabhängig von Awekas verstehe ich aber auch gerade nicht (die Korrekturrechnung stammt nicht von Awekas):
    Wenn ich aber meine 185 / 8 teile, stimmen die 23 als Korrekturwert mit den gemessenen meiner Station aber auch nicht?
    Bild 006.png
    8hPa Unterschied x 8 = 64 Meter ÜNN (ich lebe aber auf 185m)


    *EDIT*
    Ok, addieren habe ich nu auch verstanden. Die Sensoren sind auf Meeresspiegelhöhe kalibriert (was ja auch Sinn ergibt). Von daher messen sie am Aufstellungsort immer einen "falschen" Luftdruck und man muss eben den Korrekturwert für die Höhe eingeben. Also habe ich meine mal ordnungsgemäß um 23 hPa nach oben gesetzt...

    NegaleinN Offline
    NegaleinN Offline
    Negalein
    Global Moderator
    schrieb am zuletzt editiert von Negalein
    #4381

    @sborg

    von wo holt er sich javascript.0.Wetterstation.Regen_Tag?

    Durch Stromausfall heute um 12:30 steht jetzt in javascript.0.Wetterstation.Regen_Tag der Wert von gestern.
    Natürlich dann auch in Awekas.

    Kann ich den irgendwo editieren?
    In Awekas gehts, wird aber dann natürlich gleich wieder überschrieben.


    Edit: konnte den Wert mit der Windows-App WeatherSmart for WiFi editieren und in die Wetterstation (Display) neu schreiben!!

    ° Node.js: 20.17.0 NPM: 10.8.2
    ° Proxmox, Ubuntu 22.04.3 LTS
    ° Fixer ---> iob fix

    SBorgS 1 Antwort Letzte Antwort
    0
    • V viper4iob

      @sborg
      Ich habs jetzt auch einfach so gemacht.
      Die Logik von AWEKAS verstehe ich nicht so ganz, aber es funktioniert.
      Vielleicht kannst du ja im README einen Hinweis für den AWEKAS Upload hinterlegen, dass man das dort zwingend angeben muss, damit der Wert stimmt. Und damit ist es erst mal erledigt.

      Ich musste am Anfang, als ich die Wetterstation in Betrieb genommen habe, auch diesen Wert manuell anpassen, weil default der relative Wert dem absoluten entsprochen hat.
      Genau den gleichen Diffenrenz-Wert habe ich jetzt einfach bei AWEKAS auch eingetragen.
      Ich hatte auch die Logik mit Höhe geteilt durch 8 angewendet, musste es aber nochmal etwas anpassen, weil mir anderen Quellen von Wetterdaten eine leichte Abweichung angezeigt haben.
      Ich bin auf etwa 320m, durch 8 ist 40 hPa Differenz. Aktuell nutze ich 37,5 und das haut im Vergleich mit anderen Quellen ungefähr hin, auch jetzt mit den Vergleichswerten, die man in AWEKAS anzeigen lassen kann.

      NegaleinN Offline
      NegaleinN Offline
      Negalein
      Global Moderator
      schrieb am zuletzt editiert von
      #4382

      @viper4iob sagte in [Linux Shell-Skript] WLAN-Wetterstation:

      Die Logik von AWEKAS verstehe ich nicht so ganz, aber es funktioniert.

      doch, die Logik passt schon.

      Es wird der Absolute übertragen.
      Wichtig ist aber auch der Relative (für Wetterdienste).

      Ich muss noch forschen, wie ich beide angezeigt bekomm.
      Bei meinem Cousin zB
      3e39dda0-51fc-4f7a-8db7-2e0b17af07f1-image.png

      ° Node.js: 20.17.0 NPM: 10.8.2
      ° Proxmox, Ubuntu 22.04.3 LTS
      ° Fixer ---> iob fix

      1 Antwort Letzte Antwort
      0
      • NegaleinN Negalein

        @sborg

        von wo holt er sich javascript.0.Wetterstation.Regen_Tag?

        Durch Stromausfall heute um 12:30 steht jetzt in javascript.0.Wetterstation.Regen_Tag der Wert von gestern.
        Natürlich dann auch in Awekas.

        Kann ich den irgendwo editieren?
        In Awekas gehts, wird aber dann natürlich gleich wieder überschrieben.


        Edit: konnte den Wert mit der Windows-App WeatherSmart for WiFi editieren und in die Wetterstation (Display) neu schreiben!!

        SBorgS Offline
        SBorgS Offline
        SBorg
        Forum Testing Most Active
        schrieb am zuletzt editiert von
        #4383

        @negalein sagte in [Linux Shell-Skript] WLAN-Wetterstation:

        @sborg

        von wo holt er sich javascript.0.Wetterstation.Regen_Tag?

        Hat sich zwar erledigt, aber der kommt so direkt von der Station/Gateway.

        @negalein sagte in [Linux Shell-Skript] WLAN-Wetterstation:

        Ich muss noch forschen, wie ich beide angezeigt bekomm.

        Ich glaube nicht, dass du da etwas einstellen kannst (ich kenne zumindest nix, nur Luftdruck pauschal AN/AUS).
        Im Datenstring gibt es zwar diese Parameter dafür "&absbaromin=x.xx&baromin=x.xx", der "baromin" (relative) funktioniert auch, der "absbaromin" wird aber kpl. ignoriert (wird deswegen auch in der Beta nicht geschickt).
        Kannst ihn mal testweise bei dir aktivieren: fast am Ende der *.sub wird der AWEKAS-String gebaut ("local AWEKAS_URL=...").
        Füge da mal vor if [ $debug == "true" ]; then in eine neue Zeile ein:

         AWEKAS_URL+="&absbaromin=${BAROMABSIN}"
        

        Speichern und Service neu starten, vielleicht klappt es ja bei dir ;)

        LG SBorg ( SBorg auf GitHub)
        Projekte: Lebensmittelwarnung.de | WLAN-Wetterstation | PimpMyStation

        G 1 Antwort Letzte Antwort
        0
        • H Homer

          @boronsbruder
          Da bin ich nicht an meiner Grenze, sondern darüber hinaus :anguished:: Kann ich nicht umsetzen, verstehe ich leider nicht :face_with_rolling_eyes:

          Was muss ich tun für "im "docker run"-Commando einen zusätzlichen Eintrag in der /etc/hosts anlegen"?

          H.

          BoronsbruderB Offline
          BoronsbruderB Offline
          Boronsbruder
          schrieb am zuletzt editiert von
          #4384

          @homer

          --add-host iobrokerNAS1:xxx.xxx.xxx.xxx
          

          wobei xxx.xxx.xxx.xxx die IP deines Containers ist...

          Die Frage würde ich wenn dann eher mal hier stellen, da das in den Bereich Docker auf Synology gehört?

          1 Antwort Letzte Antwort
          0
          • SBorgS SBorg

            @negalein sagte in [Linux Shell-Skript] WLAN-Wetterstation:

            @sborg

            von wo holt er sich javascript.0.Wetterstation.Regen_Tag?

            Hat sich zwar erledigt, aber der kommt so direkt von der Station/Gateway.

            @negalein sagte in [Linux Shell-Skript] WLAN-Wetterstation:

            Ich muss noch forschen, wie ich beide angezeigt bekomm.

            Ich glaube nicht, dass du da etwas einstellen kannst (ich kenne zumindest nix, nur Luftdruck pauschal AN/AUS).
            Im Datenstring gibt es zwar diese Parameter dafür "&absbaromin=x.xx&baromin=x.xx", der "baromin" (relative) funktioniert auch, der "absbaromin" wird aber kpl. ignoriert (wird deswegen auch in der Beta nicht geschickt).
            Kannst ihn mal testweise bei dir aktivieren: fast am Ende der *.sub wird der AWEKAS-String gebaut ("local AWEKAS_URL=...").
            Füge da mal vor if [ $debug == "true" ]; then in eine neue Zeile ein:

             AWEKAS_URL+="&absbaromin=${BAROMABSIN}"
            

            Speichern und Service neu starten, vielleicht klappt es ja bei dir ;)

            G Offline
            G Offline
            Gezi70
            schrieb am zuletzt editiert von
            #4385

            @sborg Ich habe die neue Version aus dem Stable laufen. Kann es sein, dass die Tagesminimum- und -maximumwerte nicht mehr richtig angezeigt werden?

            Screenshot (7).jpg

            NegaleinN SBorgS 2 Antworten Letzte Antwort
            0
            • G Gezi70

              @sborg Ich habe die neue Version aus dem Stable laufen. Kann es sein, dass die Tagesminimum- und -maximumwerte nicht mehr richtig angezeigt werden?

              Screenshot (7).jpg

              NegaleinN Offline
              NegaleinN Offline
              Negalein
              Global Moderator
              schrieb am zuletzt editiert von
              #4386

              @gezi70 sagte in [Linux Shell-Skript] WLAN-Wetterstation:

              dass die Tagesminimum- und -maximumwerte nicht mehr richtig angezeigt werden?

              funktioniert hier

              b03a4593-b6d6-4d81-bb97-42c6cd9ccc44-image.png

              ° Node.js: 20.17.0 NPM: 10.8.2
              ° Proxmox, Ubuntu 22.04.3 LTS
              ° Fixer ---> iob fix

              1 Antwort Letzte Antwort
              0
              • G Gezi70

                @sborg Ich habe die neue Version aus dem Stable laufen. Kann es sein, dass die Tagesminimum- und -maximumwerte nicht mehr richtig angezeigt werden?

                Screenshot (7).jpg

                SBorgS Offline
                SBorgS Offline
                SBorg
                Forum Testing Most Active
                schrieb am zuletzt editiert von
                #4387

                @gezi70 Die Daten werden aus der InfluxDB ausgelesen. Ev. lief aus irgendeinem Grund genau vor einem Jahr das Skript, der ioB... mal länger nicht? --> dann wurde nichts aufgezeichnet und er kann auch nix auslesen

                Falls du Grafana nutzt (bzw. es jetzt immer noch nicht funktioniert) scroll doch mal ein Jahr backwards ob da Temperaturmesswerte für "Außen" vorliegen.

                LG SBorg ( SBorg auf GitHub)
                Projekte: Lebensmittelwarnung.de | WLAN-Wetterstation | PimpMyStation

                G 1 Antwort Letzte Antwort
                0
                • SBorgS SBorg

                  @gezi70 Die Daten werden aus der InfluxDB ausgelesen. Ev. lief aus irgendeinem Grund genau vor einem Jahr das Skript, der ioB... mal länger nicht? --> dann wurde nichts aufgezeichnet und er kann auch nix auslesen

                  Falls du Grafana nutzt (bzw. es jetzt immer noch nicht funktioniert) scroll doch mal ein Jahr backwards ob da Temperaturmesswerte für "Außen" vorliegen.

                  G Offline
                  G Offline
                  Gezi70
                  schrieb am zuletzt editiert von
                  #4388

                  @sborg da liegt nix, ich musste das ganze System neu aufsetzen. Mir geht es eigentlich "nur" um die Tages min- und max Werte. Wann werden diese Punkte befüllt? Ich habe ständig in beiden Datenpunkten gleiche Werte: und zwar den des Maximums. Ist mir gestern aufgefallen, als meine Frau meinte, dass es früh minus elf Grad hatte, aber die Werte auf meiner Vis immer das gleiche anzeigen: das jeweilige Maximum des entsprechenden Zeitpunktes. Auch im Skript, bzw. halt in den Objekten. Ich habe auch alles gestern Abend nochmal gelöscht und per Hand frisch aus dem Stable angelegt.

                  SBorgS 1 Antwort Letzte Antwort
                  0
                  • G Gezi70

                    @sborg da liegt nix, ich musste das ganze System neu aufsetzen. Mir geht es eigentlich "nur" um die Tages min- und max Werte. Wann werden diese Punkte befüllt? Ich habe ständig in beiden Datenpunkten gleiche Werte: und zwar den des Maximums. Ist mir gestern aufgefallen, als meine Frau meinte, dass es früh minus elf Grad hatte, aber die Werte auf meiner Vis immer das gleiche anzeigen: das jeweilige Maximum des entsprechenden Zeitpunktes. Auch im Skript, bzw. halt in den Objekten. Ich habe auch alles gestern Abend nochmal gelöscht und per Hand frisch aus dem Stable angelegt.

                    SBorgS Offline
                    SBorgS Offline
                    SBorg
                    Forum Testing Most Active
                    schrieb am zuletzt editiert von
                    #4389

                    @gezi70 Beide minmax ("heute" und "letzte 24h") werden turnusmäßig alle volle 15 Minuten (xx:00 Uhr, xx:15...xx:45 Uhr) erzeugt.
                    Da beides eine Influx-Abfrage ist klemmt es womöglich da bei dir: loggen der Temperatur bzw. Zugang zur InfluxDB (IP, Port, User, Passwort).

                    LG SBorg ( SBorg auf GitHub)
                    Projekte: Lebensmittelwarnung.de | WLAN-Wetterstation | PimpMyStation

                    G XxJooOX 2 Antworten Letzte Antwort
                    0
                    • SBorgS SBorg

                      @gezi70 Beide minmax ("heute" und "letzte 24h") werden turnusmäßig alle volle 15 Minuten (xx:00 Uhr, xx:15...xx:45 Uhr) erzeugt.
                      Da beides eine Influx-Abfrage ist klemmt es womöglich da bei dir: loggen der Temperatur bzw. Zugang zur InfluxDB (IP, Port, User, Passwort).

                      G Offline
                      G Offline
                      Gezi70
                      schrieb am zuletzt editiert von
                      #4390

                      @sborg
                      Ich hatte wahrscheinlich einen größeren Fehler in der influxdb. Die und Grafana habe ich gestern abend vollständig platt gemacht und wieder aufgesetzt. Jetzt stimmen die Werte wieder. 😉 Der Hinweis auf die influxdb kam aber aus einem anderen Teil des Forums, ich hatte auch Probleme mit dem Backitup - Adapter. Da hing vermutlich noch das alte System mit drin.

                      1 Antwort Letzte Antwort
                      0
                      • SBorgS SBorg

                        @gezi70 Beide minmax ("heute" und "letzte 24h") werden turnusmäßig alle volle 15 Minuten (xx:00 Uhr, xx:15...xx:45 Uhr) erzeugt.
                        Da beides eine Influx-Abfrage ist klemmt es womöglich da bei dir: loggen der Temperatur bzw. Zugang zur InfluxDB (IP, Port, User, Passwort).

                        XxJooOX Offline
                        XxJooOX Offline
                        XxJooO
                        schrieb am zuletzt editiert von XxJooO
                        #4391

                        @sborg,

                        hallo, nach der Neuinstallation habe ich gerade eben mal das Log-File aus der Nacht angesehen, um zu schauen, was wetterstation-statistik.js so meldet und finde leider das hier:

                        2023-01-22 01:03:00.022  - info: javascript.0 (572) script.js.DasWetter.Wetter_Statistik: Auswertung durchgeführt...
                        2023-01-22 01:03:00.165  - warn: influxdb.0 (557) Error in query "select * FROM "0_userdata.0.Wetterstation.Aussentemperatur" WHERE time >= 1674255600000000000 AND time <= 1674341999000000000": HttpError: error @1:1-1:7: undefined identifier select
                        
                        error @1:10-1:14: undefined identifier FROM
                        
                        error @1:61-1:66: undefined identifier WHERE
                        
                        error @1:67-1:71: (v: A) => time (function) is not Equatable
                        
                        error @1:67-1:71: (v: A) => time (function) is not Comparable
                        
                        error @1:95-1:98: undefined identifier AND
                        
                        error @1:99-1:103: (v: A) => time (function) is not Equatable
                        
                        error @1:99-1:103: (v: A) => time (function) is not Comparable
                        2023-01-22 01:03:00.171  - warn: influxdb.0 (557) Error in query " select * FROM "0_userdata.0.Wetterstation.Wind_max" WHERE time >= 1674255600000000000 AND time <= 1674341999000000000": HttpError: error @1:2-1:8: undefined identifier select
                        
                        error @1:11-1:15: undefined identifier FROM
                        
                        error @1:54-1:59: undefined identifier WHERE
                        
                        error @1:60-1:64: (v: A) => time (function) is not Equatable
                        
                        error @1:60-1:64: (v: A) => time (function) is not Comparable
                        
                        error @1:88-1:91: undefined identifier AND
                        
                        error @1:92-1:96: (v: A) => time (function) is not Equatable
                        
                        error @1:92-1:96: (v: A) => time (function) is not Comparable
                        2023-01-22 01:03:00.176  - warn: influxdb.0 (557) Error in query " select * FROM "0_userdata.0.Wetterstation.Regen_Tag" WHERE time >= 1674255672000000000 AND time <= 1674341999000000000": HttpError: error @1:2-1:8: undefined identifier select
                        
                        error @1:11-1:15: undefined identifier FROM
                        
                        error @1:55-1:60: undefined identifier WHERE
                        
                        error @1:61-1:65: (v: A) => time (function) is not Equatable
                        
                        error @1:61-1:65: (v: A) => time (function) is not Comparable
                        
                        error @1:89-1:92: undefined identifier AND
                        
                        error @1:93-1:97: (v: A) => time (function) is not Equatable
                        
                        error @1:93-1:97: (v: A) => time (function) is not Comparable
                        2023-01-22 01:03:00.177  - error: influxdb.0 (557) queries: Error: 3 Error happened while processing 3 queries
                        2023-01-22 01:03:00.185  - error: javascript.0 (572) script.js.DasWetter.Wetter_Statistik: Fehler beim Lesen der InfluxDB: Invalid call
                        2023-01-22 01:03:00.186  - warn: javascript.0 (572) States system pmessage io.messagebox.system.adapter.javascript.0 {"command":"query","message":{"result":[],"error":"Invalid call"},"from":"system.adapter.influxdb.0","callback":{"message":"select * FROM \"0_userdata.0.Wetterstation.Aussentemperatur\" WHERE time >= 1674255600000000000 AND time <= 1674341999000000000; select * FROM \"0_userdata.0.Wetterstation.Wind_max\" WHERE time >= 1674255600000000000 AND time <= 1674341999000000000; select * FROM \"0_userdata.0.Wetterstation.Regen_Tag\" WHERE time >= 1674255672000000000 AND time <= 1674341999000000000","id":3,"ack":true,"time":1674345780022},"_id":13128843} Reduce of empty array with no initial value
                        2023-01-22 01:03:00.187  - warn: javascript.0 (572) TypeError: Reduce of empty array with no initial value
                           at Array.reduce (<anonymous>:null:null)
                           at Object.cb (script.js.DasWetter.Wetter_Statistik:184:43)
                           at change (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/build/lib/adapter/adapter.js:5291:71)
                           at Immediate._onImmediate (/opt/iobroker/node_modules/@iobroker/db-states-redis/lib/states/statesInRedisClient.js:322:37)
                           at processImmediate (node:internal/timers:466:21)
                        
                        

                        Kurzer Hinweis, woher das kommt?

                        Geloggt wird ja.

                        Screenshot 2023-01-22 154852.jpg

                        Auch Regen_Tag wird geloggt. Hat das mit influxdb in der Version 2 zu tun? Kann ich das irgendwie prüfen?

                        Vielen dank!!!

                        Jo

                        ioBroker auf Intel NUC - Homematic CCU3/pivCCU auf Raspi 3B+

                        SBorgS 1 Antwort Letzte Antwort
                        0
                        • XxJooOX XxJooO

                          @sborg,

                          hallo, nach der Neuinstallation habe ich gerade eben mal das Log-File aus der Nacht angesehen, um zu schauen, was wetterstation-statistik.js so meldet und finde leider das hier:

                          2023-01-22 01:03:00.022  - info: javascript.0 (572) script.js.DasWetter.Wetter_Statistik: Auswertung durchgeführt...
                          2023-01-22 01:03:00.165  - warn: influxdb.0 (557) Error in query "select * FROM "0_userdata.0.Wetterstation.Aussentemperatur" WHERE time >= 1674255600000000000 AND time <= 1674341999000000000": HttpError: error @1:1-1:7: undefined identifier select
                          
                          error @1:10-1:14: undefined identifier FROM
                          
                          error @1:61-1:66: undefined identifier WHERE
                          
                          error @1:67-1:71: (v: A) => time (function) is not Equatable
                          
                          error @1:67-1:71: (v: A) => time (function) is not Comparable
                          
                          error @1:95-1:98: undefined identifier AND
                          
                          error @1:99-1:103: (v: A) => time (function) is not Equatable
                          
                          error @1:99-1:103: (v: A) => time (function) is not Comparable
                          2023-01-22 01:03:00.171  - warn: influxdb.0 (557) Error in query " select * FROM "0_userdata.0.Wetterstation.Wind_max" WHERE time >= 1674255600000000000 AND time <= 1674341999000000000": HttpError: error @1:2-1:8: undefined identifier select
                          
                          error @1:11-1:15: undefined identifier FROM
                          
                          error @1:54-1:59: undefined identifier WHERE
                          
                          error @1:60-1:64: (v: A) => time (function) is not Equatable
                          
                          error @1:60-1:64: (v: A) => time (function) is not Comparable
                          
                          error @1:88-1:91: undefined identifier AND
                          
                          error @1:92-1:96: (v: A) => time (function) is not Equatable
                          
                          error @1:92-1:96: (v: A) => time (function) is not Comparable
                          2023-01-22 01:03:00.176  - warn: influxdb.0 (557) Error in query " select * FROM "0_userdata.0.Wetterstation.Regen_Tag" WHERE time >= 1674255672000000000 AND time <= 1674341999000000000": HttpError: error @1:2-1:8: undefined identifier select
                          
                          error @1:11-1:15: undefined identifier FROM
                          
                          error @1:55-1:60: undefined identifier WHERE
                          
                          error @1:61-1:65: (v: A) => time (function) is not Equatable
                          
                          error @1:61-1:65: (v: A) => time (function) is not Comparable
                          
                          error @1:89-1:92: undefined identifier AND
                          
                          error @1:93-1:97: (v: A) => time (function) is not Equatable
                          
                          error @1:93-1:97: (v: A) => time (function) is not Comparable
                          2023-01-22 01:03:00.177  - error: influxdb.0 (557) queries: Error: 3 Error happened while processing 3 queries
                          2023-01-22 01:03:00.185  - error: javascript.0 (572) script.js.DasWetter.Wetter_Statistik: Fehler beim Lesen der InfluxDB: Invalid call
                          2023-01-22 01:03:00.186  - warn: javascript.0 (572) States system pmessage io.messagebox.system.adapter.javascript.0 {"command":"query","message":{"result":[],"error":"Invalid call"},"from":"system.adapter.influxdb.0","callback":{"message":"select * FROM \"0_userdata.0.Wetterstation.Aussentemperatur\" WHERE time >= 1674255600000000000 AND time <= 1674341999000000000; select * FROM \"0_userdata.0.Wetterstation.Wind_max\" WHERE time >= 1674255600000000000 AND time <= 1674341999000000000; select * FROM \"0_userdata.0.Wetterstation.Regen_Tag\" WHERE time >= 1674255672000000000 AND time <= 1674341999000000000","id":3,"ack":true,"time":1674345780022},"_id":13128843} Reduce of empty array with no initial value
                          2023-01-22 01:03:00.187  - warn: javascript.0 (572) TypeError: Reduce of empty array with no initial value
                             at Array.reduce (<anonymous>:null:null)
                             at Object.cb (script.js.DasWetter.Wetter_Statistik:184:43)
                             at change (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/build/lib/adapter/adapter.js:5291:71)
                             at Immediate._onImmediate (/opt/iobroker/node_modules/@iobroker/db-states-redis/lib/states/statesInRedisClient.js:322:37)
                             at processImmediate (node:internal/timers:466:21)
                          
                          

                          Kurzer Hinweis, woher das kommt?

                          Geloggt wird ja.

                          Screenshot 2023-01-22 154852.jpg

                          Auch Regen_Tag wird geloggt. Hat das mit influxdb in der Version 2 zu tun? Kann ich das irgendwie prüfen?

                          Vielen dank!!!

                          Jo

                          SBorgS Offline
                          SBorgS Offline
                          SBorg
                          Forum Testing Most Active
                          schrieb am zuletzt editiert von
                          #4392

                          @xxjooo sagte in [Linux Shell-Skript] WLAN-Wetterstation:

                          Hat das mit influxdb in der Version 2 zu tun? Kann ich das irgendwie prüfen?

                          Schon selbst beantwortet ;)
                          V2 wird nicht supportet. Such mal hier im Thread, da müsste es zwei, drei Treffer geben wie man die Abfrage für InfluxDB V2 abändert, dann geht es wieder.

                          LG SBorg ( SBorg auf GitHub)
                          Projekte: Lebensmittelwarnung.de | WLAN-Wetterstation | PimpMyStation

                          1 Antwort Letzte Antwort
                          1
                          • SBorgS Offline
                            SBorgS Offline
                            SBorg
                            Forum Testing Most Active
                            schrieb am zuletzt editiert von
                            #4393

                            Da keine offensichtlichen Fehler aufgetreten sind:

                            Neues Release des Wetterstation WLAN-Skriptes auf GitHub V2.21.0

                            • + Support für AWEKAS
                            • ~ fix fehlende Regenwerte wenn nur der WS90 ohne weitere Außeneinheit benutzt wird / Issue #51

                            Wie immer zu finden im GitHub


                            Update-Routine von Vorgängerversion:

                            • aktuellen WS-Updater nutzen (Download falls älter als V2.12.1: wget -O ws_updater.sh https://raw.githubusercontent.com/SBorg2014/WLAN-Wetterstation/master/ws_updater.sh)
                            • ./ws_updater.sh im Installationsverzeichnis ausführen
                            • Menüpunkt "4" wählen und die Fragen beantworten
                            • wetterstation.js muss ebenfalls im JavaScript-Adapter ersetzt und einmalig ausgeführt werden (neuer Datenpunkt .Info.Awekas_at); bei aktivierter Rest-API wird der Datenpunkt automatisch im ioB angelegt (1)

                            (1) es empfiehlt sich danach den Simple-API-Adapter neu zu starten (entweder per WebIF oder einfach iob restart simple-api.0)


                            Update ist optional.

                            Die Release-Version ist nicht mit dem letzten Beta-Release identisch! Betatester tauschen bitte die ".sh" und ".sub" aus und restarten den Service.

                            LG SBorg ( SBorg auf GitHub)
                            Projekte: Lebensmittelwarnung.de | WLAN-Wetterstation | PimpMyStation

                            1 Antwort Letzte Antwort
                            3
                            • V viper4iob

                              @sborg
                              Ich habs jetzt auch einfach so gemacht.
                              Die Logik von AWEKAS verstehe ich nicht so ganz, aber es funktioniert.
                              Vielleicht kannst du ja im README einen Hinweis für den AWEKAS Upload hinterlegen, dass man das dort zwingend angeben muss, damit der Wert stimmt. Und damit ist es erst mal erledigt.

                              Ich musste am Anfang, als ich die Wetterstation in Betrieb genommen habe, auch diesen Wert manuell anpassen, weil default der relative Wert dem absoluten entsprochen hat.
                              Genau den gleichen Diffenrenz-Wert habe ich jetzt einfach bei AWEKAS auch eingetragen.
                              Ich hatte auch die Logik mit Höhe geteilt durch 8 angewendet, musste es aber nochmal etwas anpassen, weil mir anderen Quellen von Wetterdaten eine leichte Abweichung angezeigt haben.
                              Ich bin auf etwa 320m, durch 8 ist 40 hPa Differenz. Aktuell nutze ich 37,5 und das haut im Vergleich mit anderen Quellen ungefähr hin, auch jetzt mit den Vergleichswerten, die man in AWEKAS anzeigen lassen kann.

                              T Offline
                              T Offline
                              tritor
                              schrieb am zuletzt editiert von tritor
                              #4394

                              @viper4iob

                              wo gebe ich bei awekas die Differenz für den Luftdruck ein?

                              wobei ich mal davon ausgehe, daß zumindes die Differenz zwischen rel. und abs. Lufdruck bei mir ok ist.

                              Seehöhe: 194m
                              Rel. 1029.12 hPa
                              abs. 1005.52 hPa

                              Grüße
                              Gernot

                              Gernot

                              Host: i9 server Proxmox , Debian 12.0 for ioBroker
                              ioBroker: 7.7.19, Node.js: 22.21.1, NPM: 10.9.3, JS-controller: 7.0.7
                              Wetterstation: HP1000SEPro V1.9.0 Easeweather V1.7.0
                              Grafana 12.0.2 / InfluxDB 2.7.11

                              NegaleinN 1 Antwort Letzte Antwort
                              0
                              • T tritor

                                @viper4iob

                                wo gebe ich bei awekas die Differenz für den Luftdruck ein?

                                wobei ich mal davon ausgehe, daß zumindes die Differenz zwischen rel. und abs. Lufdruck bei mir ok ist.

                                Seehöhe: 194m
                                Rel. 1029.12 hPa
                                abs. 1005.52 hPa

                                Grüße
                                Gernot

                                NegaleinN Offline
                                NegaleinN Offline
                                Negalein
                                Global Moderator
                                schrieb am zuletzt editiert von
                                #4395

                                @tritor sagte in [Linux Shell-Skript] WLAN-Wetterstation:

                                wo gebe ich bei awekas die Differenz für den Luftdruck ein?

                                Mein Awekas
                                --> Benutzerdaten ändern
                                --> Wetterstation
                                a69d0084-5b74-46d6-bc98-067ed0643e03-image.png

                                ° Node.js: 20.17.0 NPM: 10.8.2
                                ° Proxmox, Ubuntu 22.04.3 LTS
                                ° Fixer ---> iob fix

                                1 Antwort Letzte Antwort
                                1
                                • SBorgS Offline
                                  SBorgS Offline
                                  SBorg
                                  Forum Testing Most Active
                                  schrieb am zuletzt editiert von
                                  #4396

                                  Neue Beta-Version des Wetterstation WLAN-Skriptes auf GitHub V2.22.0

                                  (Beta-Releases lassen sich nicht! über den ws_updater.sh installieren, nur die *.conf lässt sich mit dem ws_updater.beta ggf. patchen [s.u.])

                                  • + Support für Bresser Thermo-Hygro-7Ch-Sensor #7009999 / Issue #53

                                  Wie immer zu finden im GitHub


                                  Update-Routine:

                                  • wetterstation.sh, wetterstation.sub und ws_updater.beta (muss "ausführbar" sein chmod +x ws_updater.beta) ersetzen bzw. kopieren
                                  • wetterstation.js muss ebenfalls im JavaScript-Adapter ersetzt und einmalig ausgeführt werden (nur nötig wenn man auch einen entsprechenden Sensor der Firma Bresser im Einsatz hat) (1)
                                  • ./ws_updater.beta --patch im Installationsverzeichnis ausführen und ev. Hinweise beachten
                                  • nun mittels [sudo] systemctl restart wetterstation den Service neu starten

                                  (1) es empfiehlt sich danach den Simple-API-Adapter neu zu starten (entweder per WebIF oder einfach iob restart simple-api.0)


                                  Da es ein reines Funktions-Betarelease ist, ergibt der Einsatz dieser Version nur einen Vorteil wenn man auch Sensor/en der Firma Bresser nutzt. Trotzdem wäre ein Test nicht schlecht, da ich den Sensortyp nicht "einfach" hinzufügen konnte und weitere Änderungen vornehmen musste. Es könnte also durchaus sein, dass ich dabei eine andere Funktion oä. "gegrillt" habe (speziell Zusatz-Sensoren des Typs DP100) ;)

                                  LG SBorg ( SBorg auf GitHub)
                                  Projekte: Lebensmittelwarnung.de | WLAN-Wetterstation | PimpMyStation

                                  1 Antwort Letzte Antwort
                                  0
                                  • A Offline
                                    A Offline
                                    amiethaner
                                    schrieb am zuletzt editiert von Negalein
                                    #4397

                                    Servus zusammen!
                                    Bei mir läuft die Script Vers: 1.3.0
                                    In den Objekten für Werte Vorjahres_Monat steht bei mir überall {"ack":true}
                                    Aber erst seit heute. Die Januar Werte passten noch.
                                    Wenn ich aber unter Data 02/2022 schau, steht da alles soweit gut drin:

                                    [{"Tiefstwert":-7.77,"Hoechstwert":15.77,"Temp_Durchschnitt":3.6,"Max_Windboe":47.96,"Max_Regenmenge":8.6,"Regenmenge_Monat":78.1,"warme_Tage":0,"Sommertage":0,"heisse_Tage":0,"Frost_Tage":44,"kalte_Tage":39,"Eistage":1,"sehr_kalte_Tage":0}]
                                    

                                    Läuft hier iwas falsch, oder werden de Werte erst heute Nacht richtig berechnet/übernommen?

                                    SBorgS 1 Antwort Letzte Antwort
                                    0
                                    • A amiethaner

                                      Servus zusammen!
                                      Bei mir läuft die Script Vers: 1.3.0
                                      In den Objekten für Werte Vorjahres_Monat steht bei mir überall {"ack":true}
                                      Aber erst seit heute. Die Januar Werte passten noch.
                                      Wenn ich aber unter Data 02/2022 schau, steht da alles soweit gut drin:

                                      [{"Tiefstwert":-7.77,"Hoechstwert":15.77,"Temp_Durchschnitt":3.6,"Max_Windboe":47.96,"Max_Regenmenge":8.6,"Regenmenge_Monat":78.1,"warme_Tage":0,"Sommertage":0,"heisse_Tage":0,"Frost_Tage":44,"kalte_Tage":39,"Eistage":1,"sehr_kalte_Tage":0}]
                                      

                                      Läuft hier iwas falsch, oder werden de Werte erst heute Nacht richtig berechnet/übernommen?

                                      SBorgS Offline
                                      SBorgS Offline
                                      SBorg
                                      Forum Testing Most Active
                                      schrieb am zuletzt editiert von
                                      #4398

                                      @amiethaner sagte in [Linux Shell-Skript] WLAN-Wetterstation:

                                      Läuft hier iwas falsch, oder werden de Werte erst heute Nacht richtig berechnet/übernommen?

                                      Ja und nein ;)

                                      Für die aktuellen Daten neues JS anlegen (Datenverzeichnis ggf. anpassen [Zeile #1]) und einmalig ausführen, dann sollten die Daten da sein:

                                          const PRE_DP='0_userdata.0.Statistik.Wetter';  //Speicherort der Statistikdaten
                                          const monatsdatenpunkt='.Data.2022.02';        //.Data.Jahr.Monat
                                      
                                          
                                              let VorJahr = getState(PRE_DP+monatsdatenpunkt).val;
                                              VorJahr = JSON.parse(VorJahr.substring(1, VorJahr.length-1));
                                              
                                              setState(PRE_DP+'.Vorjahres_Monat.Tiefstwert', VorJahr.Tiefstwert, true);
                                              setState(PRE_DP+'.Vorjahres_Monat.Hoechstwert', VorJahr.Hoechstwert, true);
                                              setState(PRE_DP+'.Vorjahres_Monat.Temperatur_Durchschnitt', VorJahr.Temp_Durchschnitt, true); 
                                              setState(PRE_DP+'.Vorjahres_Monat.Max_Windboe', VorJahr.Max_Windboe, true); 
                                              setState(PRE_DP+'.Vorjahres_Monat.Max_Regenmenge', VorJahr.Max_Regenmenge, true);
                                              setState(PRE_DP+'.Vorjahres_Monat.Regenmenge_Monat', VorJahr.Regenmenge_Monat, true);
                                              setState(PRE_DP+'.Vorjahres_Monat.warme_Tage', VorJahr.warme_Tage, true);
                                              setState(PRE_DP+'.Vorjahres_Monat.Sommertage', VorJahr.Sommertage, true);
                                              setState(PRE_DP+'.Vorjahres_Monat.heisse_Tage', VorJahr.heisse_Tage, true);
                                              setState(PRE_DP+'.Vorjahres_Monat.Frost_Tage', VorJahr.Frost_Tage, true);
                                              setState(PRE_DP+'.Vorjahres_Monat.kalte_Tage', VorJahr.kalte_Tage, true);
                                              setState(PRE_DP+'.Vorjahres_Monat.Eistage', VorJahr.Eistage, true);
                                              setState(PRE_DP+'.Vorjahres_Monat.sehr_kalte_Tage', VorJahr.sehr_kalte_Tage, true);
                                              setState(PRE_DP + '.Vorjahres_Monat.Wuestentage', VorJahr.Wuestentage, true);
                                              setState(PRE_DP + '.Vorjahres_Monat.Tropennaechte', VorJahr.Tropennaechte, true);
                                              setState(PRE_DP + '.Vorjahres_Monat.Regentage', VorJahr.Regentage, true);
                                      

                                      Wenn das funktioniert hat die V1.3.1 von GitHub laden und nutzen.


                                      btw.: das müsste jeden betreffen, genereller Fehler

                                      LG SBorg ( SBorg auf GitHub)
                                      Projekte: Lebensmittelwarnung.de | WLAN-Wetterstation | PimpMyStation

                                      A BoronsbruderB 2 Antworten Letzte Antwort
                                      0
                                      • SBorgS SBorg

                                        @amiethaner sagte in [Linux Shell-Skript] WLAN-Wetterstation:

                                        Läuft hier iwas falsch, oder werden de Werte erst heute Nacht richtig berechnet/übernommen?

                                        Ja und nein ;)

                                        Für die aktuellen Daten neues JS anlegen (Datenverzeichnis ggf. anpassen [Zeile #1]) und einmalig ausführen, dann sollten die Daten da sein:

                                            const PRE_DP='0_userdata.0.Statistik.Wetter';  //Speicherort der Statistikdaten
                                            const monatsdatenpunkt='.Data.2022.02';        //.Data.Jahr.Monat
                                        
                                            
                                                let VorJahr = getState(PRE_DP+monatsdatenpunkt).val;
                                                VorJahr = JSON.parse(VorJahr.substring(1, VorJahr.length-1));
                                                
                                                setState(PRE_DP+'.Vorjahres_Monat.Tiefstwert', VorJahr.Tiefstwert, true);
                                                setState(PRE_DP+'.Vorjahres_Monat.Hoechstwert', VorJahr.Hoechstwert, true);
                                                setState(PRE_DP+'.Vorjahres_Monat.Temperatur_Durchschnitt', VorJahr.Temp_Durchschnitt, true); 
                                                setState(PRE_DP+'.Vorjahres_Monat.Max_Windboe', VorJahr.Max_Windboe, true); 
                                                setState(PRE_DP+'.Vorjahres_Monat.Max_Regenmenge', VorJahr.Max_Regenmenge, true);
                                                setState(PRE_DP+'.Vorjahres_Monat.Regenmenge_Monat', VorJahr.Regenmenge_Monat, true);
                                                setState(PRE_DP+'.Vorjahres_Monat.warme_Tage', VorJahr.warme_Tage, true);
                                                setState(PRE_DP+'.Vorjahres_Monat.Sommertage', VorJahr.Sommertage, true);
                                                setState(PRE_DP+'.Vorjahres_Monat.heisse_Tage', VorJahr.heisse_Tage, true);
                                                setState(PRE_DP+'.Vorjahres_Monat.Frost_Tage', VorJahr.Frost_Tage, true);
                                                setState(PRE_DP+'.Vorjahres_Monat.kalte_Tage', VorJahr.kalte_Tage, true);
                                                setState(PRE_DP+'.Vorjahres_Monat.Eistage', VorJahr.Eistage, true);
                                                setState(PRE_DP+'.Vorjahres_Monat.sehr_kalte_Tage', VorJahr.sehr_kalte_Tage, true);
                                                setState(PRE_DP + '.Vorjahres_Monat.Wuestentage', VorJahr.Wuestentage, true);
                                                setState(PRE_DP + '.Vorjahres_Monat.Tropennaechte', VorJahr.Tropennaechte, true);
                                                setState(PRE_DP + '.Vorjahres_Monat.Regentage', VorJahr.Regentage, true);
                                        

                                        Wenn das funktioniert hat die V1.3.1 von GitHub laden und nutzen.


                                        btw.: das müsste jeden betreffen, genereller Fehler

                                        A Offline
                                        A Offline
                                        amiethaner
                                        schrieb am zuletzt editiert von
                                        #4399

                                        @sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:

                                        Jop, ging, nur Regentage, Tropennächte und Wüstentage ned. Aber die wurden da bei mir noch ned aufgezeichnet. Hab die letzten Tage erst von ner alten Version geupdated

                                        1 Antwort Letzte Antwort
                                        0
                                        • SBorgS SBorg

                                          @amiethaner sagte in [Linux Shell-Skript] WLAN-Wetterstation:

                                          Läuft hier iwas falsch, oder werden de Werte erst heute Nacht richtig berechnet/übernommen?

                                          Ja und nein ;)

                                          Für die aktuellen Daten neues JS anlegen (Datenverzeichnis ggf. anpassen [Zeile #1]) und einmalig ausführen, dann sollten die Daten da sein:

                                              const PRE_DP='0_userdata.0.Statistik.Wetter';  //Speicherort der Statistikdaten
                                              const monatsdatenpunkt='.Data.2022.02';        //.Data.Jahr.Monat
                                          
                                              
                                                  let VorJahr = getState(PRE_DP+monatsdatenpunkt).val;
                                                  VorJahr = JSON.parse(VorJahr.substring(1, VorJahr.length-1));
                                                  
                                                  setState(PRE_DP+'.Vorjahres_Monat.Tiefstwert', VorJahr.Tiefstwert, true);
                                                  setState(PRE_DP+'.Vorjahres_Monat.Hoechstwert', VorJahr.Hoechstwert, true);
                                                  setState(PRE_DP+'.Vorjahres_Monat.Temperatur_Durchschnitt', VorJahr.Temp_Durchschnitt, true); 
                                                  setState(PRE_DP+'.Vorjahres_Monat.Max_Windboe', VorJahr.Max_Windboe, true); 
                                                  setState(PRE_DP+'.Vorjahres_Monat.Max_Regenmenge', VorJahr.Max_Regenmenge, true);
                                                  setState(PRE_DP+'.Vorjahres_Monat.Regenmenge_Monat', VorJahr.Regenmenge_Monat, true);
                                                  setState(PRE_DP+'.Vorjahres_Monat.warme_Tage', VorJahr.warme_Tage, true);
                                                  setState(PRE_DP+'.Vorjahres_Monat.Sommertage', VorJahr.Sommertage, true);
                                                  setState(PRE_DP+'.Vorjahres_Monat.heisse_Tage', VorJahr.heisse_Tage, true);
                                                  setState(PRE_DP+'.Vorjahres_Monat.Frost_Tage', VorJahr.Frost_Tage, true);
                                                  setState(PRE_DP+'.Vorjahres_Monat.kalte_Tage', VorJahr.kalte_Tage, true);
                                                  setState(PRE_DP+'.Vorjahres_Monat.Eistage', VorJahr.Eistage, true);
                                                  setState(PRE_DP+'.Vorjahres_Monat.sehr_kalte_Tage', VorJahr.sehr_kalte_Tage, true);
                                                  setState(PRE_DP + '.Vorjahres_Monat.Wuestentage', VorJahr.Wuestentage, true);
                                                  setState(PRE_DP + '.Vorjahres_Monat.Tropennaechte', VorJahr.Tropennaechte, true);
                                                  setState(PRE_DP + '.Vorjahres_Monat.Regentage', VorJahr.Regentage, true);
                                          

                                          Wenn das funktioniert hat die V1.3.1 von GitHub laden und nutzen.


                                          btw.: das müsste jeden betreffen, genereller Fehler

                                          BoronsbruderB Offline
                                          BoronsbruderB Offline
                                          Boronsbruder
                                          schrieb am zuletzt editiert von Boronsbruder
                                          #4400

                                          @sborg

                                          1.2.2023, 18:37:33.611	[info ]: javascript.0 (12957) Start javascript script.js.common.wetter.fix
                                          1.2.2023, 18:37:33.628	[info ]: javascript.0 (12957) script.js.common.wetter.fix: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
                                          1.2.2023, 18:37:33.634	[error]: javascript.0 (12957) script.js.common.wetter.fix: TypeError: VorJahr.substring is not a function
                                          1.2.2023, 18:37:33.634	[error]: javascript.0 (12957)     at script.js.common.wetter.fix:11:38
                                          1.2.2023, 18:37:33.635	[error]: javascript.0 (12957)     at script.js.common.wetter.fix:47:3
                                          1.2.2023, 18:39:44.297	[info ]: javascript.0 (12957) Stop script script.js.common.wetter.fix
                                          
                                              const PRE_DP='0_userdata.0.Statistik.Wetter';  //Speicherort der Statistikdaten
                                                  const monatsdatenpunkt='.Data.2022.02';        //.Data.Jahr.Monat
                                              
                                                      let VorJahr = getState(PRE_DP+monatsdatenpunkt).val;
                                                      console.log (VorJahr);
                                                      
                                                // Daten vom Vorjahr durchiterieren und Datenpunkte befüllen
                                                  VorJahr.forEach(obj => {
                                                              Object.keys(obj).forEach(key => {
                                                                  
                                                                  // fix für Datenpunktname
                                                                  let setkey = key;                                       
                                                                  if (key == 'Temp_Durchschnitt') setkey = "Temperatur_Durchschnitt";
                                                  
                                                                  setState(PRE_DP+'.Vorjahres_Monat.' +setkey, obj[key], true);
                                                              });
                                                          });
                                          

                                          So übernimmt er alle im Vorjahr vorhandenen Daten (also keine Tropentage usw. wenn diese noch nicht gesetzt waren).

                                          Falls dir das hilft, darfst du es gerne verwenden ;)

                                          Edit: Sorry, für die vielen Edits bin zu blöd für Copy und Paste :man-facepalming:

                                          SBorgS 1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          531

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe