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

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Blockly
  5. Gedanken zur Feinstaubmessung

NEWS

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

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

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

Gedanken zur Feinstaubmessung

Geplant Angeheftet Gesperrt Verschoben Blockly
150 Beiträge 10 Kommentatoren 17.4k Aufrufe 8 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.
  • K klassisch

    MOD-Edit:
    **Dieses ist eine Abspaltung des Threads zu Problemen mit dem Luftdaten-Adapter

    Hier geht es um allgemeine Überlegungen und Möglichkeiten die Feinstaub Immissionen sinnvoll zu messen**

    @Homoran sagte in wrong type of...:

    Issue beim Luftdaten-Adapter ist erstellt.

    [Teil-OT]
    Betreibst Du einen eigenen Feinstaub-Sensor oder holst Du Dir die Daten aus der Cloud?
    Vor letzterem würde ich warnen. Ich betreibe einen eigenen, basierend auf dem SDS011. Und der ist bei H>70% out of Spec und zeigt dort wahrscheinlich zu hohe Werte an. Dennoch schicken die verteilten Feinstaubfreunde diese unzuverlässigen Daten weiter ins Netz. So etwas ist meiner Meinung nach irgendwas zwischen unseriös, irreführend oder Schlimmeren.
    Deshalb habe ich mein Gerät mit einem T-/H-Sensor gekoppelt und logge die Daten nur für H<70% und -10°C<=T>=50°C mit.
    Das führt dann auch dazu, daß ich seit dem 16.12.19 keine neuen Werte mehr bekommen habe. Natürlich kann ich welche manell abfragen, das sieht dann aber so aus:

    Feinstaub PM10: 12.00 µg/m^3;   PM2,5 :10.80 µg/m^3 
     	!!! ACHTUNG Feinstaubwerte ungueltig - T oder H out of Spec
    

    Aufgezeichneit wird in den "out of spec" Zeiten bei mir nichts.
    Und man sieht recht gut, daß die Feinstaubwerte kurz vor und nach dem Aussetzen nach oben gehen.

    HomoranH Nicht stören
    HomoranH Nicht stören
    Homoran
    Global Moderator Administrators
    schrieb am zuletzt editiert von Homoran
    #2

    @klassisch sagte in wrong type of...:

    holst Du Dir die Daten aus der Cloud?

    im Moment noch aus der cloud.
    Die Teile sind in D doch relativ teuer. Meine Meinung zu Ali kennst du ja.

    @klassisch sagte in wrong type of...:

    Dennoch schicken die verteilten Feinstaubfreunde diese unzuverlässigen Daten weiter ins Netz

    Danke für die Warnung - der DHT scheint bei den Stationen nicht mit verbaut zu sein, dann muss ich das über meine Außen-H-Werte korrigieren

    ich habe jetzt aktuell nur deswegen damit angefangen um mal zu sehen, wie es über Sylvester wieder hoch geht ;-)
    Hier sind zwei Stationen in der Nähe, jede "in der Nähe" einer anderen Autobahn und eine in dem Ex-Schutzgebiet der Shell

    kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

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

    der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

    K 1 Antwort Letzte Antwort
    0
    • HomoranH Homoran

      @klassisch sagte in wrong type of...:

      holst Du Dir die Daten aus der Cloud?

      im Moment noch aus der cloud.
      Die Teile sind in D doch relativ teuer. Meine Meinung zu Ali kennst du ja.

      @klassisch sagte in wrong type of...:

      Dennoch schicken die verteilten Feinstaubfreunde diese unzuverlässigen Daten weiter ins Netz

      Danke für die Warnung - der DHT scheint bei den Stationen nicht mit verbaut zu sein, dann muss ich das über meine Außen-H-Werte korrigieren

      ich habe jetzt aktuell nur deswegen damit angefangen um mal zu sehen, wie es über Sylvester wieder hoch geht ;-)
      Hier sind zwei Stationen in der Nähe, jede "in der Nähe" einer anderen Autobahn und eine in dem Ex-Schutzgebiet der Shell

      K Offline
      K Offline
      klassisch
      Most Active
      schrieb am zuletzt editiert von
      #3

      @Homoran sagte in wrong type of...:

      Danke für die Warnung - der DHT scheint bei den Stationen nicht mit verbaut zu sein, dann muss ich das über meine Außen-H-Werte korrigieren

      Die DHT gehören auch nicht zu den besseren Sensoren. Ich habe an dieser Stelle einen SHT31. Und zwar so, daß man ihn einfach austauschen kann. Im Freien leiden die Feuchtesensoren leider etwas.

      ich habe jetzt aktuell nur deswegen damit angefangen um mal zu sehen, wie es über Sylvester wieder hoch geht ;-)

      Das wollte ich letztes Jahr auch. Allerdings war Sylvester 2018 ebenfalls zu feucht, so daß ich keine Daten übermittelt und gespeichert habe. So wie es aussieht wird es dieses Jahr wieder so. Und wenn es regnet oder nebelt, wird ein großer Teil der Partikel gebunden und weggespült. Nach einem Regen ist ja bekanntlich die Fernsicht sehr gut.

      Hier sind zwei Stationen in der Nähe, jede "in der Nähe" einer anderen Autobahn und eine in dem Ex-Schutzgebiet der Shell

      Wenn das offizielle Stationen sind, kann das anders aussehen. Da muß man in D zwar den Aufstellungsort genauer anschauen, aber die zugelassenen Stationen sollten Trockner vorgeschaltet haben. Aber Trocknen ohne den Meßwert zu verfälschen ist auch nicht so einfach. Ich habe das vor langer Zeit bei Prozeßgasen beruflich gemacht. Aber hier und heute hätte ich nicht die Meßmittel, um nachzuweisen, daß die Trocknung nichts verfälscht. Deshalb logge ich in den out of spec Zeiten einfach nicht mit. Und die Luftdaten-Freunde mit den Billigdingern sollten das meiner Meinung auch nicht tun. Und schon gar nicht irgendwelche Langzeitauswerungen. Und so lange sie es dennoch tun, bleibt da ein "Geschmäckle" von - s.o.

      HomoranH 1 Antwort Letzte Antwort
      0
      • K klassisch

        @Homoran sagte in wrong type of...:

        Danke für die Warnung - der DHT scheint bei den Stationen nicht mit verbaut zu sein, dann muss ich das über meine Außen-H-Werte korrigieren

        Die DHT gehören auch nicht zu den besseren Sensoren. Ich habe an dieser Stelle einen SHT31. Und zwar so, daß man ihn einfach austauschen kann. Im Freien leiden die Feuchtesensoren leider etwas.

        ich habe jetzt aktuell nur deswegen damit angefangen um mal zu sehen, wie es über Sylvester wieder hoch geht ;-)

        Das wollte ich letztes Jahr auch. Allerdings war Sylvester 2018 ebenfalls zu feucht, so daß ich keine Daten übermittelt und gespeichert habe. So wie es aussieht wird es dieses Jahr wieder so. Und wenn es regnet oder nebelt, wird ein großer Teil der Partikel gebunden und weggespült. Nach einem Regen ist ja bekanntlich die Fernsicht sehr gut.

        Hier sind zwei Stationen in der Nähe, jede "in der Nähe" einer anderen Autobahn und eine in dem Ex-Schutzgebiet der Shell

        Wenn das offizielle Stationen sind, kann das anders aussehen. Da muß man in D zwar den Aufstellungsort genauer anschauen, aber die zugelassenen Stationen sollten Trockner vorgeschaltet haben. Aber Trocknen ohne den Meßwert zu verfälschen ist auch nicht so einfach. Ich habe das vor langer Zeit bei Prozeßgasen beruflich gemacht. Aber hier und heute hätte ich nicht die Meßmittel, um nachzuweisen, daß die Trocknung nichts verfälscht. Deshalb logge ich in den out of spec Zeiten einfach nicht mit. Und die Luftdaten-Freunde mit den Billigdingern sollten das meiner Meinung auch nicht tun. Und schon gar nicht irgendwelche Langzeitauswerungen. Und so lange sie es dennoch tun, bleibt da ein "Geschmäckle" von - s.o.

        HomoranH Nicht stören
        HomoranH Nicht stören
        Homoran
        Global Moderator Administrators
        schrieb am zuletzt editiert von
        #4

        @klassisch sagte in wrong type of...:

        Wenn das offizielle Stationen sind,

        Nee, das sind luftinfo-Stationen.
        Es gibt eine offizielle Station von der Site des Umweltbundesamts - etwa 3 km weg weg.

        Zum abrufen der UBA-Stationen gibt es ein Skript hier im Forum

        kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

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

        der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

        1 Antwort Letzte Antwort
        0
        • K Offline
          K Offline
          klassisch
          Most Active
          schrieb am zuletzt editiert von klassisch
          #5

          [/Teil-OT]
          Gerade mal nachgeschaut: SDS011

          • Reichelt 30 EUR
          • Pollin 30 EUR heute (26.12.) noch praktisch versandkostenfrei
          • Banggood (seriös und nimmt PayPal) 18.04 EUR
          • ebay 272657389015 aus China, 19 EUR
          • Der Vollständigkeit halber: ali (823 verkauft, 224 Reviews, sieht also seriös aus) 15.83

          Dazu empfehle ich einen ESP32 weil der 2 Serielle Schnittstellen hat.

          HomoranH 1 Antwort Letzte Antwort
          0
          • K klassisch

            [/Teil-OT]
            Gerade mal nachgeschaut: SDS011

            • Reichelt 30 EUR
            • Pollin 30 EUR heute (26.12.) noch praktisch versandkostenfrei
            • Banggood (seriös und nimmt PayPal) 18.04 EUR
            • ebay 272657389015 aus China, 19 EUR
            • Der Vollständigkeit halber: ali (823 verkauft, 224 Reviews, sieht also seriös aus) 15.83

            Dazu empfehle ich einen ESP32 weil der 2 Serielle Schnittstellen hat.

            HomoranH Nicht stören
            HomoranH Nicht stören
            Homoran
            Global Moderator Administrators
            schrieb am zuletzt editiert von Homoran
            #6

            @klassisch
            Das hatte ich gestern schon durch, hatte noch Völkner, Eckstein und EXP-Tech als Lieferanten, bei denen ich ab und zu kaufe.

            Banggood war für mich erste Wahl mit Lager GB (solange das noch EU ist ;-) )
            [Heute nur noch CN Warehouse]

            Ich wollte dann "ein paar" ESP8266 mitnehemen, daber da waren gestern nur noch 4 - heute 3 und der Preis aus UK ist mit 6,xx doch nicht unbedingt günstig

            Kann ich für den ESP32 den gleichen Sketch nehmen wie für den 8266?

            EDIT: Sehe gerade dass bei Berrybase (LINK bei Luftdaten.info (https://www.berrybase.de/bauelemente/sensoren-module/gas-staub/nova-fitness-sds011-feinstaub-sensor-inkl.-usb-adapter) der sds011 auch nicht zu teuer, und das ganze Set für knapp 36€ zu bekommen ist

            kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

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

            der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

            K 1 Antwort Letzte Antwort
            0
            • HomoranH Homoran

              @klassisch
              Das hatte ich gestern schon durch, hatte noch Völkner, Eckstein und EXP-Tech als Lieferanten, bei denen ich ab und zu kaufe.

              Banggood war für mich erste Wahl mit Lager GB (solange das noch EU ist ;-) )
              [Heute nur noch CN Warehouse]

              Ich wollte dann "ein paar" ESP8266 mitnehemen, daber da waren gestern nur noch 4 - heute 3 und der Preis aus UK ist mit 6,xx doch nicht unbedingt günstig

              Kann ich für den ESP32 den gleichen Sketch nehmen wie für den 8266?

              EDIT: Sehe gerade dass bei Berrybase (LINK bei Luftdaten.info (https://www.berrybase.de/bauelemente/sensoren-module/gas-staub/nova-fitness-sds011-feinstaub-sensor-inkl.-usb-adapter) der sds011 auch nicht zu teuer, und das ganze Set für knapp 36€ zu bekommen ist

              K Offline
              K Offline
              klassisch
              Most Active
              schrieb am zuletzt editiert von klassisch
              #7

              @Homoran Die Luftleute machen das mit dem ESP8266 und haben einen eigenen Sketch, der die Daten bei denen auf der Website abliefert. So war das zumindest als ich mir das angeschaut habe.
              Der ESP8266 hat aber nur eine HW-Serial, die man gemeinhin als Diagnose/Programming etc. nutzt. Deshalb nutzen die Luftleute eine SW-Serial, was wohl auch im Großen Ganzen funktioniert und mit 9600Bd ist der Sensor auch langsam genug.
              Ich hatte das mal mit einem Fingerprintsensor eine SW Serial eingesetzt, was mir aber tricky in Erinnerung blieb. Vielleicht weil das einer meiner ersten Versuche mit dem ESP8266 war.
              Deshalb habe ich was mit dem ESP32 gemacht - wollte ohnehin mal was mit dem ESP32 machen. Verwendet habe ich https://github.com/sensebox/SDS011-select-serial forked from https://github.com/sensebox/SDS011-select-serial forked from https://github.com/ricki-z/SDS011 was man wohl mit HWSerial und SWSerial betreiben kann. Und angeblich https://github.com/ricki-z/SDS011/blob/master/library.properties kann man das mit

              architectures=esp8266,avr,esp32
              

              betreiben. Bei ESP32 mit HW-Serial.
              Das habe ich in meinen Monstersketch hineneingequetscht und kann so auch T-H Messen - mit BME280 oder SHT31.
              Übertragen werden die Daten direkt an ioBroker über simpleApi.

              HomoranH 1 Antwort Letzte Antwort
              0
              • K klassisch

                @Homoran Die Luftleute machen das mit dem ESP8266 und haben einen eigenen Sketch, der die Daten bei denen auf der Website abliefert. So war das zumindest als ich mir das angeschaut habe.
                Der ESP8266 hat aber nur eine HW-Serial, die man gemeinhin als Diagnose/Programming etc. nutzt. Deshalb nutzen die Luftleute eine SW-Serial, was wohl auch im Großen Ganzen funktioniert und mit 9600Bd ist der Sensor auch langsam genug.
                Ich hatte das mal mit einem Fingerprintsensor eine SW Serial eingesetzt, was mir aber tricky in Erinnerung blieb. Vielleicht weil das einer meiner ersten Versuche mit dem ESP8266 war.
                Deshalb habe ich was mit dem ESP32 gemacht - wollte ohnehin mal was mit dem ESP32 machen. Verwendet habe ich https://github.com/sensebox/SDS011-select-serial forked from https://github.com/sensebox/SDS011-select-serial forked from https://github.com/ricki-z/SDS011 was man wohl mit HWSerial und SWSerial betreiben kann. Und angeblich https://github.com/ricki-z/SDS011/blob/master/library.properties kann man das mit

                architectures=esp8266,avr,esp32
                

                betreiben. Bei ESP32 mit HW-Serial.
                Das habe ich in meinen Monstersketch hineneingequetscht und kann so auch T-H Messen - mit BME280 oder SHT31.
                Übertragen werden die Daten direkt an ioBroker über simpleApi.

                HomoranH Nicht stören
                HomoranH Nicht stören
                Homoran
                Global Moderator Administrators
                schrieb am zuletzt editiert von
                #8

                @klassisch
                Ich werde da ganz bestimmt auf dich zukommen wenn ich meinen eigenen Sensor bauen will. ;-)

                In der Zwischenzeit logge ich die Werte zweier Stationen der Luftinfo und einer des UBA:
                PM10_Luftdaten_vs_UBA.png

                Auch die rH logge ich mit

                Danke fürs Anschubsen

                kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

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

                der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                K 1 Antwort Letzte Antwort
                0
                • HomoranH Homoran

                  @klassisch
                  Ich werde da ganz bestimmt auf dich zukommen wenn ich meinen eigenen Sensor bauen will. ;-)

                  In der Zwischenzeit logge ich die Werte zweier Stationen der Luftinfo und einer des UBA:
                  PM10_Luftdaten_vs_UBA.png

                  Auch die rH logge ich mit

                  Danke fürs Anschubsen

                  K Offline
                  K Offline
                  klassisch
                  Most Active
                  schrieb am zuletzt editiert von
                  #9

                  @Homoran gerne, auch wenn das bei mir schon wieder einige Zeit her ist. März 2018 war wohl der letzte Compilerlauf, Sensor kam Ende Februar 2018 an.
                  Habe heute den Sketch noch so modifiziert, daß ich alternativ CO2 messen kann, wenn denn der MH-Z19 Sensor mal ankommt.
                  Offizielle Meßstationen gibt es 3 in ca. 20 bis 25km Entfernung, Zwei nach Norden, wobei eine davon direkt an einer Staustraße ist, die andere an einer strak befahrenen Bundesstraße und eine nach Süden hin, an einer mäßig befahrenen Bundesstraße. Die paßt für mich eher, hat auch einen realistischeren Abstand zur Straße.
                  Ist das das passende Skript zum Auslesen https://forum.iobroker.net/post/303043 ?
                  https://forum.iobroker.net/post/303043

                  HomoranH 1 Antwort Letzte Antwort
                  0
                  • K klassisch

                    @Homoran gerne, auch wenn das bei mir schon wieder einige Zeit her ist. März 2018 war wohl der letzte Compilerlauf, Sensor kam Ende Februar 2018 an.
                    Habe heute den Sketch noch so modifiziert, daß ich alternativ CO2 messen kann, wenn denn der MH-Z19 Sensor mal ankommt.
                    Offizielle Meßstationen gibt es 3 in ca. 20 bis 25km Entfernung, Zwei nach Norden, wobei eine davon direkt an einer Staustraße ist, die andere an einer strak befahrenen Bundesstraße und eine nach Süden hin, an einer mäßig befahrenen Bundesstraße. Die paßt für mich eher, hat auch einen realistischeren Abstand zur Straße.
                    Ist das das passende Skript zum Auslesen https://forum.iobroker.net/post/303043 ?
                    https://forum.iobroker.net/post/303043

                    HomoranH Nicht stören
                    HomoranH Nicht stören
                    Homoran
                    Global Moderator Administrators
                    schrieb am zuletzt editiert von
                    #10

                    @klassisch sagte in wrong type of...:

                    Ist das das passende Skript zum Auslesen

                    Ja!

                    Du musst einmal die Abfrage der Stationen manuell machen und "deine" Station irgendwie finden. Da dann die ID raussuchen und in dem Skript eintragen.

                    kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

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

                    der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                    K 1 Antwort Letzte Antwort
                    0
                    • HomoranH Homoran

                      @klassisch sagte in wrong type of...:

                      Ist das das passende Skript zum Auslesen

                      Ja!

                      Du musst einmal die Abfrage der Stationen manuell machen und "deine" Station irgendwie finden. Da dann die ID raussuchen und in dem Skript eintragen.

                      K Offline
                      K Offline
                      klassisch
                      Most Active
                      schrieb am zuletzt editiert von klassisch
                      #11

                      @Homoran Habe ich gemacht, funktioniert aber nicht wirklich. Die Messwerte sind 1 Tag alt und kommen im Bundle und ein Messwert wird als "null" geschickt.
                      Frage ich die Station manuell über die Webseite des LandesUmweltamtes ab, kommen die Daten im Klartext auf der Webseite eingebettet an. Also man kann sie als Mensch lesen und es gibt alle Meßwerte, die die Station kann. einigermaßen aktuell. Jetzt, um 11:40 werden die 11:00 Werte angezeigt.
                      Von der Bundesamt-Seite gezogen kommen die Werte von gestern und das auch noch lückenhaft.
                      Wahrscheinlich gibt es da einen Großrechner Nachtlauf, der die Daten vom Vortag überträgt.
                      Das Suchen der Station ging am besten so: Über die Karte eine Station picken und dann gabs bei mir irgendwann die Site des Landesamtes. Dort kann man auch auf Diagramm klicken und dann weren Meßstelleninformationen angezeigt. Darunter eine EU-Kennung.
                      Dann öffnet man den Suchlink, der im Skript referenziert ist, wartet ewig und sucht dann nach dieser EU-Kennung. Dann sieht man auch die Zahl.

                      HomoranH 1 Antwort Letzte Antwort
                      0
                      • K klassisch

                        @Homoran Habe ich gemacht, funktioniert aber nicht wirklich. Die Messwerte sind 1 Tag alt und kommen im Bundle und ein Messwert wird als "null" geschickt.
                        Frage ich die Station manuell über die Webseite des LandesUmweltamtes ab, kommen die Daten im Klartext auf der Webseite eingebettet an. Also man kann sie als Mensch lesen und es gibt alle Meßwerte, die die Station kann. einigermaßen aktuell. Jetzt, um 11:40 werden die 11:00 Werte angezeigt.
                        Von der Bundesamt-Seite gezogen kommen die Werte von gestern und das auch noch lückenhaft.
                        Wahrscheinlich gibt es da einen Großrechner Nachtlauf, der die Daten vom Vortag überträgt.
                        Das Suchen der Station ging am besten so: Über die Karte eine Station picken und dann gabs bei mir irgendwann die Site des Landesamtes. Dort kann man auch auf Diagramm klicken und dann weren Meßstelleninformationen angezeigt. Darunter eine EU-Kennung.
                        Dann öffnet man den Suchlink, der im Skript referenziert ist, wartet ewig und sucht dann nach dieser EU-Kennung. Dann sieht man auch die Zahl.

                        HomoranH Nicht stören
                        HomoranH Nicht stören
                        Homoran
                        Global Moderator Administrators
                        schrieb am zuletzt editiert von Homoran
                        #12

                        @klassisch
                        Das ist mir noch nicht aufgefallen!

                        Habe mich gestern wegen der Skalierung der Flot-Achsen ein wenig mit dem BImSchG beschäftigt.
                        Die angegeben Grenzen beziehen sich immer auf das maximale Tagesmittel, das wiederum maximal x mal im Jahr überschritten werden darf und einem maximalen Jahresmittel.

                        Deshalb erstelle ich jetzt auch einen fließenden Mittelwert über den Tag und trage diesen zum Tagesende in einen anderen Datenpunkt ein.

                        Daher ergibt es schon einen Sinn, wenn nur das Tagesmittel angegeben wird. Das geht natürlich erst am Folgetag.

                        Ich sehe mir das gleich nochmal an!
                        Hatte auch schon versucht die Seite des UBA über den parser zauszulesen . auf die Schnelle ohne Erfolg

                        kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

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

                        der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                        K 1 Antwort Letzte Antwort
                        0
                        • HomoranH Homoran

                          @klassisch
                          Das ist mir noch nicht aufgefallen!

                          Habe mich gestern wegen der Skalierung der Flot-Achsen ein wenig mit dem BImSchG beschäftigt.
                          Die angegeben Grenzen beziehen sich immer auf das maximale Tagesmittel, das wiederum maximal x mal im Jahr überschritten werden darf und einem maximalen Jahresmittel.

                          Deshalb erstelle ich jetzt auch einen fließenden Mittelwert über den Tag und trage diesen zum Tagesende in einen anderen Datenpunkt ein.

                          Daher ergibt es schon einen Sinn, wenn nur das Tagesmittel angegeben wird. Das geht natürlich erst am Folgetag.

                          Ich sehe mir das gleich nochmal an!
                          Hatte auch schon versucht die Seite des UBA über den parser zauszulesen . auf die Schnelle ohne Erfolg

                          K Offline
                          K Offline
                          klassisch
                          Most Active
                          schrieb am zuletzt editiert von
                          #13

                          @Homoran Neinein, bekommen kein Tagesmittel. Ich bekomme 10 Arrays mit gestrigem Datum und zwar von 00:00 bis 09:00 Uhr. In den Arrays stecken nochmals Arrays drin und da drin Daten. Ich vergleiche das mal mit dem Format der "633" aus dem Thread.

                          HomoranH 1 Antwort Letzte Antwort
                          0
                          • K klassisch

                            @Homoran Neinein, bekommen kein Tagesmittel. Ich bekomme 10 Arrays mit gestrigem Datum und zwar von 00:00 bis 09:00 Uhr. In den Arrays stecken nochmals Arrays drin und da drin Daten. Ich vergleiche das mal mit dem Format der "633" aus dem Thread.

                            HomoranH Nicht stören
                            HomoranH Nicht stören
                            Homoran
                            Global Moderator Administrators
                            schrieb am zuletzt editiert von Homoran
                            #14

                            @klassisch

                            Habe gerade das log der Daten angesehen:

                            UBA_RoKi_log.png

                            Da kommen mit dem Skript regelmäßig Daten

                            kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

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

                            der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                            K 1 Antwort Letzte Antwort
                            0
                            • HomoranH Homoran

                              @klassisch

                              Habe gerade das log der Daten angesehen:

                              UBA_RoKi_log.png

                              Da kommen mit dem Skript regelmäßig Daten

                              K Offline
                              K Offline
                              klassisch
                              Most Active
                              schrieb am zuletzt editiert von
                              #15

                              @Homoran Also bei mir hat die "633" ein ähnlicher Format wie meine. Und auch die Daten sind ein Tag alt. Irgendwas mache ich also falsch.

                              HomoranH 1 Antwort Letzte Antwort
                              0
                              • K klassisch

                                @Homoran Also bei mir hat die "633" ein ähnlicher Format wie meine. Und auch die Daten sind ein Tag alt. Irgendwas mache ich also falsch.

                                HomoranH Nicht stören
                                HomoranH Nicht stören
                                Homoran
                                Global Moderator Administrators
                                schrieb am zuletzt editiert von
                                #16

                                @klassisch
                                Nur das wir vom gleichen reden.

                                Hier das Skript:

                                /* Luftdaten
                                -
                                Liest Daten eines Luftdaten-Sensors
                                von https://www.umweltbundesamt.de/api aus
                                -
                                https://www.umweltbundesamt.de/api/air_data/v2/xxx
                                Request all stations (to find the station code for your region):
                                https://www.umweltbundesamt.de/api/air_data/v2/meta/json?use=airquality&date_from=2019-01-01&date_to=2019-01-01&time_from=1&time_to=2
                                -
                                todo: Optin
                                -
                                20.09.2019 erstellt auf Vorlage von von Pix
                                */
                                
                                
                                var sensorid = "1114";
                                
                                var logging       = false;
                                var instanz       = 'javascript.' + instance + '.';
                                var pfad          = 'Luftdaten.' + sensorid + '.';
                                var cronStr       = "14,29,44,59 * * * *";
                                //var cronStr       = "* * * * *";
                                
                                function createStates () {
                                
                                // Allgemein   
                                   createState(pfad + 'json', {
                                       name: 'JSON',
                                       desc: 'JSON Ausgabe',
                                       type: 'string',
                                       role: 'json'
                                   }, function () {
                                       if (logging) log('Objekt ' + instanz + pfad + 'json erstellt');
                                   });
                                
                                   createState(pfad + 'sensor_id', {
                                       name: 'ID',
                                       desc: 'ID-Nummer des Sensors',
                                       type: 'string',
                                       role: 'text'
                                   }, function () {
                                       if (logging) log('Objekt ' + instanz + pfad + 'sensor_id erstellt');
                                   });
                                   
                                   createState(pfad + 'sensor_type', {
                                       name: 'Typ',
                                       desc: 'Type des Sensors',
                                       type: 'string',
                                       role: 'text'
                                   }, function () {
                                       if (logging) log('Objekt ' + instanz + pfad + 'sensor_type erstellt');
                                   });
                                
                                   createState(pfad + 'location', {
                                       name: 'Ort',
                                       desc: 'Location des Sensors',
                                       type: 'string',
                                       role: 'text'
                                   }, function () {
                                       if (logging) log('Objekt ' + instanz + pfad + 'location erstellt');
                                   });
                                   
                                   createState(pfad + 'lat', {
                                       name: 'Latitude',
                                       desc: 'Geographische Lage des Sensors - Breite',
                                       type: 'number',
                                       unit: '°',
                                       role: 'val'
                                   }, function () {
                                       if (logging) log('Objekt ' + instanz + pfad + 'latitude erstellt');
                                   });
                                   
                                   createState(pfad + 'lon', {
                                       name: 'Longitude',
                                       desc: 'Geographische Lage des Sensors - Länge',
                                       type: 'number',
                                       unit: '°',
                                       role: 'val'
                                   }, function () {
                                       if (logging) log('Objekt ' + instanz + pfad + 'longitude erstellt');
                                   });
                                   
                                   createState(pfad + 'country', {
                                       name: 'Country Code',
                                       desc: 'Geographische Lage des Sensors - Landeskürzel',
                                       type: 'string',
                                       role: 'text'
                                   }, function () {
                                       if (logging) log('Objekt ' + instanz + pfad + 'country erstellt');
                                   });
                                   
                                   createState(pfad + 'Messung.timestamp', {
                                       name: 'Zeitstempel',
                                       desc: 'Zeitstempel der Messung',
                                       type: 'string',
                                       role: 'text'
                                   }, function () {
                                       if (logging) log('Objekt ' + instanz + pfad + 'timestamp erstellt');
                                   });
                                   
                                   createState(pfad + 'Messung.PM10', {
                                       name: 'PM10',
                                       desc: 'Messung PM10',
                                       type: 'number',
                                       role: 'val',
                                   }, function () {
                                       if (logging) log('Objekt ' + instanz + pfad + 'Messung.PM10 erstellt');
                                   });
                                
                                   createState(pfad + 'Messung.O3', {
                                       name: 'O3',
                                       desc: 'Messung O3',
                                       type: 'number',
                                       role: 'val',
                                   }, function () {
                                       if (logging) log('Objekt ' + instanz + pfad + 'Messung.O3 erstellt');
                                   });
                                
                                   createState(pfad + 'Messung.NO2', {
                                       name: 'NO2',
                                       desc: 'Messung NO2',
                                       type: 'number',
                                       role: 'val',
                                   }, function () {
                                       if (logging) log('Objekt ' + instanz + pfad + 'Messung.NO2 erstellt');
                                   });
                                
                                   createState(pfad + 'forceRefresh', {
                                       name: 'aktualisieren',
                                       desc: 'Werte neu einlesen',
                                       type: 'boolean',
                                       def:  false,
                                       role: 'indicator'
                                   }, function () {
                                       if (logging) log('Objekt ' + instanz + pfad + 'forceRefresh erstellt');
                                   });
                                }
                                
                                
                                function readData() {
                                   var Today, Now, DateString;
                                   var request = require('request');
                                   Today = new Date();
                                   DateString = Today.getFullYear() + '-' + (Today.getMonth()+1) + '-' + (Today.getDate()-1);
                                   Now = Today.getHours();
                                   var url= 'https://www.umweltbundesamt.de/api/air_data/v2/airquality/json?date_from=' + DateString + '&date_to=' + DateString + '&time_from=1' + '&time_to=' + (Now-1) + '&station=' + sensorid;
                                   //log(url);
                                   var options = {
                                       url: 'https://www.umweltbundesamt.de/api/air_data/v2/airquality/json?date_from=' + DateString + '&date_to=' + DateString + '&time_from=1' + '&time_to=' + (Now-1) + '&station=' + sensorid,
                                       headers: {
                                           'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.1'
                                       }
                                   };  
                                   try {
                                       request(options, function (error, response, body) {
                                           if (!error && response.statusCode == 200) {              // kein Fehler, Inhalt in body
                                               var p1, p2;
                                               var json = JSON.parse(body);
                                               var Station = json.data[sensorid];
                                               var allPropertyNames = Object.keys(Station);
                                               setState(pfad + 'json',JSON.stringify(json.data));
                                               if (logging) {
                                                   for (var j=0; j<allPropertyNames.length; j++) {
                                                       var name = allPropertyNames[j];
                                                       var value = Station[name];
                                                       log('name: ' + name + '; value: ' + value);
                                                   }
                                               }
                                               //log(allPropertyNames.length);
                                               //Use only the last entry, because this is the latest: that's what we want to add
                                               name = allPropertyNames[allPropertyNames.length-1];
                                               value = Station[name];
                                
                                               if (logging) {
                                                   //log('JSON: ' + JSON.stringify(json.data));
                                                   //log('Station: ' + JSON.stringify(Station));
                                                   //log('JSON: ' + JSON.stringify(json.indices.data));
                                                   log(name + 'value[0]: ' + value[0]);
                                                   log(name + 'value[1]: ' + value[1]);
                                                   log(name + 'value[2]: ' + value[2]);
                                                   log(name + 'value[3]: ' + value[3]);
                                                   log(name + 'value[4]: ' + value[4]);
                                                   log(name + 'value[5]: ' + value[5]);
                                                   log(name + 'value[6]: ' + value[6]);
                                                   //var xx = value[3][0];
                                                   //log(xx);
                                               }
                                               var PM10,O3, NO2;
                                               for (var count=3; count<value.length; count++) {
                                                   //log(parseInt(value[count][0]));
                                                   //log(value.length);
                                                   switch(parseInt(value[count][0])) {
                                                       case 1:
                                                           // PM10
                                                           PM10 = value[count][1];
                                                           //log('PM10: ' + PM10);
                                                           setState(pfad + 'Messung.PM10', parseFloat(PM10),true);
                                                           break;
                                                       case 3:
                                                               // O3
                                                               O3 = value[count][1];
                                                               //log('O3: ' + O3);
                                                               setState(pfad + 'Messung.O3', parseFloat(O3),true);
                                                               break;
                                                           case 5:
                                                               // NO2
                                                               NO2 = value[count][1];
                                                               //log('NO2: ' + NO2);
                                                               setState(pfad + 'Messung.NO2', parseFloat(NO2),true);
                                                               break;
                                                           default:
                                                               // code block
                                                   } 
                                               }
                                 /*
                                               setState(pfad + 'sensor_id', json[0].sensor.id.toString());
                                               setState(pfad + 'sensor_type', json[0].sensor.sensor_type.name + ' by ' + json[0].sensor.sensor_type.manufacturer);
                                               
                                               setState(pfad + 'location', json[0].location.id.toString());
                                               setState(pfad + 'lat', parseFloat(json[0].location.latitude));
                                               setState(pfad + 'lon', parseFloat(json[0].location.longitude));
                                               setState(pfad + 'country', json[0].location.country);
                                               
                                               setState(pfad + 'Messung.timestamp', json[0].timestamp);
                                               p1 = json[0].sensordatavalues[0].value;
                                               p2 = json[0].sensordatavalues[1].value;
                                               
                                               setState(pfad + 'Messung.P1', parseFloat(p1));
                                               setState(pfad + 'Messung.P2', parseFloat(p2));
                                               */
                                           } else {
                                               log("StatusCode = "+response.statusCode);
                                               log(error,'error');                               // Error beim Einlesen
                                           }
                                       });
                                       log('Luftdaten aktualisiert');
                                   } catch (e) {
                                       log('Fehler (try) Luftdaten.info: ' + e, 'error');
                                   }
                                }
                                
                                // regelmässige Wiederholungen
                                schedule(cronStr, readData);
                                
                                // einmaliger Start bei Skriptstart
                                createStates();
                                setTimeout(readData, 1500);
                                
                                // Start beim Setzen auf true
                                on(instanz + pfad + 'forceRefresh', function (obj) {
                                   if (!obj.state.ack && obj.state.val) readData();
                                });
                                
                                

                                In Zeile 7 steht ein Link.

                                Diesen aufrufen - und ja, das dauert ewig - dann in der Liste (ARRAY) die Nummer deiner Station suchen.
                                Dazu uf der Karte des UmweltBUNDESamtes https://www.umweltbundesamt.de/daten/luft/luftdaten/luftqualitaet/eJzrWJSSuMrIwNBS19BI18h8UUnmIkODRXmpCw0XFZcsNjIyWZziVoRQYLA4JSQfWX1uFcei3OSmxTmJJacdPPxn1vE1PF6ck5d-2kFxFf-EabvnAQCejCSu

                                Deine Station suchen und den Stationsnamen in dem Array suchen.

                                Die dort befindliche Stationsnummer im Skript in Zeile 16 eintragen

                                kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

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

                                der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                                1 Antwort Letzte Antwort
                                0
                                • HomoranH Nicht stören
                                  HomoranH Nicht stören
                                  Homoran
                                  Global Moderator Administrators
                                  schrieb am zuletzt editiert von
                                  #17

                                  Bin ein wenig weiter.
                                  Habe noch die Seite vom LANUV (Landesamt für Natur, Umwelt und Verkehr, NRW) über den Parser ausgelesen.
                                  Hier neben PM10 auch die Werte für NO2 und O3, was das Skript über die API vom UBA auch ermittelt.

                                  Langsam glaube ich an nichts mehr:

                                  Luftwerte.png

                                  Da passt nichts zusammen ;-)

                                  kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

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

                                  der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                                  K 1 Antwort Letzte Antwort
                                  0
                                  • HomoranH Homoran

                                    Bin ein wenig weiter.
                                    Habe noch die Seite vom LANUV (Landesamt für Natur, Umwelt und Verkehr, NRW) über den Parser ausgelesen.
                                    Hier neben PM10 auch die Werte für NO2 und O3, was das Skript über die API vom UBA auch ermittelt.

                                    Langsam glaube ich an nichts mehr:

                                    Luftwerte.png

                                    Da passt nichts zusammen ;-)

                                    K Offline
                                    K Offline
                                    klassisch
                                    Most Active
                                    schrieb am zuletzt editiert von
                                    #18

                                    @Homoran So, jetzt habe ich auch wieder her gefunden. Ja, bei mir passt das auch nicht. Die Webseite des Landes sagt etwas anderes als das Skript.
                                    Habe jetzt das Skript neu geladen - und er holt wieder Werte von gestern.
                                    Vielleicht mittelt das Skript, ich habe es nicht verstanden. Ausserdem zeigt es nicht alle Werte an.
                                    Wie hast Du die Seite Deines Landes geparst?
                                    Ich habe mal als Beispiel die Meßstation in der Nähe des ioBroker Headquarter genommen. Da gibt es z.B. diese "Karlsruhe Reinhold Frank-Straße":

                                    https://www.umweltbundesamt.de/daten/luft/luftdaten/luftqualitaet

                                    https://www.lubw.baden-wuerttemberg.de/luft/messwerte-immissionswerte#karte

                                    Aber da muß man noch irgendwelche Menues bedienen. Das wird wohl nichts.

                                    HomoranH 1 Antwort Letzte Antwort
                                    0
                                    • K klassisch

                                      @Homoran So, jetzt habe ich auch wieder her gefunden. Ja, bei mir passt das auch nicht. Die Webseite des Landes sagt etwas anderes als das Skript.
                                      Habe jetzt das Skript neu geladen - und er holt wieder Werte von gestern.
                                      Vielleicht mittelt das Skript, ich habe es nicht verstanden. Ausserdem zeigt es nicht alle Werte an.
                                      Wie hast Du die Seite Deines Landes geparst?
                                      Ich habe mal als Beispiel die Meßstation in der Nähe des ioBroker Headquarter genommen. Da gibt es z.B. diese "Karlsruhe Reinhold Frank-Straße":

                                      https://www.umweltbundesamt.de/daten/luft/luftdaten/luftqualitaet

                                      https://www.lubw.baden-wuerttemberg.de/luft/messwerte-immissionswerte#karte

                                      Aber da muß man noch irgendwelche Menues bedienen. Das wird wohl nichts.

                                      HomoranH Nicht stören
                                      HomoranH Nicht stören
                                      Homoran
                                      Global Moderator Administrators
                                      schrieb am zuletzt editiert von
                                      #19

                                      @klassisch
                                      habe mich gerade zdurch den Code gewühlt und @piForscher in dem Thread zum Skript angepingt:
                                      https://forum.iobroker.net/topic/6777/luftdate-info-per-skript-einlesen/26

                                      Ich sehe mir mal deine Links an, ob ich da was machen kann.
                                      Auch in der Website des LANUV muss man den Quelltext des Tabellen-Frames analysieren.

                                      kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

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

                                      der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                                      HomoranH 1 Antwort Letzte Antwort
                                      0
                                      • HomoranH Homoran

                                        @klassisch
                                        habe mich gerade zdurch den Code gewühlt und @piForscher in dem Thread zum Skript angepingt:
                                        https://forum.iobroker.net/topic/6777/luftdate-info-per-skript-einlesen/26

                                        Ich sehe mir mal deine Links an, ob ich da was machen kann.
                                        Auch in der Website des LANUV muss man den Quelltext des Tabellen-Frames analysieren.

                                        HomoranH Nicht stören
                                        HomoranH Nicht stören
                                        Homoran
                                        Global Moderator Administrators
                                        schrieb am zuletzt editiert von
                                        #20

                                        @klassisch sagte in Gedanken zur Feinstaubmessung:

                                        Wie hast Du die Seite Deines Landes geparst?

                                        Nachdem ich die Seiten des Landesamts BaWü gesehen habe muss ich sagen ich habe Glück:
                                        https://www.lanuv.nrw.de/umwelt/luft/immissionen/aktuelle-luftqualitaet

                                        Im linken Menü dann den Parameter auswählen und mit der rechten Maustaste in der Tabelle den frame-Quelltext anzeigen.
                                        Da kann man dann parsen.

                                        z.B. PM10:
                                        Frame-Link: https://www.lanuv.nrw.de/fileadmin/lanuv/luft/immissionen/aktluftqual/eu_pm10_akt.htm
                                        RegEx: RODE<\/td><td class="eins">[<\d]*<\/td><td class="zwei">([<\d]*)<

                                        kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

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

                                        der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                                        K 1 Antwort Letzte Antwort
                                        0
                                        • HomoranH Homoran

                                          @klassisch sagte in Gedanken zur Feinstaubmessung:

                                          Wie hast Du die Seite Deines Landes geparst?

                                          Nachdem ich die Seiten des Landesamts BaWü gesehen habe muss ich sagen ich habe Glück:
                                          https://www.lanuv.nrw.de/umwelt/luft/immissionen/aktuelle-luftqualitaet

                                          Im linken Menü dann den Parameter auswählen und mit der rechten Maustaste in der Tabelle den frame-Quelltext anzeigen.
                                          Da kann man dann parsen.

                                          z.B. PM10:
                                          Frame-Link: https://www.lanuv.nrw.de/fileadmin/lanuv/luft/immissionen/aktluftqual/eu_pm10_akt.htm
                                          RegEx: RODE<\/td><td class="eins">[<\d]*<\/td><td class="zwei">([<\d]*)<

                                          K Offline
                                          K Offline
                                          klassisch
                                          Most Active
                                          schrieb am zuletzt editiert von
                                          #21

                                          @Homoran Oder mit https://www.lanuv.nrw.de/fileadmin/lanuv/luft/immissionen/aktluftqual/eu_luftqualitaet.csv alle aktuellen Werte als CSV bekommen. Ganz praktisch.

                                          HomoranH 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

                                          670

                                          Online

                                          32.5k

                                          Benutzer

                                          81.6k

                                          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