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. Hardware
  4. [Projekt][ALFA] Der Community-Sensor MQTT für IOBroker

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    17
    1
    519

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

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

[Projekt][ALFA] Der Community-Sensor MQTT für IOBroker

Scheduled Pinned Locked Moved Hardware
39 Posts 6 Posters 8.0k Views
  • 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.
  • TomTT Offline
    TomTT Offline
    TomT
    wrote on last edited by
    #7

    Der ESP ruft direkt die Datenpunkte im IoBroker über den simpleAPI Adapter auf.

    Mittels setBulk Command werde diese dann (Temp und Feucht) gemeinsam übermittelt

    Grüße

    Tom

    PI3B > Raspimatic / Opi+2 > ioBroker / ESP8266
    if (System == "running") {finger = "weg";} else {lastAction = "Rückgängig";}

    1 Reply Last reply
    0
    • M Offline
      M Offline
      mrmomba
      wrote on last edited by
      #8

      Hallo tomT,

      danke für das Angebot.

      Seit dem mich mein Kumpel - er hat aber nur darüber gelesen - mir etwas über MQTT erzählt hat, bin ich von der Einfachheit eigentlich sehr überzeugt.

      Ich bin nicht zwingenst auf MQTT angewiesen, habe aber damit quasi die ALFA Version aufgebaut und als Herzstück gesehen, würde auf Grund der leichten Konfig davon auch nur wirklich ungern weggehen.

      Dein Steckdosenfred habe ich gesehen.

      Ich danke jeden, der mir dabei helfen mag!

      (In irgendeiner Version xyz hätte ich ja gerne OTA und vollautomatisch alles - so dass ich dann ein Hotspot habe und alles über eine Webgui konfigurieren kann)

      @Thisoft

      Im Anhang habe ich eine 7zip Datei mit den Qäulcode.

      => dass man nicht freiwillig in Facebook rein will kann ich durchaus verstehen ;-)

      Ich weiß auch nicht, was mich vor Jahren dazu geritten hatte.
      6321_iomqttsensors_alfa2.7z

      1 Reply Last reply
      0
      • WalW Online
        WalW Online
        Wal
        Developer
        wrote on last edited by
        #9

        Für den Sound gibt es ein billiges Soundmodul mit dem man mp3 files abspielen kann.

        Kannst dir's ja mal anschauen. Soundmodul Multifunktion FN-M16P http://www.voicemodul.de/index.htm

        Gruß
        Walter

        DoorIO-Adapter
        wioBrowser-Adapter und wioBrowser

        1 Reply Last reply
        0
        • M Offline
          M Offline
          mrmomba
          wrote on last edited by
          #10

          Hallo,

          ja wenn ich mir das so ansehe ist das schon in Ordnung, aber irgendwann sprengt es den Rahmen von Low-Budget. Ziel sollte es ja sein, einen passablen Multisensor zu bauen, der sehr günstig ist und mit der Anleitung relativ Narrensicher sein soll.

          Ich habe mir auch die Sache mit den MQ-Sensoren angeschaut.

          Die kosten zwar alle mi Schnitt nur 3€ ABER es bringt zu einem viel mehr Overhead mit sich und zum anderen aber auch wieder wesentlich mehr Bauteile - glaube ich… Ich weiß halt nicht ob die ich die 1. mit 3 Volt laufen lassen kann und 2. zu viel Strom gezogen wird.

          ODER ob ich das am Datapin einfach mit einem Spannungsteiler hin bekomme.

          Was wiederum dem Low-Cost entgegen steht - wobei ein CO und Gassensor nicht unbedingt verkehrt ist. Die meiste Irritation habe ich jetzt dadurch, dass ich bein einigen gelesen habe

          Das der MQ2 sensor CO Gas ebenfalls erkennt, an andere Stelle steht davon nichts :-(

          So eben noch ein paar Änderungen siehe Bild ...

          Was sagt ihr?

          @TomT

          @tisoft?

          Hattet einer von euch schon zeit mein Script durchzusehen?

          Oder ist der sowas von Grauenhaft :D
          6321_version3.png

          1 Reply Last reply
          0
          • TomTT Offline
            TomTT Offline
            TomT
            wrote on last edited by
            #11

            Ne, hatte noch keine Zeit…

            Ich schau die Woche mal danach.

            Zieh dir doch mal meine BETA V1.0.0.zip Version von der Obi Steckdose runter.

            Da ist OTA drin, vielleicht hilft es dir schon mal weiter.

            Und ein Wifi Setup für den ersten Start, damit du nicht den Code editieren musst....

            Grüße

            Tom

            PI3B > Raspimatic / Opi+2 > ioBroker / ESP8266
            if (System == "running") {finger = "weg";} else {lastAction = "Rückgängig";}

            1 Reply Last reply
            0
            • M Offline
              M Offline
              mrmomba
              wrote on last edited by
              #12

              Ich schau mir das mal an

              es ist aber nicht der Wifimanager am Start oder?

              (werde ich dann sehen)

              Viel Script und Unglaublich übersichtlich.

              Ok ich habe nicht alles Verstanden, fällt aber fast! nicht schwer.

              lüg

              Wie ich sehe, kannst du das EEPROM schreiben - damit würde mich die Initialkonfig natürlich komplett weg vom QUÄL-Code

              bringen und zur dynamischen Konfig hin :-)

              Kleine Idee für dein Script, übermittel doch die WIFI-Signalstärke, dann weißt du auch ob die Position der Steckdose evtl eine Störung mit sich bringen könnte.

              Hier meine einfache MAP-Funktion:

              Aufruf: int_fkt_WLANProzent(WiFi.RSSI())

              Funktion:

              int int_fkt_WLANProzent(int WLANProzent){

              int int_var_wlaninProzent = map(WLANProzent, -100, -40, 0, 100);

              return int_var_wlaninProzent;

              }

              1 Reply Last reply
              0
              • M Offline
                M Offline
                mrmomba
                wrote on last edited by
                #13

                Ich hab das script auf meiner Seite noch mal etwas geändert…

                Bin aber noch nicht ganz zufrieden, denn er macht jetzt immer ein Subscripe obwohl es keine Änderung gab. (Oder ich habe es falsch verstanden)

                Inhalt:
                <list type="decimal">2. Änderung des Scriptes neue Funktion

                Fehler bzw. Log
                
                Neue .ino Datei 
                

                ##########################################################

                die neue Funktion zum Subscripen der Topics

                ##########################################################

                Ich habe eine Funktion gebaut, wie folgt und diese wird dann in der Loop aufgerufen.

                –----------------------------------------------------- Aufruf

                bool_fkt_Subscripe(Value9);

                ------------------------------------------------------- Funktion

                bool bool_fkt_Subscripe(String Topic) {

                Serial.print("*INFO:DO :Topic Check");

                int int_var_Counter = 0;

                while (int_var_Counter < 5){

                client.subscribe(Topic.c_str());

                client.loop();

                int_var_Counter = int_var_Counter + 1;

                }

                Serial.print("*INFO:DONE:Topic Check");

                }


                Ebenfalls ist es komisch, dass ich zwar die Werte zum Teil ausgelesen bekomme, aber das im Callback meine IF-Else nicht sauber läuft, das ist doof. (Er kann die Ausgelesenen Werte wohl nicht richtig im IF-Else auflösen)

                ##########################################################

                Ausgabe auf dem Serialinterface

                ##########################################################

                Interessant ist auch, dass ich regelmäßig NULL - Werte habe:

                Hier mal ein Mitschnitt:

                *INFO:DO :Payload Topic Check

                ***********Message arrived in topic: haus01/wohnung01/Kueche/sensor01/A02_optischerAlarm

                ***********Message:1


                *INFO:DONE:Payload Topic Check

                *----------------------------------

                *INFO:DO :Payload Topic Check

                ***********Message arrived in topic: haus01/wohnung01/Kueche/sensor01/A02_optischerAlarm

                ***********Message:1


                *INFO:DONE:Payload Topic Check

                *----------------------------------

                INFO:DONE:Topic CheckINFO:DO :Topic Check*INFO:DO :Payload Topic Check

                ***********Message arrived in topic: haus01/wohnung01/Kueche/sensor01/A02_optischerAlarm

                ***********Message:1


                *INFO:DONE:Payload Topic Check

                *----------------------------------

                *INFO:DO :Payload Topic Check

                ***********Message arrived in topic: haus01/wohnung01/Kueche/sensor01/A02_optischerAlarm

                ***********Message:1


                *INFO:DONE:Payload Topic Check

                *----------------------------------

                INFO:DONE:Topic CheckINFO:DO :Topic Check*INFO:DO :Payload Topic Check

                ***********Message arrived in topic: haus01/wohnung01/Kueche/sensor01/A03_akkustischerAlarm

                ***********Message:1


                *INFO:DONE:Payload Topic Check

                *----------------------------------

                *INFO:DO :Payload Topic Check

                ***********Message arrived in topic: haus01/wohnung01/Kueche/sensor01/A03_akkustischerAlarm

                ***********Message:1


                *INFO:DONE:Payload Topic Check

                *----------------------------------

                *INFO:DO :Payload Topic Check

                ***********Message arrived in topic: haus01/wohnung01/Kueche/sensor01/A03_akkustischerAlarm

                ***********Message:1


                *INFO:DONE:Payload Topic Check

                *----------------------------------

                INFO:DONE:Topic CheckINFO:DONE:CHECK MQTT PUSH / GET NEUE WERTE

                ############################################################################

                ############################################################################

                *INFO:DO :RUN LOOP START JETZT

                *INFO:DO :DHT Temperatur lesen

                21.20

                *INFO:DONE:DHT Temperatur lesen

                *----------------------------------

                *INFO:DO :DHT Humiditiy lesen

                46.00

                *INFO:DONE:DHT Humiditiy lesen

                *----------------------------------

                *INFO:DO :Umgebungslicht lesen

                *Info: :Digitale Umrechnung

                189

                *Info: :Logische Umrechnung

                0.59

                *INFO:DONE:Umgebungslicht lesen

                *----------------------------------

                *INFO:DO :Bewegungserkennung

                0

                *INFO:DONE:Keine Bewegung

                *INFO:DONE:Bewegungserkennung

                *----------------------------------

                *INFO:DO :CHECK MQTT PUSH / GET NEUE WERTE

                INFO:DO :Topic CheckINFO:DO :Payload Topic Check

                ***********Message arrived in topic: haus01/wohnung01/Kueche/sensor01/A03_akkustischerAlarm

                ***********Message:1


                *INFO:DONE:Payload Topic Check

                *----------------------------------

                *INFO:DO :Payload Topic Check

                ***********Message arrived in topic: haus01/wohnung01/Kueche/sensor01/A03_akkustischerAlarm

                ***********Message:1


                *INFO:DONE:Payload Topic Check

                *----------------------------------

                INFO:DONE:Topic CheckINFO:DO :Topic Check*INFO:DO :Payload Topic Check

                ***********Message arrived in topic: haus01/wohnung01/Kueche/sensor01/A01_Nachtlicht

                ***********Message:

                –--------------------------------

                *INFO:DONE:Payload Topic Check

                *----------------------------------

                *INFO:DO :Payload Topic Check

                ***********Message arrived in topic: haus01/wohnung01/Kueche/sensor01/A01_Nachtlicht

                ***********Message:

                –--------------------------------

                *INFO:DONE:Payload Topic Check

                *----------------------------------

                *INFO:DO :Payload Topic Check

                ***********Message arrived in topic: haus01/wohnung01/Kueche/sensor01/A01_Nachtlicht

                ***********Message:

                –--------------------------------

                *INFO:DONE:Payload Topic Check

                *----------------------------------

                INFO:DONE:Topic CheckINFO:DO :Topic Check*INFO:DO :Payload Topic Check

                ***********Message arrived in topic: haus01/wohnung01/Kueche/sensor01/A01_Nachtlicht

                ***********Message:

                –--------------------------------

                *INFO:DONE:Payload Topic Check

                *----------------------------------

                *INFO:DO :Payload Topic Check

                ***********Message arrived in topic: haus01/wohnung01/Kueche/sensor01/A01_Nachtlicht

                ***********Message:

                ##########################################################

                NEUE .INO-DATEI einfach für Copy & Paste

                ##########################################################

                #include "webgui.h"

                #include "mqtt.h"

                #include "wifi.h"

                //#include "Timezone.h"

                #include <esp8266wifi.h>#include <wificlient.h>#include <esp8266webserver.h>#include <dnsserver.h>#include <esp8266mdns.h>#include <eeprom.h>#include "PubSubClient.h"

                #include "DHT.h"

                ESP8266WebServer server(80); // Initialisiere Webserver

                WiFiClient wifiClient;

                PubSubClient client(wifiClient);

                /*

                –----------------------------------------------------------------------------------------------

                [DE] Vervollständige hier die Variablen mit den Infos zu deinem Netzwerk

                wie SSID, MQTT und Standort des Sensors.

                [EN] complete the Variables with Infos for your Homenetwork

                like SSID, MQTT und location from the Sensor.

                –----------------------------------------------------------------------------------------------

                */

                // [DE] 1. Variable WLAN SSID | 2. Variable WLAN Passwort

                //…. [EN] 1. Variable WLAN SSID | 2. Variable WLAN Password

                const char* var_char_WLAN_SSID = " ";

                const char* var_char_WLAN_PASS = " ";

                // [DE] Logindaten MQTT-Broker | 1. IP/Hostname | 2. Port | 3. Benutzername | 4. Passwort

                //…. [EN] Logincredentials MQTT-Broker | 1. IP/Hostname | 2. Port | 3. Userlogin | 4. Password

                const char* var_char_mqtt_server = "172.16.1.6";

                const int var_int_mqtt_port = 1883;

                const char* var_char_mqtt_user = " ";

                const char* var_char_mqtt_password = " ";

                // [DE] Sensorstandpunkt angeben: Dabei ist das ganze herachisch für eine eindeutige Zuordnung

                // Aufgebaut um mehere Gebäude mit mehreren Wohnungen auf einem Broker sauber Idenfizieren

                // zu können. Daher Hausname(Oder Grundstücksname) Wohnung und Raummname usw.

                //…. [EN] Specify sensor position: The whole position is written down herachic for a clear assignment.

                // It's usable for around several buildings with several apartments for a clean idenfication

                // on one MQTT Broker.

                const char* var_char_sensor_hausName = "haus01"; // [DE] Bsp: Haus01, ID83374, Bäckerstraße 24b…. [EN] HomeOne, BackerStreet, eg.

                const char* var_char_sensor_wohnungsName = "wohnung01"; //[DE] Mannys Wohnung, ID00023, Garten …. [EN] Mannys' Castle, ID0023, Garden

                const char* var_char_sensor_raumName = "Kueche"; // [DE] Küche, Flur, Keller …. [EN] Kitchen, Floor, Storage

                const char* var_char_sensor_sensorName = "sensor01"; // [DE] Sensor1, FlurSensor, NebenRauchMelder …. [EN] SensorOne, FloorSens, NextToSmokeDetector

                /*

                –----------------------------------------------------------------------------------------------

                [DE] Definiere Topics für den MQTT-Server !!! NICHTS MEHR ÄNDERN!

                [EN] Define the Topics für MQTT-Broker !!! DONT CHANGE ANYTHING HERE!

                –----------------------------------------------------------------------------------------------

                */

                String Value1 = str_fkt_topicpath() + "/S01_Temperatur";

                String Value2 = str_fkt_topicpath() + "/S02_Luftfeuchtigkeit";

                String Value3 = str_fkt_topicpath() + "/S03_Helligkeit";

                String Value4 = str_fkt_topicpath() + "/S04_Bewegung";

                String Value5 = str_fkt_topicpath() + "/D01_Batterie";

                String Value6 = str_fkt_topicpath() + "/N01_IP";

                String Value7 = str_fkt_topicpath() + "/S05_GAS";

                String Value8 = str_fkt_topicpath() + "/S06_CO";

                String Value9 = str_fkt_topicpath() + "/A01_Nachtlicht";

                String Value10 = str_fkt_topicpath() + "/A02_optischerAlarm";

                String Value11 = str_fkt_topicpath() + "/A03_akkustischerAlarm";

                String Value12 = str_fkt_topicpath() + "/12_free";

                String Value13 = str_fkt_topicpath() + "/D02_AkkuStand";

                String Value14 = str_fkt_topicpath() + "/D03_AkkuBetrieb";

                String Value15 = str_fkt_topicpath() + "/N02_WLAN-Signal";

                /*


                [DE] Definiere Variablen für den MQTT-Server !!! NICHTS MEHR ÄNDERN!

                [EN] Define the Variables für MQTT-Broker !!! DONT CHANGE ANYTHING HERE!

                –----------------------------------------------------------------------------------------------

                */

                String string_var_Temperatur;

                String string_var_Luftfeuchtigkeit;

                String string_var_Umgebungslicht;

                String string_var_Bewegungsmelder;

                bool bool_var_NachtLicht_an;

                bool bool_var_Notlicht_an;

                /*


                SETUP für die Initialconfig


                */

                void setup() {

                Serial.begin(115200); // Für Debuggingzwecke Ausgabe über Serielle Konsole

                Serial.println("*INIT:DO :Starte Initialisierung");

                bool var_bool_connection_status; // Setzte VAR für Wlanstatus

                var_bool_connection_status = fkt_bool_WLAN_connect(var_char_WLAN_SSID, var_char_WLAN_PASS); // Fülle VAR mit WLANSTATUS

                if (var_bool_connection_status) { //Wenn WLAN dann starte WebServer

                Serial.println("*INIT:DO :Starte Webserver");

                server.on ( "/", SITE_void_handleRoot );

                const char * headerkeys[] = {"User-Agent", "Cookie"} ;

                size_t headerkeyssize = sizeof(headerkeys) / sizeof(char*);

                server.collectHeaders(headerkeys, headerkeyssize );

                server.begin();

                Serial.println("*INIT:DONE:Starte Webserver");

                Serial.println("*----------------------------------");

                }

                if (var_bool_connection_status) { // Wenn WLAN dann MQTT Dienst

                Serial.println("*INIT:DO :Baue Verbindung zum MQTT Broker auf");

                client.setServer(var_char_mqtt_server, var_int_mqtt_port);

                client.setCallback(callback);

                while (!client.connected()) {

                Serial.println("Connecting to MQTT...");//

                if (client.connect(WiFi.macAddress().c_str(), var_char_mqtt_user, var_char_mqtt_password )) {

                Serial.println("connected");

                } else {

                Serial.print("failed with state ");

                Serial.print(client.state());

                delay(2000);

                }

                }

                string_var_Temperatur = String(float_fkt_getTemp());

                string_var_Luftfeuchtigkeit = String(float_fkt_getHum());

                string_var_Umgebungslicht = String(float_fkt_getLicht());

                string_var_Bewegungsmelder = String(bool_fkt_getMotion());

                client.publish(Value1.c_str(), string_var_Temperatur.c_str());

                client.publish(Value2.c_str(), string_var_Luftfeuchtigkeit.c_str());

                client.publish(Value3.c_str(), string_var_Umgebungslicht.c_str() );

                client.publish(Value4.c_str(), string_var_Bewegungsmelder.c_str() );

                client.publish(Value5.c_str(), "90%" );

                client.publish(Value6.c_str(), WiFi.localIP().toString().c_str());

                client.publish(Value7.c_str(), "0" );

                client.publish(Value8.c_str(), "0" );

                client.publish(Value15.c_str(), String(int_fkt_WLANProzent(WiFi.RSSI())).c_str());

                client.publish(Value9.c_str(), "" ); // Nachtlicht

                //client.subscribe(Value9.c_str()); // Nachtlicht

                //client.subscribe(Value10.c_str()); // optischer Alarm

                //client.subscribe(Value11.c_str()); // akkustuscher Alarm

                //client.subscribe(Value14.c_str()); // Akkubetrieb

                Serial.println("*INIT:DONE:Baue Verbindung zum MQTT Broker auf");

                Serial.println("*---------------------------------------------");

                }

                }

                /*


                BAUE eigenständige Funktionen im Zusammenhang mit dem Root


                */

                bool fkt_bool_is_authentified() {

                Serial.println("Enter is_authentified");

                if (server.hasHeader("Cookie")) {

                Serial.print("Found cookie: ");

                String cookie = server.header("Cookie");

                Serial.println(cookie);

                if (cookie.indexOf("ESPSESSIONID=1") != -1) {

                Serial.println("Authentification Successful");

                return true;

                }

                }

                Serial.println("Authentification Failed");

                return false;

                }

                String str_fkt_topicpath() {

                String topicpath = var_char_sensor_hausName ;

                topicpath += "/";

                topicpath += var_char_sensor_wohnungsName ;

                topicpath += "/";

                topicpath += var_char_sensor_raumName ;

                topicpath += "/";

                topicpath += var_char_sensor_sensorName;

                return topicpath;

                }

                void callback(char* topic, byte* payload, unsigned int length) {

                Serial.println("*INFO:DO :Payload Topic Check");

                Serial.print("***********Message arrived in topic: ");

                Serial.println(topic);

                Serial.print("***********Message:");

                for (int i = 0; i < length; i++) {

                Serial.print((char)payload__);

                if (strcmp(topic,"A01_Nachtlicht")) {

                if ((char)payload __== 1)) {

                Serial.print("*INFO:DONE:Nachtlicht an");

                bool_var_NachtLicht_an = 1;

                } else {

                Serial.print("*INFO:DONE:Nachtlicht aus");

                bool_var_NachtLicht_an = 0;

                }

                }

                }

                Serial.println();

                Serial.println("–--------------------------------");

                Serial.println("*INFO:DONE:Payload Topic Check");

                Serial.println("*----------------------------------");

                }

                bool bool_fkt_Subscripe(String Topic) {

                Serial.print("*INFO:DO :Topic Check");

                int int_var_Counter = 0;

                while (int_var_Counter < 5){

                client.subscribe(Topic.c_str());

                client.loop();

                int_var_Counter = int_var_Counter + 1;

                }

                Serial.print("*INFO:DONE:Topic Check");

                }

                /*


                SETUP für die Webseiten


                */

                void SITE_void_handleRoot() {

                Serial.println("*INFO:DO :Öffne RootWebseite");

                String root_content = Index_Startseite;

                root_content.replace("{v}", "Startseite");

                root_content.replace("{h}", String(WiFi.macAddress()));

                // root_content.replace("{setup_topicPathToValue}", str_fkt_topicpath());

                root_content.replace("{infhas}", var_char_sensor_hausName);

                root_content.replace("{infwos}", var_char_sensor_wohnungsName);

                root_content.replace("{infrooms}", var_char_sensor_raumName);

                root_content.replace("{infsens}", var_char_sensor_sensorName);

                root_content.replace("{inftemp}", String(float_fkt_getTemp()));

                root_content.replace("{infhum}", string_var_Luftfeuchtigkeit);

                root_content.replace("{inflit}", String(float_fkt_getLicht()));

                root_content.replace("{infbewg}", string_var_Bewegungsmelder);

                root_content.replace("{infNalicht}", String(bool_var_NachtLicht_an).c_str());

                root_content.replace("{infNoLicht}", String(bool_var_Notlicht_an).c_str());

                root_content.replace("{ssmqqb}", var_char_mqtt_server);

                root_content.replace("{smqqp}", String(var_int_mqtt_port));

                root_content.replace("{smqqln}", var_char_mqtt_user);

                root_content.replace("{smqqt}", str_fkt_topicpath());

                root_content.replace("{snwlssid}", var_char_mqtt_user);

                root_content.replace("{snwlIP}", WiFi.localIP().toString());

                server.send(200, "text/html", root_content);

                Serial.println("*INFO:DONE:Öffne RootWebseite");

                Serial.println("*----------------------------------");

                }

                /*


                Looooooooping!


                */

                void loop() {

                Serial.println("############################################################################");

                Serial.println("*INFO:DO :RUN LOOP START JETZT");

                String TMP_string_var_Temperatur = String(float_fkt_getTemp());

                String TMP_string_var_Luftfeuchtigkeit = String(float_fkt_getHum());

                String TMP_string_var_Umgebungslicht = String(float_fkt_getLicht());

                String TMP_string_var_Bewegungsmelder = String(bool_fkt_getMotion());

                String TMP_string_var_WLANProzent = String(int_fkt_WLANProzent(WiFi.RSSI()));

                while (!client.connected()) {

                Serial.println("*INFO:DO :MQTT CONNECT");

                Serial.println("Connecting to MQTT...");//

                if (client.connect(WiFi.macAddress().c_str(), var_char_mqtt_user, var_char_mqtt_password )) {

                Serial.println("connected");

                Serial.println("*INFO:DONE:CHECK MQTT CONNECTION - OK");

                } else {

                Serial.print("failed with state ");

                Serial.print(client.state());

                delay(2000);

                }

                }

                if (client.connected()) {

                //client.setCallback(callback);

                Serial.println("*INFO:DO :CHECK MQTT PUSH / GET NEUE WERTE");

                if (string_var_Temperatur != TMP_string_var_Temperatur ) {

                string_var_Temperatur = TMP_string_var_Temperatur;

                client.publish(Value1.c_str(), string_var_Temperatur.c_str());

                }

                if (string_var_Luftfeuchtigkeit != TMP_string_var_Luftfeuchtigkeit) {

                string_var_Luftfeuchtigkeit = TMP_string_var_Luftfeuchtigkeit;

                client.publish(Value2.c_str(), string_var_Luftfeuchtigkeit.c_str());

                }

                if (string_var_Umgebungslicht != TMP_string_var_Umgebungslicht) {

                string_var_Umgebungslicht = TMP_string_var_Umgebungslicht;

                client.publish(Value3.c_str(), string_var_Umgebungslicht.c_str() );

                }

                if (string_var_Bewegungsmelder != TMP_string_var_Bewegungsmelder) {

                string_var_Bewegungsmelder = TMP_string_var_Bewegungsmelder;

                client.publish(Value4.c_str(), string_var_Bewegungsmelder.c_str() );

                }

                if ( String(int_fkt_WLANProzent(WiFi.RSSI())) != TMP_string_var_WLANProzent) {

                TMP_string_var_Bewegungsmelder = String(int_fkt_WLANProzent(WiFi.RSSI()));

                client.publish(Value15.c_str(), String(int_fkt_WLANProzent(WiFi.RSSI())).c_str());

                }

                //client.loop();

                bool_fkt_Subscripe(Value9);

                bool_fkt_Subscripe(Value10);

                bool_fkt_Subscripe(Value11);

                //client.publish(Value5.c_str(), "90%" );

                //client.publish(Value6.c_str(), String(WiFi.localIP()).c_str());

                //client.publish(Value7.c_str(), "0" );

                //client.publish(Value8.c_str(), "0" );

                //Serial.println(client.subscribe(Value10.c_str())); // optischer Alarm

                //client.subscribe(Value11.c_str()); // akkustuscher Alarm

                //client.subscribe(Value14.c_str()); // Akkubetrieb

                Serial.println("*INFO:DONE:CHECK MQTT PUSH / GET NEUE WERTE");

                }

                server.handleClient();

                delay(10000);

                Serial.println("############################################################################");

                }____</eeprom.h></esp8266mdns.h></dnsserver.h></esp8266webserver.h></wificlient.h></esp8266wifi.h>

                1 Reply Last reply
                0
                • M Offline
                  M Offline
                  mrmomba
                  wrote on last edited by
                  #14

                  Wie auch in Facebook unterhalte ich mich hier mal alleine :-)

                  ===

                  Ich hab mein Subscribe am laufen.

                  Jetzt auch mit nur zwei Sekunden maximale Verzögerung:

                  Kann mein Fehler jemand bestätigen:

                  Ich habe alle client.subscribe() in den Loop plus die client.loop() in den loop() gepackt. Ich vermute, dass das der Fehler war!

                  Jetzt wo ich alle client.subscribe() im Setup habe läuft es auch wie es soll

                  und der client.loop() läuft in der normalen loop()

                  Dann kann ich mich jetzt ja weiter ans Werk machen. Hoffentlich kommen morgen die restlichen Bauteile :-)

                  1 Reply Last reply
                  0
                  • ThisoftT Offline
                    ThisoftT Offline
                    Thisoft
                    wrote on last edited by
                    #15

                    Ja, ganz richtig. Alle .subscribes() gehören in die Setup-Routine.

                    Alle Publishes und das Client.loop() gehören in die Loop.

                    22 HM-Geräte; PivCCU2 auf RasPi

                    ioBroker-Multihost; Ubuntu-Master auf Intel-Atom und 3 RasPi-Clients

                    1 Reply Last reply
                    0
                    • M Offline
                      M Offline
                      mrmomba
                      wrote on last edited by
                      #16

                      Top,

                      dann war das der Hacken an der Geschichte :-)

                      Lt. Amazon ist auch mein Packet schon da - 1x OLED und 1x ein neuer PIR.

                      Warum auf einmal OLED: Ganz einfach, ich habe nicht immer Lust mein Handy zu zücken oder zum Tablet gehen nur um Temperatur usw. abzulesen.

                      So geht das on-the-Fly beim vorbei gehen :-) (Und ich kann mir gleich noch die Uhrzeit anzeigen lassen)

                      Wenn das klappt und alles Fertig ist, kann ich mal groß in China bestellen :)

                      1 Reply Last reply
                      0
                      • WalW Online
                        WalW Online
                        Wal
                        Developer
                        wrote on last edited by
                        #17

                        Meine Sensoren habe grundsätzlich Oled.
                        2551_dsc_0194.jpg

                        Gruß
                        Walter

                        DoorIO-Adapter
                        wioBrowser-Adapter und wioBrowser

                        1 Reply Last reply
                        0
                        • M Offline
                          M Offline
                          mrmomba
                          wrote on last edited by
                          #18

                          Hey, kannst du mir sagen, welche LIB du dafür verwendest?

                          Ich habe jetzt zwei Stück ausprobiert, aber bin mit keiner Glücklich

                          #include <acrobotic_ssd1306.h>// Eigentlich SUPER! Schön Einfach, aber nur 2 versch. Schriftgrößen.

                          Ich hätte gerne was wie 14 oder 16

                          #include <u8g2lib.h>// Kann versch. Schriftgrößen, aber vom Rest her zu komplex und nervig. Schlimm auch das er

                          immer vom Buffer auf den Display schreiben muss…

                          Dann blinkt das Display - und es lässt das den ESP8266 auch mal hängen. Nervig!</u8g2lib.h></acrobotic_ssd1306.h>

                          1 Reply Last reply
                          0
                          • WalW Online
                            WalW Online
                            Wal
                            Developer
                            wrote on last edited by
                            #19

                            #include <adafruit_gfx.h>#include<adafruit_ssd1306.h></adafruit_ssd1306.h></adafruit_gfx.h>

                            Gruß
                            Walter

                            DoorIO-Adapter
                            wioBrowser-Adapter und wioBrowser

                            1 Reply Last reply
                            0
                            • M Offline
                              M Offline
                              mrmomba
                              wrote on last edited by
                              #20

                              Hallo Walter,

                              danke für den Tipp.

                              Da ich aber mit Delays arbeite usw. habe ich das gleiche Verhalten wie bei der u8glib.

                              Das Display flackert beim Refresh.

                              Ok

                              UNFASSBAR wie viel Zeit man dafür Verschwenden kann! :-)

                              Ich habe folgendes Konsturk

                              loop(){

                              eigeneDisplayFKT();

                              }

                              Und die eigeneDisplayFKT hat folgenden Inhalt:

                              Wire.begin();

                              display.begin(SSD1306_SWITCHCAPVCC, 0x3C);

                              //display.clearDisplay();

                              display.setTextSize(1);

                              display.setTextColor(WHITE);

                              display.setCursor(0,0);

                              display.println("Hello, world! Zeile1a");

                              display.println("Hello, world! Zeile2b");

                              display.println("Hello, world! Zeile3c");

                              display.println("Hello, world! Zeile4d");

                              display.display();

                              1 Reply Last reply
                              0
                              • M Offline
                                M Offline
                                mrmomba
                                wrote on last edited by
                                #21

                                Alles klar, ich hab mein Fehler gefunden :-)

                                1 Reply Last reply
                                0
                                • M Offline
                                  M Offline
                                  mrmomba
                                  wrote on last edited by
                                  #22

                                  Ich freue mich, dass ich euch jetzt die Beta auf den Weg geben darf:

                                  Anschluss der Komponenten wie folgt:

                                  #define DHTPIN 13 // Am WEMOS mini D1: D7

                                  #define LDRPIN A0 // Am WEMOS mini D1: A0

                                  #define MOTIONPIN 15 // Am WEMOS mini D1: D8

                                  #define LED_Weiss 0 // Am WEMOS mini D1: D3

                                  Funktionen die Vollständig funktionieren:

                                  • Bewegungserkennung

                                  • MQTT PUB/SUB

                                  • DHT22

                                  • Umgebungslicht

                                  • OLED mit 4 wechselnde Anzeigen:

                                  (Uhrzeit, DHT-Werte, 2x Status wie SSID Signal Topic)
                                  6321_iomqttsensors-beta1.7z
                                  6321_smarthome-multisensor-stand_2018-mar-16_11-37-55pm-000_customizedview22139147982.jpg
                                  6321_smarthome-multisensor-stand_2018-mar-16_11-38-14pm-000_customizedview6089617045.jpg
                                  6321_smarthome-multisensor-stand_2018-mar-16_11-38-32pm-000_customizedview29171863816.jpg

                                  1 Reply Last reply
                                  0
                                  • M Offline
                                    M Offline
                                    mrmomba
                                    wrote on last edited by
                                    #23

                                    Hallo,

                                    ich habe gerade ein interessantes Phänomen: Ständig wiederkehrende Probleme beim LOG über MQTT

                                    (Siehe Screenshot)
                                    6321_fehleriobrokermqtt.png

                                    Ok, was passiert hier?

                                    Ich habe noch etwas am Script rumgebaut: Damals habe ich mir die Tages-Zeit über eine Libary direkt geholt. Problem: Die kannte keine Sommer & Winterzeit. Also will ich die Zeit über MQTT verteilen - das klappt:

                                    Im Topic: info/SystemZeit lasse ich JEDE Minute die aktuelle Zeit einschreiben, das regelt ein Blockly im IOBroker für mich.

                                    Im Topic: info/SystemDatum kommt der aktuelle Tag rein, ebenfalls ein Script im IOBROKER.

                                    Das funktioniert auch OHNE Probleme. Die Werte sind jede Minute abrufbar - Überprüfung mittels MQTT.fx-Client.

                                    Das Abrufen klappt auch IMMER nach dem Neustart des ESP8266 und auch einige Zeit nach dem Neustart. Aber irgendwann hört es auf

                                    (Ich lasse mir die aktuelle Zeit auf OLED ausgeben UND zusätzlich als "zuletzt gesehen bzw. Timestamp" zurück geben) Und das verstehe ich nicht. Da die Callbackfunktion ja rennen müsste. (Timestamp)
                                    6321_fehleriobrokermqtt-zuletzt-gesehen.png
                                    6321_fehleriobrokermqtt-zuletzt-gesehen-web.png

                                    Client.loop steht nachwievor in der Loop()

                                    Callback hat folgendne Inhalt:

                                    https://pastebin.com/cTrTspjz

                                    ODER

                                    ! void callback(char* topic, byte* payload, unsigned int length) {
                                    ! pinMode(BUILTIN_LED, OUTPUT);
                                    ! Serial.println("*INFO:DO :Payload Topic Check");
                                    ! Serial.print("***********Message arrived in topic: ");
                                    ! Serial.println(topic); // Zeige Topic auf Serial an.
                                    ! digitalWrite(BUILTIN_LED, LOW); // Interne LED bei CALLBACK an
                                    ! int PayloadLength = 0; // Payloadlänge = 0;
                                    ! Serial.print("***********Message:");
                                    ! for (int i = 0; i < length; i++) {
                                    ! Serial.print((char)payload__);
                                    ! PayloadLength = i; // Payloadlänge = Gezählt;
                                    ! }
                                    ! if (String(topic) == Value9){ // Wenn Topic xyz_Nachtlicht ist
                                    ! if ((char)payload[0] == '1') { // Wenn Wert im Topic xyz_Nachtlicht == 1 ist
                                    ! bool_var_NachtLicht_an = 1; // dann setze globale Variable auf 1;
                                    ! bool_fkt_getAktor_Nachtlicht(bool_var_NachtLicht_an); // und Rufe Funktion auf für PIN = HIGH
                                    ! } else { // ODER Wenn Wert im Topic xyz_Nachtlicht != 1 ist
                                    ! bool_var_NachtLicht_an = 0; // dann setze globale Variable auf 0;
                                    ! bool_fkt_getAktor_Nachtlicht(bool_var_NachtLicht_an); // und Rufe Funktion auf für PIN = LOW
                                    ! }
                                    ! }
                                    ! if (String(topic) == Value17){ // Wenn Topic SystenZeit ist
                                    ! Serial.println("*INFO:DO :SystemZeit Topic Check");
                                    ! char *cstringZeit = (char *) payload; // Dann Caste irgendwas (inet Tip: https://github.com/knolleary/pubsubclient/issues/105)
                                    ! cstringZeit[PayloadLength+1] = '\0'; // Arrayende
                                    ! string_var_SystemZeit = String(cstringZeit); // Schreibe in Globale Variable
                                    ! Serial.println(String(cstringZeit));
                                    ! }
                                    ! if (String(topic) == Value18){ // Wenn Topic SystenDatum ist
                                    ! Serial.println("*INFO:DO :System Datum Topic Check");
                                    ! char *cstringDatum = (char *) payload; // Dann Caste irgendwas (inet Tip: https://github.com/knolleary/pubsubclient/issues/105)
                                    ! cstringDatum[PayloadLength+1] = '\0'; // Arrayende
                                    ! string_var_SystemDatum = String(cstringDatum); // Schreibe in Globale Variable
                                    ! Serial.println(String(cstringDatum));
                                    ! }
                                    ! client.loop();
                                    ! Serial.println();
                                    ! digitalWrite(BUILTIN_LED, HIGH);
                                    ! Serial.println("INFO:DONE:Payload Topic Check");
                                    ! Serial.println("
                                    –--------------------------------");
                                    ! }__

                                    1 Reply Last reply
                                    0
                                    • M Offline
                                      M Offline
                                      mrmomba
                                      wrote on last edited by
                                      #24

                                      Ich habe den Fehler noch immer nicht gefunden, habe aber z.B. eine Interessante Beobachtung gemacht - durch Zufall:

                                      Mitten im Betrieb hat der ESP8266 einfach die Setuproutine erneut durchgelaufen…

                                      Hat der sich aufgehangen?

                                      Kann das Problem vielleicht darin liegen das ich millis() in einer Variable schreibe und die Vollläuft?

                                      Auch frage ich mich, ob es schlau ist, die Variable AUSSERHALB der Loop zu initialisieren:

                                      ! static unsigned long TMP_logn_var_TimeStamp = millis(); static unsigned long TMP_logn_var_TimeStampPublish = TMP_logn_var_TimeStamp; int int_var_MenueLevel = 1; void loop() { Serial.println("############################################################################"); Serial.println("*INFO:DO :RUN LOOP START JETZT");s //MUCH MORE FOLLOWS }; !

                                      1 Reply Last reply
                                      0
                                      • TomTT Offline
                                        TomTT Offline
                                        TomT
                                        wrote on last edited by
                                        #25

                                        Das erste was ich kontrollieren würde ist die Stromversorgung des ESP.

                                        Setup durchlaufen = Reset.

                                        Du hast ja noch einige Sensoren dabei, die brauchen auch Strom….

                                        Probleme durch mangelnde Versorgung sind weit häufiger als vermutet.

                                        BAu mal einen großen Kondensator an den Anschluß des Netzteils.

                                        Wenn die Variable überläuft, fängt sie von 0 an, das löst normalerweise keinen Reset des Controllers aus...

                                        Grüße

                                        Tom

                                        PI3B > Raspimatic / Opi+2 > ioBroker / ESP8266
                                        if (System == "running") {finger = "weg";} else {lastAction = "Rückgängig";}

                                        1 Reply Last reply
                                        0
                                        • ThisoftT Offline
                                          ThisoftT Offline
                                          Thisoft
                                          wrote on last edited by
                                          #26

                                          Ich würde drauf tippen dass sich der Reset-Eingang des ESP irgendwas einfängt. Der sollte definiert beschalten werden wie z.B. hier beschrieben https://blog.thesen.eu/esp8266-reset-pr … -schalten/

                                          22 HM-Geräte; PivCCU2 auf RasPi

                                          ioBroker-Multihost; Ubuntu-Master auf Intel-Atom und 3 RasPi-Clients

                                          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

                                          380

                                          Online

                                          32.7k

                                          Users

                                          82.5k

                                          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