Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

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

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    16
    1
    1.6k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    851

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.1k

[Linux Shell-Skript] WLAN-Wetterstation

Scheduled Pinned Locked Moved Praktische Anwendungen (Showcase)
linuxshell-scriptwetterstationwlan-wetterstation
5.7k Posts 155 Posters 3.9m Views 137 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • NashraN Nashra

    @SBorg
    welchen Adapter nutzt du für die Ozonwerte?

    SBorgS Offline
    SBorgS Offline
    SBorg
    Forum Testing Most Active
    wrote on last edited by
    #5158

    @nashra
    Keinen, mir ist auch keiner bekannt, ich nutze (wie bei mir fast üblich :blush: ) ein Linux Shell-Skript.
    Bevor nun wieder die Frage kommt: nein, das kann ich schlecht zur Verfügung stellen, da es die Daten vom HLNUG bezieht und somit nur für Hessen gültig ist.

    Weil aber bestimmt hier wieder Begehrlichkeiten geweckt wurden (nehme ich mal an :innocent: ), habe ich mir heute morgen mal Gedanken gemacht und bin auf die Suche gegangen.
    Übrig bleibt eigentlich nur das "Umwelt Bundesamt", da es für ganz Deutschland Daten liefert (sry @Negalein), auch kleinere Stationen. Leider keine API verfügbar und https://www.umweltbundesamt.de/daten/luft/luftdaten/luftqualitaet/ verlangt das ausfüllen der gewünschten Daten (ist hier nicht einfach zu automatisieren, da darüber ein Einmal-Token generiert wird).
    Aber wird sind ja nicht blöd :joy:
    Über die "Stationen" kommen wir zwar zu einer ähnlichen Eingabemaske, aber nach dem ausfüllen erhalten wir einen nutzbaren Link "Station herunterladen". Per MouseOver erkennen wir nun auch einen für uns nutzbaren Link 8)
    Beispiel: https://www.umweltbundesamt.de/api/air_data/v3/measures/csv?date_from=2024-01-18&time_from=11&date_to=2024-01-18&time_to=11&data%5B0%5D%5Bco%5D=3&data%5B0%5D%5Bsc%5D=2&data%5B0%5D%5Bst%5D=533&lang=de
    Also doch eine (nicht öffentliche) API. Die Daten könnte ich automatisieren, man muss es nur einmalig per Frontend ausfüllen damit man seine StationID bekommt. In der heruntergeladenen CSV steht dann der Ozonwert drin :grinning:

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

    NashraN BoronsbruderB NegaleinN 3 Replies Last reply
    0
    • SBorgS SBorg

      @nashra
      Keinen, mir ist auch keiner bekannt, ich nutze (wie bei mir fast üblich :blush: ) ein Linux Shell-Skript.
      Bevor nun wieder die Frage kommt: nein, das kann ich schlecht zur Verfügung stellen, da es die Daten vom HLNUG bezieht und somit nur für Hessen gültig ist.

      Weil aber bestimmt hier wieder Begehrlichkeiten geweckt wurden (nehme ich mal an :innocent: ), habe ich mir heute morgen mal Gedanken gemacht und bin auf die Suche gegangen.
      Übrig bleibt eigentlich nur das "Umwelt Bundesamt", da es für ganz Deutschland Daten liefert (sry @Negalein), auch kleinere Stationen. Leider keine API verfügbar und https://www.umweltbundesamt.de/daten/luft/luftdaten/luftqualitaet/ verlangt das ausfüllen der gewünschten Daten (ist hier nicht einfach zu automatisieren, da darüber ein Einmal-Token generiert wird).
      Aber wird sind ja nicht blöd :joy:
      Über die "Stationen" kommen wir zwar zu einer ähnlichen Eingabemaske, aber nach dem ausfüllen erhalten wir einen nutzbaren Link "Station herunterladen". Per MouseOver erkennen wir nun auch einen für uns nutzbaren Link 8)
      Beispiel: https://www.umweltbundesamt.de/api/air_data/v3/measures/csv?date_from=2024-01-18&time_from=11&date_to=2024-01-18&time_to=11&data%5B0%5D%5Bco%5D=3&data%5B0%5D%5Bsc%5D=2&data%5B0%5D%5Bst%5D=533&lang=de
      Also doch eine (nicht öffentliche) API. Die Daten könnte ich automatisieren, man muss es nur einmalig per Frontend ausfüllen damit man seine StationID bekommt. In der heruntergeladenen CSV steht dann der Ozonwert drin :grinning:

      NashraN Offline
      NashraN Offline
      Nashra
      Most Active Forum Testing
      wrote on last edited by
      #5159

      @sborg
      nö lass mal, so wichtig ist das nicht. Aber trotzdem danke fürs suchen :-)

      Gruß Ralf
      Mir egal, wer Dein Vater ist! Wenn ich hier angel, wird nicht übers Wasser gelaufen!!

      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

      1 Reply Last reply
      0
      • SBorgS SBorg

        @nashra
        Keinen, mir ist auch keiner bekannt, ich nutze (wie bei mir fast üblich :blush: ) ein Linux Shell-Skript.
        Bevor nun wieder die Frage kommt: nein, das kann ich schlecht zur Verfügung stellen, da es die Daten vom HLNUG bezieht und somit nur für Hessen gültig ist.

        Weil aber bestimmt hier wieder Begehrlichkeiten geweckt wurden (nehme ich mal an :innocent: ), habe ich mir heute morgen mal Gedanken gemacht und bin auf die Suche gegangen.
        Übrig bleibt eigentlich nur das "Umwelt Bundesamt", da es für ganz Deutschland Daten liefert (sry @Negalein), auch kleinere Stationen. Leider keine API verfügbar und https://www.umweltbundesamt.de/daten/luft/luftdaten/luftqualitaet/ verlangt das ausfüllen der gewünschten Daten (ist hier nicht einfach zu automatisieren, da darüber ein Einmal-Token generiert wird).
        Aber wird sind ja nicht blöd :joy:
        Über die "Stationen" kommen wir zwar zu einer ähnlichen Eingabemaske, aber nach dem ausfüllen erhalten wir einen nutzbaren Link "Station herunterladen". Per MouseOver erkennen wir nun auch einen für uns nutzbaren Link 8)
        Beispiel: https://www.umweltbundesamt.de/api/air_data/v3/measures/csv?date_from=2024-01-18&time_from=11&date_to=2024-01-18&time_to=11&data%5B0%5D%5Bco%5D=3&data%5B0%5D%5Bsc%5D=2&data%5B0%5D%5Bst%5D=533&lang=de
        Also doch eine (nicht öffentliche) API. Die Daten könnte ich automatisieren, man muss es nur einmalig per Frontend ausfüllen damit man seine StationID bekommt. In der heruntergeladenen CSV steht dann der Ozonwert drin :grinning:

        BoronsbruderB Online
        BoronsbruderB Online
        Boronsbruder
        wrote on last edited by Boronsbruder
        #5160

        @sborg
        Doch öffentliche Api ;)
        Git-Hub zur Luftqualität-Api des Bundes
        Dokumentation der Api

        Beispiel Daten für Ulm:
        (https://umweltbundesamt.api.proxy.bund.dev/api/air_data/v2/airquality/json?date_from=2024-01-18&time_from=13&date_to=2024-01-18&time_to=13&station=228&lang=de)

        {
             "request": {
                    "station": "228",
                    "date_from": "2024-01-18",
                    "date_to": "2024-01-18",
                    "time_from": "13:00:00",
                    "time_to": "13:00:00",
                    "lang": "de",
                    "index": "id",
                    "datetime_from": "2024-01-18 12:00:00",
                    "datetime_to": "2024-01-18 12:00:00"
              },
              "data": {
                    "228": {
                          "2024-01-18 12:00:00": [
                                "2024-01-18 13:00:00",
                                1,
                                0,
                                [
                                      3,
                                      64,
                                      1,
                                      "1.051"
                                ],
                                [
                                      5,
                                      9,
                                      0,
                                      "0.45"
                                ],
                                [
                                      1,
                                      7,
                                      0,
                                      "0.35"
                                ]
                          ]
                    }
              },
              "indices": {
                    "data": {
                          "Id of station - string": {
                                "Date of measure start in CET - string": [
                                      "0: Date of measure end  in CET - string",
                                      "1: Airquality index for all components - integer",
                                      "2: Data incomplete (0|1) - integer",
                                      [
                                            "0: Id of component id - integer",
                                            "1: Value - number",
                                            "2: Airquality index of this component- integer",
                                            "3: Decimal representation of Airquality index of this component - string"
                                      ]
                                ]
                          }
                    }
              },
              "count": 1
        
        }
        
        

        => 64 µg/m³ Ozon / 9 µg/m³ NO2 / 7 µg/m³ Feinstaub PM10

        Man kann anstatt der 228 auch die von der Stationsseite den angezeigten Code DEBW019 der Station verwenden

        Und anscheinend gibts auch schon ne Api v3

        Da kommt bei der Station dann sogar ein PM2.5-Wert mit

        1 Reply Last reply
        1
        • Rene55R Offline
          Rene55R Offline
          Rene55
          wrote on last edited by
          #5161

          @boronsbruder Das schreit ja förmlich nach einem neuen Adapter

          Host: Fujitsu Intel(R) Pentium(R) CPU G4560T, 32 GB RAM, Proxmox 8.x + lxc Ubuntu 22.04
          ioBroker (8 GB RAM) Node.js: 20.19.1, NPM: 10.8.2, js-Controller: 7.0.6, Admin: 7.6.3
          Wetterstation: Froggit WH3000SE V1.6.6

          BoronsbruderB 1 Reply Last reply
          0
          • SBorgS SBorg

            @nashra
            Keinen, mir ist auch keiner bekannt, ich nutze (wie bei mir fast üblich :blush: ) ein Linux Shell-Skript.
            Bevor nun wieder die Frage kommt: nein, das kann ich schlecht zur Verfügung stellen, da es die Daten vom HLNUG bezieht und somit nur für Hessen gültig ist.

            Weil aber bestimmt hier wieder Begehrlichkeiten geweckt wurden (nehme ich mal an :innocent: ), habe ich mir heute morgen mal Gedanken gemacht und bin auf die Suche gegangen.
            Übrig bleibt eigentlich nur das "Umwelt Bundesamt", da es für ganz Deutschland Daten liefert (sry @Negalein), auch kleinere Stationen. Leider keine API verfügbar und https://www.umweltbundesamt.de/daten/luft/luftdaten/luftqualitaet/ verlangt das ausfüllen der gewünschten Daten (ist hier nicht einfach zu automatisieren, da darüber ein Einmal-Token generiert wird).
            Aber wird sind ja nicht blöd :joy:
            Über die "Stationen" kommen wir zwar zu einer ähnlichen Eingabemaske, aber nach dem ausfüllen erhalten wir einen nutzbaren Link "Station herunterladen". Per MouseOver erkennen wir nun auch einen für uns nutzbaren Link 8)
            Beispiel: https://www.umweltbundesamt.de/api/air_data/v3/measures/csv?date_from=2024-01-18&time_from=11&date_to=2024-01-18&time_to=11&data%5B0%5D%5Bco%5D=3&data%5B0%5D%5Bsc%5D=2&data%5B0%5D%5Bst%5D=533&lang=de
            Also doch eine (nicht öffentliche) API. Die Daten könnte ich automatisieren, man muss es nur einmalig per Frontend ausfüllen damit man seine StationID bekommt. In der heruntergeladenen CSV steht dann der Ozonwert drin :grinning:

            NegaleinN Offline
            NegaleinN Offline
            Negalein
            Global Moderator
            wrote on last edited by
            #5162

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

            sry @Negalein)

            No Problem.
            Ich brauch Ozon nicht.
            Wenn doch, verwende ich einen deutschen Ort.
            Kann von Ö nach DE rüber spucken. :joy: :joy:

            ° Node.js & System Update ---> sudo apt update, iob stop, sudo apt full-upgrade
            ° Node.js Fixer ---> iob nodejs-update
            ° Fixer ---> iob fix

            1 Reply Last reply
            0
            • Rene55R Rene55

              @boronsbruder Das schreit ja förmlich nach einem neuen Adapter

              BoronsbruderB Online
              BoronsbruderB Online
              Boronsbruder
              wrote on last edited by Boronsbruder
              #5163

              @rene55
              Adapter kann ich nicht.
              Skripten ein bischen, deswegen hab ich für euch/uns Daten-Fetischisten mal mit nem Skript angefangen:

              // Luftqualität v1
              
              // User Einstellungen
              
              const stations = ["DEBW019"]; // Stationen, können durch Komma getrennt werden z.B. ["DEBW019", "DEBY007"]
              const datenpunkt_pre ="0_userdata.0" // => wird in 0_userdata.0.Luftqualität gespeichert
              const debug = false;
              //  Abfrage findet um **:05 und **:10 stündlich statt (um fehlende Daten eventl. nachzufüllen). Die Daten werden sowieso nur stündlich von der letzten Stunde zur Verfügung gestellt...
              
              // Datenverarbeitung 
              
              var dp_path = datenpunkt_pre + ".Luftqualität.";
              var timer;
              var components;
              var stations_list;
              
              const fetch = require('node-fetch');
              
              function createBaseFolder(ID, type, name)
              {
              /** geklaut bei grrfield
               * Erstellt Basisfolder und stellt den richtigen Typ ein
               * @param   {string}    ID          ID des Folders
               * @param   {any}       type        Typ des Folders
               * @param   {string}    [name]      (optional) Name des Folders
               */  
              
                  createState(ID, function() {
                      let obj=getObject(ID);
                      obj.type=type;
                      if(name != undefined) obj.common.name=name;
                      obj.common.role='';
                      setObject(ID, obj);
                  });
              }
              
              const get_stations = async () => {
                  const url_stations = "https://umweltbundesamt.api.proxy.bund.dev/api/air_data/v3/stations/json?lang=de";
                  var stations_json = fetch(url_stations)
                      .then(response => response.json())
                      .then(data => {
                          //if (debug) console.log(data);
                          return data})
                      .catch ((err) => {
                      console.error("failed fetch " + err);
                      
                  }
                  );
                  return stations_json;
              }
              
              const send_request = async (station_code) => {
                      const d = new Date();
              
              let hour = d.getHours()-1;
              let date = d.getFullYear + "-" + d.getMonth + "-" + d.getDay;
              
                      const url_server = "https://umweltbundesamt.api.proxy.bund.dev/api/air_data/v3/airquality/json?date_from=" + date + "&time_from=" + hour + "&date_to=" +date +"&time_to=" + (hour +1) + " &station=" + station_code + "&lang=de";
                      var request = fetch(url_server)
                      .then(response => response.json())
                      .then(data => {
                          if (debug) console.log(data);
                          return data})
                      .catch ((err) => {
                      console.error("failed fetch " + err);
                
                  }
                  );
                  return request;
              
              };
              
              const get_components = async () => {
                      var list = fetch("https://umweltbundesamt.api.proxy.bund.dev/api/air_data/v3/components/json?lang=de&index=id")
                      .then(response => response.json())
                      .then(data => {
                          if (debug) console.log(data);
                          return data})
                      .catch ((err) => {
                      console.error("failed fetch " + err);
                      
                  }
                  );
                  return list;
              };
              
              async function get_data (station_code) {
                    
                  var data = await send_request(station_code);
              
                  if (!existsObject(dp_path + station_code)){
                      if (debug) console.warn("not exist => " +  stations_list.data[data.request.station][2]);
                      createBaseFolder(dp_path + station_code, "folder", stations_list.data[data.request.station][2]);
                  }
                  var measure_set = data.data[data.request.station][data.request.datetime_from];
                  
                  for (let i = 3 ; i < measure_set.length; i++) {
                  
                      var id = dp_path + station_code + "." + components[measure_set[i][0]][1];
                      if (debug) console.log ("ID: " + id);
                      existsState(id, (err, isExists) => {
                          var idwork = dp_path + station_code + "." + components[measure_set[i][0]][1];
                          if (debug){
                              console.log ("IDwork: " + idwork);
                              console.log ("initval: " + measure_set[i][1]);
                              console.log ("Name: " + components[measure_set[i][0]][4] + "(" + components[measure_set[i][0]][1] + ")");
                              console.log ("unit: " + components[measure_set[i][0]][3]);
                          }
                          if (err) console.error (err);
                      
                          if (isExists) {
                              if (debug) console.log ("Exists writing new value");
                              setState(idwork,  measure_set[i][1]);
                          }
                      
                          else{
                              if (debug) console.log ("Not Exists - creating State");
                              createState(idwork, measure_set[i][1], { name: components[measure_set[i][0]][4] + " (" + components[measure_set[i][0]][2] + ")", unit: components[measure_set[i][0]][3], type: "number", role: "value", read: true, write: true} , () => { log('Dp '+ idwork + ' erstellt!'); });
                          }
                      });
                  }
              }
              onStop (() => {
                  clearSchedule(timer);
              });
              async function init(){
                  stations_list = await get_stations();
                  components = await get_components();
                  stations.forEach (get_data); // init für sofortige Datenverfügbarkeit
              
                  // timer um */5 und */10
                  timer = schedule({minute: [5,10]}, () => {
                  stations.forEach (get_data);
              });
              }
              
              init();
              

              Funktion:
              auf der SEITE des Umwelbundesamtes die StationsID raussuchen
              582e07dc-ceb1-4d47-8e50-73147c3d7d8b-grafik.png
              Es können auch mehrere Stationen durch Komma getrennt im Skript eingetragen werden.
              Dann werden die Daten (letzter Stündlicher Mittelwert) unter dem eingestellten Datenpunkt um **:05 und **:10 gespeichert.

              f026f669-f3ef-431f-a141-8cc9ae77705a-grafik.png

              Ich plane noch die "Airquality indexes" hinzuzufügen.

              Rene55R 1 Reply Last reply
              2
              • BoronsbruderB Boronsbruder

                @rene55
                Adapter kann ich nicht.
                Skripten ein bischen, deswegen hab ich für euch/uns Daten-Fetischisten mal mit nem Skript angefangen:

                // Luftqualität v1
                
                // User Einstellungen
                
                const stations = ["DEBW019"]; // Stationen, können durch Komma getrennt werden z.B. ["DEBW019", "DEBY007"]
                const datenpunkt_pre ="0_userdata.0" // => wird in 0_userdata.0.Luftqualität gespeichert
                const debug = false;
                //  Abfrage findet um **:05 und **:10 stündlich statt (um fehlende Daten eventl. nachzufüllen). Die Daten werden sowieso nur stündlich von der letzten Stunde zur Verfügung gestellt...
                
                // Datenverarbeitung 
                
                var dp_path = datenpunkt_pre + ".Luftqualität.";
                var timer;
                var components;
                var stations_list;
                
                const fetch = require('node-fetch');
                
                function createBaseFolder(ID, type, name)
                {
                /** geklaut bei grrfield
                 * Erstellt Basisfolder und stellt den richtigen Typ ein
                 * @param   {string}    ID          ID des Folders
                 * @param   {any}       type        Typ des Folders
                 * @param   {string}    [name]      (optional) Name des Folders
                 */  
                
                    createState(ID, function() {
                        let obj=getObject(ID);
                        obj.type=type;
                        if(name != undefined) obj.common.name=name;
                        obj.common.role='';
                        setObject(ID, obj);
                    });
                }
                
                const get_stations = async () => {
                    const url_stations = "https://umweltbundesamt.api.proxy.bund.dev/api/air_data/v3/stations/json?lang=de";
                    var stations_json = fetch(url_stations)
                        .then(response => response.json())
                        .then(data => {
                            //if (debug) console.log(data);
                            return data})
                        .catch ((err) => {
                        console.error("failed fetch " + err);
                        
                    }
                    );
                    return stations_json;
                }
                
                const send_request = async (station_code) => {
                        const d = new Date();
                
                let hour = d.getHours()-1;
                let date = d.getFullYear + "-" + d.getMonth + "-" + d.getDay;
                
                        const url_server = "https://umweltbundesamt.api.proxy.bund.dev/api/air_data/v3/airquality/json?date_from=" + date + "&time_from=" + hour + "&date_to=" +date +"&time_to=" + (hour +1) + " &station=" + station_code + "&lang=de";
                        var request = fetch(url_server)
                        .then(response => response.json())
                        .then(data => {
                            if (debug) console.log(data);
                            return data})
                        .catch ((err) => {
                        console.error("failed fetch " + err);
                  
                    }
                    );
                    return request;
                
                };
                
                const get_components = async () => {
                        var list = fetch("https://umweltbundesamt.api.proxy.bund.dev/api/air_data/v3/components/json?lang=de&index=id")
                        .then(response => response.json())
                        .then(data => {
                            if (debug) console.log(data);
                            return data})
                        .catch ((err) => {
                        console.error("failed fetch " + err);
                        
                    }
                    );
                    return list;
                };
                
                async function get_data (station_code) {
                      
                    var data = await send_request(station_code);
                
                    if (!existsObject(dp_path + station_code)){
                        if (debug) console.warn("not exist => " +  stations_list.data[data.request.station][2]);
                        createBaseFolder(dp_path + station_code, "folder", stations_list.data[data.request.station][2]);
                    }
                    var measure_set = data.data[data.request.station][data.request.datetime_from];
                    
                    for (let i = 3 ; i < measure_set.length; i++) {
                    
                        var id = dp_path + station_code + "." + components[measure_set[i][0]][1];
                        if (debug) console.log ("ID: " + id);
                        existsState(id, (err, isExists) => {
                            var idwork = dp_path + station_code + "." + components[measure_set[i][0]][1];
                            if (debug){
                                console.log ("IDwork: " + idwork);
                                console.log ("initval: " + measure_set[i][1]);
                                console.log ("Name: " + components[measure_set[i][0]][4] + "(" + components[measure_set[i][0]][1] + ")");
                                console.log ("unit: " + components[measure_set[i][0]][3]);
                            }
                            if (err) console.error (err);
                        
                            if (isExists) {
                                if (debug) console.log ("Exists writing new value");
                                setState(idwork,  measure_set[i][1]);
                            }
                        
                            else{
                                if (debug) console.log ("Not Exists - creating State");
                                createState(idwork, measure_set[i][1], { name: components[measure_set[i][0]][4] + " (" + components[measure_set[i][0]][2] + ")", unit: components[measure_set[i][0]][3], type: "number", role: "value", read: true, write: true} , () => { log('Dp '+ idwork + ' erstellt!'); });
                            }
                        });
                    }
                }
                onStop (() => {
                    clearSchedule(timer);
                });
                async function init(){
                    stations_list = await get_stations();
                    components = await get_components();
                    stations.forEach (get_data); // init für sofortige Datenverfügbarkeit
                
                    // timer um */5 und */10
                    timer = schedule({minute: [5,10]}, () => {
                    stations.forEach (get_data);
                });
                }
                
                init();
                

                Funktion:
                auf der SEITE des Umwelbundesamtes die StationsID raussuchen
                582e07dc-ceb1-4d47-8e50-73147c3d7d8b-grafik.png
                Es können auch mehrere Stationen durch Komma getrennt im Skript eingetragen werden.
                Dann werden die Daten (letzter Stündlicher Mittelwert) unter dem eingestellten Datenpunkt um **:05 und **:10 gespeichert.

                f026f669-f3ef-431f-a141-8cc9ae77705a-grafik.png

                Ich plane noch die "Airquality indexes" hinzuzufügen.

                Rene55R Offline
                Rene55R Offline
                Rene55
                wrote on last edited by
                #5164

                @boronsbruder Ich schau mal, ob es da schon eine Anfrage auf einen Adapter zu diesem Thema gibt. Danke für dein Engagement, aber wir sollten den Thread hier nicht weiter volltexten sondern wenn du willst in einem Neuen.

                Host: Fujitsu Intel(R) Pentium(R) CPU G4560T, 32 GB RAM, Proxmox 8.x + lxc Ubuntu 22.04
                ioBroker (8 GB RAM) Node.js: 20.19.1, NPM: 10.8.2, js-Controller: 7.0.6, Admin: 7.6.3
                Wetterstation: Froggit WH3000SE V1.6.6

                BoronsbruderB 1 Reply Last reply
                0
                • Rene55R Rene55

                  @boronsbruder Ich schau mal, ob es da schon eine Anfrage auf einen Adapter zu diesem Thema gibt. Danke für dein Engagement, aber wir sollten den Thread hier nicht weiter volltexten sondern wenn du willst in einem Neuen.

                  BoronsbruderB Online
                  BoronsbruderB Online
                  Boronsbruder
                  wrote on last edited by
                  #5165

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

                  @boronsbruder ... aber wir sollten den Thread hier nicht weiter volltexten sondern wenn du willst in einem Neuen.

                  Hier is die V2 des Skripts

                  NashraN 2 Replies Last reply
                  0
                  • BoronsbruderB Boronsbruder

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

                    @boronsbruder ... aber wir sollten den Thread hier nicht weiter volltexten sondern wenn du willst in einem Neuen.

                    Hier is die V2 des Skripts

                    NashraN Offline
                    NashraN Offline
                    Nashra
                    Most Active Forum Testing
                    wrote on last edited by
                    #5166

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

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

                    @boronsbruder ... aber wir sollten den Thread hier nicht weiter volltexten sondern wenn du willst in einem Neuen.

                    Hier is die V2 des Skripts

                    Die v2 installiert aber jeden Morgen kommt dieser Fehler zur selben Uhrzeit

                    2024-01-22 02:09:47.206 - info: linux-control.0 (1080) successful received data from ioBroker (192.168.1.14:22)
                    2024-01-22 02:10:00.797 - error: javascript.0 (283) script.js.Wetter.Luftqualität: TypeError: Cannot read properties of undefined (reading '2024-01-22 00:00:00')
                    2024-01-22 02:10:00.797 - error: javascript.0 (283) at get_data (script.js.Wetter.Luftqualität:148:54)
                    2024-01-22 02:10:00.797 - error: javascript.0 (283) at processTicksAndRejections (node:internal/process/task_queues:95:5)
                    2024-01-22 02:12:00.026 - info: host.ioBroker instance system.adapter.meteoalarm.2 started with pid 1832595
                    

                    Gruß Ralf
                    Mir egal, wer Dein Vater ist! Wenn ich hier angel, wird nicht übers Wasser gelaufen!!

                    Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                    BoronsbruderB 1 Reply Last reply
                    0
                    • NashraN Nashra

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

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

                      @boronsbruder ... aber wir sollten den Thread hier nicht weiter volltexten sondern wenn du willst in einem Neuen.

                      Hier is die V2 des Skripts

                      Die v2 installiert aber jeden Morgen kommt dieser Fehler zur selben Uhrzeit

                      2024-01-22 02:09:47.206 - info: linux-control.0 (1080) successful received data from ioBroker (192.168.1.14:22)
                      2024-01-22 02:10:00.797 - error: javascript.0 (283) script.js.Wetter.Luftqualität: TypeError: Cannot read properties of undefined (reading '2024-01-22 00:00:00')
                      2024-01-22 02:10:00.797 - error: javascript.0 (283) at get_data (script.js.Wetter.Luftqualität:148:54)
                      2024-01-22 02:10:00.797 - error: javascript.0 (283) at processTicksAndRejections (node:internal/process/task_queues:95:5)
                      2024-01-22 02:12:00.026 - info: host.ioBroker instance system.adapter.meteoalarm.2 started with pid 1832595
                      
                      BoronsbruderB Online
                      BoronsbruderB Online
                      Boronsbruder
                      wrote on last edited by
                      #5167

                      @nashra
                      Hab ich auch bemerkt.
                      Die Api kann meines Erachtens nicht mit Stunde 0 umgehen.
                      Hab die Kollegen mal angeschrieben, aber ich wurde so wie es aussieht missverstanden.

                      1 Reply Last reply
                      1
                      • BoronsbruderB Online
                        BoronsbruderB Online
                        Boronsbruder
                        wrote on last edited by
                        #5168

                        @SBorg
                        Falls du es mal brauchst:
                        API V3 Doku

                        1 Reply Last reply
                        1
                        • SBorgS Offline
                          SBorgS Offline
                          SBorg
                          Forum Testing Most Active
                          wrote on last edited by
                          #5169

                          Ich verstehe deren System auch nicht so ganz. Eigentlich ist doch UBA nur Deutschland...?
                          Wollen sie jetzt noch Zeitzonen in BRD einführen? Bin schon mal auf die Sommer-/Winterzeit-Thematik bei denen gespannt.

                          Aber 1-24 bei den Stunden ist auch der Burner. Wer arbeitet den in der Computertechnologie mit 24:00 Uhr?
                          Ich bin jetzt im NodeRed-Flow den einfachen Weg gegangen und verzichte einfach auf den 0:00 Uhr Wert, wobei ich es eh nicht nutze. Ich nehme weiter die Daten des HLNUG, nur die Karte vom UBA, da die vom HLNUG schon ein paar Wochen nicht mehr aktualisiert wird :(
                          Bild 001.png
                          Bild 002.png

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

                          BoronsbruderB 1 Reply Last reply
                          0
                          • SBorgS SBorg

                            Ich verstehe deren System auch nicht so ganz. Eigentlich ist doch UBA nur Deutschland...?
                            Wollen sie jetzt noch Zeitzonen in BRD einführen? Bin schon mal auf die Sommer-/Winterzeit-Thematik bei denen gespannt.

                            Aber 1-24 bei den Stunden ist auch der Burner. Wer arbeitet den in der Computertechnologie mit 24:00 Uhr?
                            Ich bin jetzt im NodeRed-Flow den einfachen Weg gegangen und verzichte einfach auf den 0:00 Uhr Wert, wobei ich es eh nicht nutze. Ich nehme weiter die Daten des HLNUG, nur die Karte vom UBA, da die vom HLNUG schon ein paar Wochen nicht mehr aktualisiert wird :(
                            Bild 001.png
                            Bild 002.png

                            BoronsbruderB Online
                            BoronsbruderB Online
                            Boronsbruder
                            wrote on last edited by
                            #5170

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

                            Wer arbeitet den in der Computertechnologie mit 24:00 Uhr?

                            Jeder der keinen Bock hat sich Gedanken um Jahres-, Monats- oder Tageswechsel zu machen...
                            Weisst ja 0 Uhr - 1 :D

                            1 Reply Last reply
                            0
                            • BoronsbruderB Online
                              BoronsbruderB Online
                              Boronsbruder
                              wrote on last edited by Boronsbruder
                              #5171

                              @SBorg
                              Ich hab da was für dich:

                              2024-01-24 23:58:05.001 - info: simple-api.0 (5300) State value to set for "0_userdata.0.Wetterstation.Info.Solarenergie_VorTag" has to be type "number" but received type "string"
                              2024-01-24 23:58:05.175 - info: simple-api.0 (5300) State value to set for "0_userdata.0.Wetterstation.Info.Solarenergie_Woche" has to be type "number" but received type "string"
                              2024-01-24 23:58:05.175 - info: simple-api.0 (5300) State value to set for "0_userdata.0.Wetterstation.Info.Solarenergie_Monat" has to be type "number" but received type "string"
                              2024-01-24 23:58:05.176 - info: simple-api.0 (5300) State value to set for "0_userdata.0.Wetterstation.Info.Solarenergie_Jahr" has to be type "number" but received type "string"
                              2024-01-24 23:58:05.176 - info: simple-api.0 (5300) State value to set for "0_userdata.0.Wetterstation.tempData.Solarenergie" has to be type "string" but received type "number" 
                              

                              Das passiert, wenn die Solarenergie-Datenpunkte leer sind.
                              Der TempData steht z.B. gerade auf 404,662, weil ich seit 2 Tagen erst wieder, in Ermangelung eines Aussensensors, Daten bekomme.
                              Wenn die SimpleApi halt alle 30 Sekunden rummotzt gibt das ganz schön große Logs ;)

                              Eigentlich eher ein Schönheitsfehler...

                              SBorgS 1 Reply Last reply
                              0
                              • BoronsbruderB Boronsbruder

                                @SBorg
                                Ich hab da was für dich:

                                2024-01-24 23:58:05.001 - info: simple-api.0 (5300) State value to set for "0_userdata.0.Wetterstation.Info.Solarenergie_VorTag" has to be type "number" but received type "string"
                                2024-01-24 23:58:05.175 - info: simple-api.0 (5300) State value to set for "0_userdata.0.Wetterstation.Info.Solarenergie_Woche" has to be type "number" but received type "string"
                                2024-01-24 23:58:05.175 - info: simple-api.0 (5300) State value to set for "0_userdata.0.Wetterstation.Info.Solarenergie_Monat" has to be type "number" but received type "string"
                                2024-01-24 23:58:05.176 - info: simple-api.0 (5300) State value to set for "0_userdata.0.Wetterstation.Info.Solarenergie_Jahr" has to be type "number" but received type "string"
                                2024-01-24 23:58:05.176 - info: simple-api.0 (5300) State value to set for "0_userdata.0.Wetterstation.tempData.Solarenergie" has to be type "string" but received type "number" 
                                

                                Das passiert, wenn die Solarenergie-Datenpunkte leer sind.
                                Der TempData steht z.B. gerade auf 404,662, weil ich seit 2 Tagen erst wieder, in Ermangelung eines Aussensensors, Daten bekomme.
                                Wenn die SimpleApi halt alle 30 Sekunden rummotzt gibt das ganz schön große Logs ;)

                                Eigentlich eher ein Schönheitsfehler...

                                SBorgS Offline
                                SBorgS Offline
                                SBorg
                                Forum Testing Most Active
                                wrote on last edited by
                                #5172

                                @boronsbruder

                                :blush: Den Zustand kann es "eigentlich" auch nicht geben. Entweder alle Daten da oder eben nüscht.
                                Bei uns sagt man: Kommt davon wenn man so neumodische Ferz hat... :joy:

                                Sollte dann in/ab der V3.3.0 abgefangen werden. Da ich aber aktuell nicht aktiv daran arbeite kann das etwas dauern bis die kommt.


                                Aktueller Wasserstand des Projektes: Bugfixing ja, Weiterentwicklung (so 1-2 Dinge stehen aktuell noch auf der Agenda) ruht schlichtweg aus Zeitmangel

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

                                BoronsbruderB 1 Reply Last reply
                                1
                                • SBorgS SBorg

                                  @boronsbruder

                                  :blush: Den Zustand kann es "eigentlich" auch nicht geben. Entweder alle Daten da oder eben nüscht.
                                  Bei uns sagt man: Kommt davon wenn man so neumodische Ferz hat... :joy:

                                  Sollte dann in/ab der V3.3.0 abgefangen werden. Da ich aber aktuell nicht aktiv daran arbeite kann das etwas dauern bis die kommt.


                                  Aktueller Wasserstand des Projektes: Bugfixing ja, Weiterentwicklung (so 1-2 Dinge stehen aktuell noch auf der Agenda) ruht schlichtweg aus Zeitmangel

                                  BoronsbruderB Online
                                  BoronsbruderB Online
                                  Boronsbruder
                                  wrote on last edited by
                                  #5173

                                  @sborg
                                  Alte Maschin gabutt - Ameise machen Nest in Maschin - kaufen neie Maschin :man-shrugging:

                                  1 Reply Last reply
                                  0
                                  • E Offline
                                    E Offline
                                    el_rob
                                    wrote on last edited by
                                    #5174

                                    Hallo zusammen,

                                    Aktuell besteht meine "Wetterstation" aus einer selbstgebastelten Arduino Lösung. Allerdings möchte ich jetzt etwas Verlässlicheres und überlege mir daher ein Ecowitt GW2000 Gateway in Kombi mit einem WS90 "Wittboy" 7-in-1 Sensor zu holen. Die Regenmessung des WS90 soll allerdings nicht so prickelnd funktionieren, weswegen in den einschlägigen Foren empfohlen wird, zusätzlich einen WH40 (= Froggit DP80) Regenmesser zu verwenden. Der WH40 wird hier allerdings nicht unter den kompatiblen Zusatzsensoren aufgeführt. Heisst das, es werden nur die Regenwerte des WS90 an iobroker übergeben oder gibt es eine Möglichkeit, auch den WH40 einzubinden? Hat jemand die Kombi WS90 und WH40 im Einsatz und kann berichten ob das funktioniert?

                                    BoronsbruderB 1 Reply Last reply
                                    0
                                    • E el_rob

                                      Hallo zusammen,

                                      Aktuell besteht meine "Wetterstation" aus einer selbstgebastelten Arduino Lösung. Allerdings möchte ich jetzt etwas Verlässlicheres und überlege mir daher ein Ecowitt GW2000 Gateway in Kombi mit einem WS90 "Wittboy" 7-in-1 Sensor zu holen. Die Regenmessung des WS90 soll allerdings nicht so prickelnd funktionieren, weswegen in den einschlägigen Foren empfohlen wird, zusätzlich einen WH40 (= Froggit DP80) Regenmesser zu verwenden. Der WH40 wird hier allerdings nicht unter den kompatiblen Zusatzsensoren aufgeführt. Heisst das, es werden nur die Regenwerte des WS90 an iobroker übergeben oder gibt es eine Möglichkeit, auch den WH40 einzubinden? Hat jemand die Kombi WS90 und WH40 im Einsatz und kann berichten ob das funktioniert?

                                      BoronsbruderB Online
                                      BoronsbruderB Online
                                      Boronsbruder
                                      wrote on last edited by Boronsbruder
                                      #5175

                                      @el_rob
                                      56791873-4e42-40b4-b0e7-b316fea31f66-grafik.png
                                      Es besteht die Möglichkeit im WebIf des GW2000 auszuwählen, welcher Wert an den Server gesendet werden soll. Somit sollte der WH40 auch funktioneren.

                                      E 1 Reply Last reply
                                      0
                                      • BoronsbruderB Boronsbruder

                                        @el_rob
                                        56791873-4e42-40b4-b0e7-b316fea31f66-grafik.png
                                        Es besteht die Möglichkeit im WebIf des GW2000 auszuwählen, welcher Wert an den Server gesendet werden soll. Somit sollte der WH40 auch funktioneren.

                                        E Offline
                                        E Offline
                                        el_rob
                                        wrote on last edited by
                                        #5176

                                        @boronsbruder Ah, okay. Das heisst, ich kann im Gateway einstellen, dass für den Wert "Regenstatus" der Wert des WS90 gesendet wird (da dieser aufgrund seines Piezo-Sensors schneller reagiert) und für die restlichen Regen-Werte (Menge etc.) die Daten des WH40 genommen werden?

                                        SBorgS BoronsbruderB 2 Replies Last reply
                                        0
                                        • E el_rob

                                          @boronsbruder Ah, okay. Das heisst, ich kann im Gateway einstellen, dass für den Wert "Regenstatus" der Wert des WS90 gesendet wird (da dieser aufgrund seines Piezo-Sensors schneller reagiert) und für die restlichen Regen-Werte (Menge etc.) die Daten des WH40 genommen werden?

                                          SBorgS Offline
                                          SBorgS Offline
                                          SBorg
                                          Forum Testing Most Active
                                          wrote on last edited by
                                          #5177

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

                                          für den Wert "Regenstatus" der Wert des WS90 gesendet

                                          In dem Fall egal, denn der kommt vom Skript, nicht vom Sensor ;)

                                          Ich kann nicht direkt auf den Wert verlinken, aber in der Liste steht es drin: https://github.com/SBorg2014/WLAN-Wetterstation/wiki

                                          Fehlende Sensoren kann ich in aller Regel implementieren, ich brauche dann nur den Datenstring. An den komme ich ohne Hardware nicht dran und Herstellersupport bekomme ich nicht.

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

                                          1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          606

                                          Online

                                          32.6k

                                          Users

                                          82.1k

                                          Topics

                                          1.3m

                                          Posts
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Home
                                          • Recent
                                          • Tags
                                          • Unread 0
                                          • Categories
                                          • Unreplied
                                          • Popular
                                          • GitHub
                                          • Docu
                                          • Hilfe