Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Hardware
    4. Welchen Luftgütesensor

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Welchen Luftgütesensor

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

      Danke klassisch,

      dann bin ich tatsächlich leider raus 😞

      das ist (noch) zu hoch für mich.

      Danke nochmals

      Rainer

      1 Reply Last reply Reply Quote 0
      • K
        klassisch Most Active last edited by

        @Homoran:

        aber das ist die einzige Stelle.

        • ich will ja Learnen beim Doing. `
          Wahrscheinlich ist Dein Sketch für diese Lib ausgelegt und an dieser Stelle wird diese Lib instanziert.

        Du hast jetzt 2 Möglichkeiten: Die Lib (mit dem Boschwrapper) mit Stupf und Stiel aus Deinem Sketch reissen und durch die andere (die auch ich verwende) ersetzen oder sie drinlassen und die Stellen aufsuchen, wo die Parameter eingestellt werden.

        Drinlassen könnte einfacher sein. Und wenn da wirklich die Original-Bosch-Lib drinsteckt, dann solte das auch möglich sein. Parameter stehen ja oben.

        1 Reply Last reply Reply Quote 0
        • K
          klassisch Most Active last edited by

          Könnte sein, daß wir der Sache näher kommen.

          Verwendest Du diese Lib von Jan Wasserbauer:

          https://github.com/vodnik12/JWA_BME280/ … /README.md

          ?

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

            Na, mach mir nur Mut.

            @klassisch:

            Wahrscheinlich ist Dein Sketch `
            Der Sketch ist von Maik, und für mich ist das der erste Sketch überhaupt den ich mir mal ansehe 😉

            http://forum.iobroker.net/viewtopic.php … 100#p78500

            @klassisch:

            und die Stellen aufsuchen, wo die Parameter eingestellt werden. `
            Yeah :shock:

            Mache ich jetzt - erst mal im Notepad++

            Vielleicht wird ja doch noch mal was aus mir 😉

            Gruß

            Rainer

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

              @klassisch:

              Verwendest Du diese Lib von Jan Wasserbauer:

              https://github.com/vodnik12/JWA_BME280/ … /README.md

              ? `

              Ja!

              Gruß

              Rainer

              1 Reply Last reply Reply Quote 0
              • K
                klassisch Most Active last edited by

                Dann schauen wir mal in seinem git, ob wir die Stelle sehen, wo die Parameter gesetzt werden. Er hat ja auch vom Temperaturunterschied gesprochen aber nicht in welche Richtung….

                1 Reply Last reply Reply Quote 0
                • K
                  klassisch Most Active last edited by

                  Steht bei Dir

                  Bme280BoschWrapper bme280(true);
                  

                  ? Wenn ich das richtig verstanden habe, dann würde er im forced mode starten. Aber die anderen Parameter habe ich noch nicht gefunden. Und ich habe den Genauigkeitsgrad noch nicht gesehen. Der macht aber wahrscheinlich keine 3 bis 4 K aus. Bosch hat die Kompensationrechnung aus dem Sensor rausverlagert in den host-Rechner. Das macht es so kompliziert. Und weil Bosch gerne optimiert (manchmal bis zum Geiz) gibt es 3 Genauigkeitsklassen, wenn ich mich recht erinner. Je nach vorhandener Rechenleistung kann man eine passende Kompensationsrechnung verwenden. Für die WeMos habe ich immer die genaueste Rechnung verwendet. Die Dinger sind schnell genug. Aber wie gesagt, das sollte keine 3 bis 4 K ausmachen, denke ich.

                  Die von mir referenzierte Lib ermöglicht diese Wahl. Ein klassischer Arduino könnte aber bei der genaueren Rechnung ins Schwitzen kommen.

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

                    @klassisch:

                    Steht bei Dir `
                    Ja!

                    // BME280 initialisieren
                    Bme280BoschWrapper bme280(true);
                    unsigned long syncTime;
                    

                    und da hatte ich gedacht es reicht den Namen auszutauschen gegen den der neuen Bibliothek.

                    habe gerade versucht das in github zu verstehen und dabei gemerkt, dass mein Vorhaben eine Schnapsidee war 😞

                    Gruß

                    Rainer

                    1 Reply Last reply Reply Quote 0
                    • K
                      klassisch Most Active last edited by

                      Nochwas: In welchen Zeitabständen rufst Du

                      bme280.measure()
                      

                      auf?

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

                        Wenn ich Maik richtig verstanden habe hat er das in der http://forum.iobroker.net/viewtopic.php?f=34&t=3954&start=100#p78500 von etwa 6 sec auf 60sec angehoben.

                        Gruß

                        Rainer

                        1 Reply Last reply Reply Quote 0
                        • K
                          klassisch Most Active last edited by

                          6 Sekunden wäre zu häufig, 60 Sekunden ist o. k.

                          Gesendet von meinem ZTE A2016 mit Tapatalk

                          1 Reply Last reply Reply Quote 0
                          • M
                            MaikB85 last edited by

                            Das mit den 60Sekunden hatte nur leider keine Auswirkung weil der BME280 so oft misst wie in den Settings eingestellt ist. Mit der library konnte man den BME280 aber überhaupt nicht so konfigurieren.

                            Ich implementiere eben die MOD-1022 library und poste das sofort. dann kannst du das testen

                            1 Reply Last reply Reply Quote 0
                            • K
                              klassisch Most Active last edited by

                              Super, vielen Dank!

                              Settings habe ich oben gepostet. Falls Du noch was brauchst, einfach melden, dann schaue ich gschwind bei mir nach.

                              1 Reply Last reply Reply Quote 0
                              • M
                                MaikB85 last edited by

                                So hier mal die geänderte Version. Wieder oben die Variablen für IP-Adresse usw. anpassen.

                                ! ```
                                `//#include <bme280boschwrapper.h>
                                #include <ethernet.h>
                                #include <stdlib.h>
                                #include <avr pgmspace.h="">
                                #include <pubsubclient.h>
                                #include "Wire.h"
                                ! #include <bme280_mod-1022.h>
                                ! // Modultexte für MQTT Adapter
                                char modul_name[] = "Raumsensor_Wohnzimmer";
                                char humidity_str[] = "/Wohnzimmer/Luftfeuchtigkeit";
                                char temperature_str[] = "/Wohnzimmer/Raumtemperatur";
                                char pressure_str[] = "/Wohnzimmer/Luftdruck";
                                char co2_str[] = "/Wohnzimmer/CO2";
                                char status_str[] = "/Wohnzimmer/iAQ_Status";
                                char resistance_str[] = "/Wohnzimmer/iAQ_Widerstand";
                                char tvoc_str[] = "/Wohnzimmer/TVOC";
                                ! //Setup Ethernet Library
                                byte mac[] = { 0xAB, 0xAD, 0xBE, 0xEF, 0xEF, 0xDE }; //MAC Adresse des Ethernet Moduls
                                IPAddress arduino_ip(192, 168, 178, 102); //IP des Teensy
                                IPAddress server_ip(192, 168, 178, 100); //MQTT Broker (= Raspberry Pi)
                                EthernetClient client;
                                ! // BME280 initialisieren
                                //Bme280BoschWrapper bme280(true);
                                unsigned long syncTime;
                                ! //IAQ Core C Setup
                                #define iaqaddress 0x5A
                                ! uint16_t predict;
                                uint8_t statu;
                                int32_t resistance;
                                uint16_t tvoc;
                                ! // ===========================================================
                                // Callback Funktion von MQTT. Die Funktion wird aufgerufen
                                // wenn ein Wert empfangen wurde.
                                // ===========================================================
                                void callback(char* topic, byte* payload, unsigned int length)
                                {
                                //char message_buff[100];
                                ! //Serial.print("Nachricht erhalten mit Topic: ");
                                //Serial.println(topic);
                                ! //// Kopieren der Nachricht und erstellen eines Bytes mit abschließender \0
                                //unsigned int i = 0;
                                //for (i = 0; i<length; 8/16/1883/i++)/{/message_buff[i]="payload[i];" }/;/serial.print("nachricht:/");/serial.println(message_buff);/mqtt/client/zur/kommunikation/mit/dem/server/server_ip/-/variable/des/types/byte/serveradresse/ist/der/standard/tcp/port/callback/function/wird/aufgerufen/wen/nachrichten/eintreffen/angabe/ethernet/clients/pubsubclient/mqttclient(server_ip,/1883,/callback,/client);/messdaten/vom/iaq/core/lesen/void/readallbytes()/wire.requestfrom(iaqaddress,/9);/predict="(Wire.read()" <</|/wire.read());/statu="Wire.read();" resistance="(Wire.read()" &/0x00)/(wire.read()/16)/tvoc="(Wire.read()" status/ermitteln/checkstatus()/if/(statu="=" 0x10)/serial.println("aufwärmphase...");/else/serial.println("bereit");/0x01)/serial.println("belegt");/0x80)/serial.println("fehler");/serial.println("kein/empfangen,/modul/prüfen");/setup()/ethernet.begin(mac,/arduino_ip);/delay(1000);/shield/zeit/geben/zum/initialisieren/serial.begin(115200);/wire.begin();/while/(!bme280.begini2c(0x76))/serial.println("sensor/nicht/gefunden.");/synctime="millis();" loop()/aufbau/verbindung/mqtt-broker/falls/diese/offen/ist./(!mqttclient.connected())/mqttclient.connect(modul_name);/abonieren/von/angegebenen/topic/mqttclient.subscribe("/wohnzimmer/settings/#");/schleife/für/(mqttclient.loop())/serial.println("verbunden");/need/to/read/the/nvm/compensation/parameters/bme280.readcompensationparams();/example/for/"indoor/navigation"/we'll/switch/into/normal/mode/regular/automatic/samples/bme280.writestandbytime(tsb_0p5ms);/tsb="0.5ms" bme280.writefiltercoefficient(fc_16);/iir/filter/coefficient/bme280.writeoversamplingpressure(os16x);/pressure/x16/bme280.writeoversamplingtemperature(os2x);/temperature/x2/bme280.writeoversamplinghumidity(os1x);/humidity/x1/bme280.writemode(smnormal);/(bme280.ismeasuring())/out/data/must/do/this/before/calling/getxxxxx/routines/bme280.readmeasurements();/char/tempbuffer[10];/dtostrf(bme280.gettemperaturemostaccurate(),/2,/tempbuffer);/mqttclient.publish(temperature_str,/delay(500);/dtostrf(bme280.gethumiditymostaccurate(),/3,/mqttclient.publish(humidity_str,/dtostrf(bme280.getpressuremostaccurate(),/4,/mqttclient.publish(pressure_str,/*unsigned/long/currentmillis="millis();" ((unsigned/long)(currentmillis/synctime)="">= 60000) //Alle 15sec ausf�hren
                                {
                                // Bosch BME280 Messwerte senden

                                    if (bme280.measure())
                                    {
                                	    char tempBuffer[10];
                                

                                ! dtostrf((bme280.getTemperature() / 100.0), 2, 2, tempBuffer);
                                mqttClient.publish(temperature_str, tempBuffer);
                                ! delay(1000);
                                ! dtostrf((bme280.getHumidity() / 1024.0), 3, 2, tempBuffer);
                                mqttClient.publish(humidity_str, tempBuffer);
                                ! delay(1000);
                                ! dtostrf((bme280.getPressureDouble() / 100.0), 4, 2, tempBuffer);
                                mqttClient.publish(pressure_str, tempBuffer);
                                ! delay(1000);
                                }
                                else
                                {
                                Serial.println("Messung mit BME280 fehlgeschlagen.");
                                }
                                ! syncTime = currentMillis;
                                }*/
                                ! delay(1000);
                                ! readAllBytes();
                                checkStatus();
                                //char tempBuffer[10];
                                ! //CO2 Wert
                                snprintf(tempBuffer, sizeof(tempBuffer), "%u", (predict));
                                mqttClient.publish(co2_str, tempBuffer);
                                ! //Status
                                snprintf(tempBuffer, sizeof(tempBuffer), "%u", (statu));
                                mqttClient.publish(status_str, tempBuffer);
                                ! //Widerstandswert
                                snprintf(tempBuffer, sizeof(tempBuffer), "%lu", (resistance));
                                mqttClient.publish(resistance_str, tempBuffer);
                                ! //TVOC Wert
                                snprintf(tempBuffer, sizeof(tempBuffer), "%u", (tvoc));
                                mqttClient.publish(tvoc_str, tempBuffer);
                                ! delay(5000);
                                }</length;></bme280_mod-1022.h></pubsubclient.h></avr></stdlib.h></ethernet.h></bme280boschwrapper.h>`
                                ! Gruß Maik[/i][/i][/i]

                                1 Reply Last reply Reply Quote 0
                                • K
                                  klassisch Most Active last edited by

                                  Vielen Dank!

                                  erste schnelle RM:

                                  BME280.writeMode(normal);
                                  

                                  ist das böse Teil-

                                  BME280.writeMode(smForced);
                                  ````ist brav.
                                  
                                  example for indoor navigation liest den Drucksensor sehr genau aus und macht den Sensor warm.
                                  
                                  Ich arbeite mit
                                  

                                  // Need to turn on 1x oversampling, default is os_skipped, which means it doesn't measure anything
                                  BME280.writeOversamplingPressure(os1x); // 1x over sampling (ie, just one sample)
                                  BME280.writeOversamplingTemperature(os1x); // 1x over sampling (ie, just one sample)
                                  BME280.writeOversamplingHumidity(os1x); // 1x over sampling (ie, just one sample)
                                  measuringTime = (int) (0.5 + (1.25 + (2.3 * 1) + (2.3 * 1 + 0.575) + (2.3 * 1 + 0.575))); // measuringTime is unsigned long
                                  /* in forced mode with oversampling=1 in all 3 values the max measuring time should be < 22.8ms
                                  in forced mode with all oversamplings to x16 (max value) the measring time should be <112,8
                                  for other oversampling settings refer Bosch datasheet chapter 9.1 Measurement time
                                  measuringTime = 1.25+(2.3temp_os) + (2.3humid_os + 0.575) + (2.3*press_os + 0.575) */

                                  // init a forced sample. After taking the measurement the chip goes back to sleep
                                  BME280.writeMode(smForced);
                                  delay(measuringTime + 25); // wait until measurement is done. With oversampling=1 in all 3 values the max measuring time should be < 22.8ms
                                  // for other oversampling settings refer Bosch datasheet chapter 9.1 Measurement time
                                  BME280.readMeasurements();
                                  if (BME280.isMeasuring()) { // this should not happen becaus wait time is long enough
                                  BME280ReadError = 1;

                                  1 Reply Last reply Reply Quote 0
                                  • M
                                    MaikB85 last edited by

                                    okay ich hatte jetzt einfach die settings für Innenraum Messung empfohlen von Bosch

                                    Wie hast du dann die settings für oversampling usw. ?

                                    1 Reply Last reply Reply Quote 0
                                    • K
                                      klassisch Most Active last edited by

                                      habs oben nachgetragen

                                      Oder um es hier komplett zu machen:

                                      ! ````
                                      void initSensorBME280()
                                      {
                                      /*********** BME280 setup *********** /
                                      ! /
                                      excerpt from Bosch datasheet chapter 3.5.1 Weather monitoring
                                      Table 7: Settings and performance for weather monitoring
                                      Suggested settings for weather monitoring
                                      Sensor mode forced mode, 1 sample / minute
                                      Oversampling settings pressure *1, temperature *1, humidity *1
                                      IIR filter settings filter off
                                      Performance for suggested settings
                                      Current consumption 0.16 μA
                                      RMS Noise 3.3 Pa / 30 cm, 0.07 %RH
                                      Data output rate 1/60 Hz

                                      • ** End excerpt from Bosch datasheet chapter 3.5.1 Weather monitoring **/

                                      ! byte chipID = 0; // for BME280 Cip IF
                                      chipID = BME280.readChipId();
                                      #ifdef FSDEBUG
                                      DBG_OUTPUT_PORT.print (F("BME280 Chip Id (0x): "));
                                      DBG_OUTPUT_PORT.println (chipID, HEX);
                                      #endif // FSDEBUG
                                      // need to read the NVM compensation parameters
                                      BME280.readCompensationParams();
                                      ! // Need to turn on 1x oversampling, default is os_skipped, which means it doesn't measure anything
                                      BME280.writeOversamplingPressure(os1x); // 1x over sampling (ie, just one sample)
                                      BME280.writeOversamplingTemperature(os1x); // 1x over sampling (ie, just one sample)
                                      BME280.writeOversamplingHumidity(os1x); // 1x over sampling (ie, just one sample)
                                      measuringTime = (int) (0.5 + (1.25 + (2.3 * 1) + (2.3 * 1 + 0.575) + (2.3 * 1 + 0.575))); // measuringTime is unsigned long
                                      /* in forced mode with oversampling=1 in all 3 values the max measuring time should be < 22.8ms
                                      in forced mode with all oversamplings to x16 (max value) the measring time should be <112,8
                                      for other oversampling settings refer Bosch datasheet chapter 9.1 Measurement time
                                      measuringTime = 1.25+(2.3temp_os) + (2.3humid_os + 0.575) + (2.3*press_os + 0.575) /
                                      ! // init a forced sample. After taking the measurement the chip goes back to sleep
                                      BME280.writeMode(smForced);
                                      delay(measuringTime + 25); // wait until measurement is done. With oversampling=1 in all 3 values the max measuring time should be < 22.8ms
                                      // for other oversampling settings refer Bosch datasheet chapter 9.1 Measurement time
                                      BME280.readMeasurements();
                                      if (BME280.isMeasuring()) { // this should not happen becaus wait time is long enough
                                      BME280ReadError = 1;
                                      #ifdef FSDEBUG
                                      DBG_OUTPUT_PORT.println(F("Mode has been written down to BME280"));
                                      DBG_OUTPUT_PORT.println(F("BME280 Measuring or busy..."));
                                      #endif // FSDEBUG
                                      delay(measuringTime + 300);
                                      if (BME280.isMeasuring()) { // another try failed
                                      BME280ReadError = 1;
                                      #ifdef FSDEBUG
                                      DBG_OUTPUT_PORT.print (F(" Contact to sensor has been lost no further transmission to CCU "));
                                      #endif //FSDEBUG
                                      } // end if 2n try failed
                                      else {
                                      BME280ReadError = 0;
                                      }
                                      ! } // end if 1st trial to measure failed
                                      else {
                                      BME280ReadError = 0;
                                      #ifdef FSDEBUG
                                      DBG_OUTPUT_PORT.println(F("BME280 init Done!"));
                                      #endif // FSDEBUG
                                      ! } // end else => no sensorReadoutError
                                      ! /
                                      ******************* END Setup BME280 **************************/
                                      } // end void initSensorBME280
                                      ! ````

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

                                        Danke!

                                        ist jetzt bei einem geflasht, der andere hat noch die alte library

                                        In der Zwischenzeit ist mir noch etwas aufgefallen.
                                        144_sensor_vergleich04.jpg

                                        ich hatte schon vorher den Verdacht, jetzt war es wieder.

                                        In der Phase wo der/die IAQ kalibrieren haben anscheinend die Werte ein höheres Rauschen und die BME-Werte scheinen dann auch stärker voneionander abzuweichen.

                                        ist die Kalibrierung erst einmal abgeschlossen (=Fenster zu) werden die Kurven wieder ruhiger und die BME-Werte passen sich wieder aneinender an.

                                        Gruß

                                        Rainer

                                        1 Reply Last reply Reply Quote 0
                                        • M
                                          MaikB85 last edited by

                                          achso gut. dann muss ich aber wieder die zeitliche geschichte mit rein nehmen alle 60sek. weil bei forced macht er ja nur eine Messung

                                          1 Reply Last reply Reply Quote 0
                                          • K
                                            klassisch Most Active last edited by

                                            Ja, genau. Bei forced mißt er nur auf Befehl. Bei normal immer.

                                            Habe hier mal meine etwas überkandidelte weil fehlerabfangende Init:

                                            ! ````
                                            void initSensorBME280()
                                            {
                                            /*********** BME280 setup *********** /
                                            ! /
                                            excerpt from Bosch datasheet chapter 3.5.1 Weather monitoring
                                            Table 7: Settings and performance for weather monitoring
                                            Suggested settings for weather monitoring
                                            Sensor mode forced mode, 1 sample / minute
                                            Oversampling settings pressure *1, temperature *1, humidity *1
                                            IIR filter settings filter off
                                            Performance for suggested settings
                                            Current consumption 0.16 μA
                                            RMS Noise 3.3 Pa / 30 cm, 0.07 %RH
                                            Data output rate 1/60 Hz

                                            • ** End excerpt from Bosch datasheet chapter 3.5.1 Weather monitoring **/

                                            ! byte chipID = 0; // for BME280 Cip IF
                                            chipID = BME280.readChipId();
                                            #ifdef FSDEBUG
                                            DBG_OUTPUT_PORT.print (F("BME280 Chip Id (0x): "));
                                            DBG_OUTPUT_PORT.println (chipID, HEX);
                                            #endif // FSDEBUG
                                            // need to read the NVM compensation parameters
                                            BME280.readCompensationParams();
                                            ! // Need to turn on 1x oversampling, default is os_skipped, which means it doesn't measure anything
                                            BME280.writeOversamplingPressure(os1x); // 1x over sampling (ie, just one sample)
                                            BME280.writeOversamplingTemperature(os1x); // 1x over sampling (ie, just one sample)
                                            BME280.writeOversamplingHumidity(os1x); // 1x over sampling (ie, just one sample)
                                            measuringTime = (int) (0.5 + (1.25 + (2.3 * 1) + (2.3 * 1 + 0.575) + (2.3 * 1 + 0.575))); // measuringTime is unsigned long
                                            /* in forced mode with oversampling=1 in all 3 values the max measuring time should be < 22.8ms
                                            in forced mode with all oversamplings to x16 (max value) the measring time should be <112,8
                                            for other oversampling settings refer Bosch datasheet chapter 9.1 Measurement time
                                            measuringTime = 1.25+(2.3temp_os) + (2.3humid_os + 0.575) + (2.3*press_os + 0.575) /
                                            ! // init a forced sample. After taking the measurement the chip goes back to sleep
                                            BME280.writeMode(smForced);
                                            delay(measuringTime + 25); // wait until measurement is done. With oversampling=1 in all 3 values the max measuring time should be < 22.8ms
                                            // for other oversampling settings refer Bosch datasheet chapter 9.1 Measurement time
                                            BME280.readMeasurements();
                                            if (BME280.isMeasuring()) { // this should not happen becaus wait time is long enough
                                            BME280ReadError = 1;
                                            #ifdef FSDEBUG
                                            DBG_OUTPUT_PORT.println(F("Mode has been written down to BME280"));
                                            DBG_OUTPUT_PORT.println(F("BME280 Measuring or busy..."));
                                            #endif // FSDEBUG
                                            delay(measuringTime + 300);
                                            if (BME280.isMeasuring()) { // another try failed
                                            BME280ReadError = 1;
                                            #ifdef FSDEBUG
                                            DBG_OUTPUT_PORT.print (F(" Contact to sensor has been lost no further transmission to CCU "));
                                            #endif //FSDEBUG
                                            } // end if 2n try failed
                                            else {
                                            BME280ReadError = 0;
                                            }
                                            ! } // end if 1st trial to measure failed
                                            else {
                                            BME280ReadError = 0;
                                            #ifdef FSDEBUG
                                            DBG_OUTPUT_PORT.println(F("BME280 init Done!"));
                                            #endif // FSDEBUG
                                            ! } // end else => no sensorReadoutError
                                            ! /
                                            ******************* END Setup BME280 **************************/
                                            } // end void initSensorBME280
                                            ! ````

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            780
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            16
                                            226
                                            45536
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo