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

NEWS

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

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

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

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

Geplant Angeheftet Gesperrt Verschoben Hardware
39 Beiträge 6 Kommentatoren 7.2k Aufrufe
  • Ä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.
  • M Offline
    M Offline
    mrmomba
    schrieb am zuletzt editiert von
    #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 Antwort Letzte Antwort
    0
    • M Offline
      M Offline
      mrmomba
      schrieb am zuletzt editiert von
      #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 Antwort Letzte Antwort
      0
      • ThisoftT Offline
        ThisoftT Offline
        Thisoft
        schrieb am zuletzt editiert von
        #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 Antwort Letzte Antwort
        0
        • M Offline
          M Offline
          mrmomba
          schrieb am zuletzt editiert von
          #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 Antwort Letzte Antwort
          0
          • WalW Offline
            WalW Offline
            Wal
            Developer
            schrieb am zuletzt editiert von
            #17

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

            Gruß
            Walter

            DoorIO-Adapter
            wioBrowser-Adapter und wioBrowser

            1 Antwort Letzte Antwort
            0
            • M Offline
              M Offline
              mrmomba
              schrieb am zuletzt editiert von
              #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 Antwort Letzte Antwort
              0
              • WalW Offline
                WalW Offline
                Wal
                Developer
                schrieb am zuletzt editiert von
                #19

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

                Gruß
                Walter

                DoorIO-Adapter
                wioBrowser-Adapter und wioBrowser

                1 Antwort Letzte Antwort
                0
                • M Offline
                  M Offline
                  mrmomba
                  schrieb am zuletzt editiert von
                  #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 Antwort Letzte Antwort
                  0
                  • M Offline
                    M Offline
                    mrmomba
                    schrieb am zuletzt editiert von
                    #21

                    Alles klar, ich hab mein Fehler gefunden :-)

                    1 Antwort Letzte Antwort
                    0
                    • M Offline
                      M Offline
                      mrmomba
                      schrieb am zuletzt editiert von
                      #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 Antwort Letzte Antwort
                      0
                      • M Offline
                        M Offline
                        mrmomba
                        schrieb am zuletzt editiert von
                        #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 Antwort Letzte Antwort
                        0
                        • M Offline
                          M Offline
                          mrmomba
                          schrieb am zuletzt editiert von
                          #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 Antwort Letzte Antwort
                          0
                          • TomTT Offline
                            TomTT Offline
                            TomT
                            schrieb am zuletzt editiert von
                            #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 Antwort Letzte Antwort
                            0
                            • ThisoftT Offline
                              ThisoftT Offline
                              Thisoft
                              schrieb am zuletzt editiert von
                              #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 Antwort Letzte Antwort
                              0
                              • M Offline
                                M Offline
                                mrmomba
                                schrieb am zuletzt editiert von
                                #27

                                Hallo,

                                <size size="150">vielen Dank an euch beiden.</size>

                                Ich habe mich der Versorgungsproblem mal angenommen, allerdings nicht wie da beschrieben, mangels Kondensatoren.

                                Nun hab ich es wie folgt umgesetzt:

                                USB-Kabel von einer defekten Tastatur abgeschnitten und auf den 5V Pin des ESPs gelegt. (Also 5V direkt vom Handyladegerät).

                                Parallel dazu ein 5V-3.3V LinearspannungsDingens mit 0.8A verbaut um die Versorgungsspannung aller 3.3V Komponenten zur Verfügung gestellt.

                                Ich habe die Resetempfindlichkeit getestet, ich kann mit meinen Finger / Metallprüfspitze dran patschen. passiert nichts.

                                Ist der resetpin identisch zum Resettbutton am WEMOS D1?

                                EBENFALLS habe ich noch etwas Code optimiert.

                                1. Ich habe z.B. für alle xyz-Sekunden mit Millis() gearbeitet - mehrmals im Loop - das fand ich Kacke.

                                Nun lasse ich Millis() in Sekunden umrechnen und ein (Sekunden)Counter hochzählen und nutze den - das heißt alle 4 Durchläufe wird Millis() 2x Benutzt. IRGENDWANN wird auch der CONST LONG mit Sekunden überlaufen, vermutlich aber bedeutend später als wenn da ein nackter millis()-Wert drin steht.

                                2. habe ich das Publishing der Werte auf 15 Sekunden gestellt (Wo Sinnvoll)

                                3. ich habe mehrfache Funktionsnutzungen in der Loop - wo sinvoll möglich - versucht zu reduzieren.

                                4. Funktionen wurden angepasst, schleifen und weitestgehend alle delays() entfernt.

                                Heute läuft das Ding super - Uptime seit 44434 Sekunden :-) und letzter Timestamp ist genau in dieser Minute gewesen (Lass ich mir vom Sensor zurück geben)
                                6321_iobrokermqtt.png

                                So langsam läuft das Projekt Softwareseitig dem Ende entgegen. Ich habe aber durchaus auch ein paar Funktionen weggelassen, gestrichen, weil es sonst den Sensor meiner Meinung nach überlädt. Ich werde das alles noch einmal neu Skizzieren :)

                                1 Antwort Letzte Antwort
                                0
                                • M Offline
                                  M Offline
                                  mrmomba
                                  schrieb am zuletzt editiert von
                                  #28

                                  Moin Zusammen,

                                  ich habe mal eine Frage:

                                  Darf ich den Wemos D1 Mini sowohl den 3,3V als auch den 5V Bereich von extern mit Strom versorgen?

                                  Ich habe da so ein lustigen Effekt und ich weiß den noch nicht einzuordnen.

                                  1 Antwort Letzte Antwort
                                  0
                                  • TomTT Offline
                                    TomTT Offline
                                    TomT
                                    schrieb am zuletzt editiert von
                                    #29

                                    Wie meinst du denn das genau?

                                    Meinst du 3,3V und 5 V aus komplett verschiedenen Netzteilen oder wie?

                                    Ich versteh deine Frage nicht so genau…

                                    Grüße

                                    Tom

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

                                    1 Antwort Letzte Antwort
                                    0
                                    • M Offline
                                      M Offline
                                      mrmomba
                                      schrieb am zuletzt editiert von
                                      #30

                                      Hallo Zusammen, ich war schon kurz davor, meine Hardware in die Tonne zu schmeißen und hatte einen immensen Frust aufgebaut. Es lief und lief nicht so wie ich will / wollte.

                                      Ich habe mich also nach über einen Monat mal wieder hingesetzt und weiter gearbeitet.

                                      Es ist natürlich alles noch im ALFA-Status, kein Beta.

                                      => Was hat sich geändert?

                                      • DHT22 in die Tonne (nach Kurzschluss) geschmissen, und auf BME280 gewechselt, sau-geiles Teil!!! inkl. Barometer.

                                      • ausschließlich externe Stromversorgung.

                                      Natürlich habe ich glatt wieder ein Problem, während in meinen einen Sketch der OLED ohne Kummer arbeitet, bekomme ich diesen nun wieder nicht zu laufen. Naja, was solls, erstmal muss der Rest laufen.

                                      1 Antwort Letzte Antwort
                                      0
                                      • B Offline
                                        B Offline
                                        B3ta
                                        schrieb am zuletzt editiert von
                                        #31

                                        Hallo,

                                        hab mal alles überflogen und frag mich wieso so umständlich. Ich mache gerade denke ich fast das selbe aber nur mit der Sonoff-Tasmota Firmware.

                                        Ist doch eigentlich alles da drinnen was man an Modulen benötigt. Und mir fehlen leider noch paar Bauteile.

                                        Bis jetzt läuft:

                                        -RGB WS2812

                                        -Infrarot Senden / Empfangen

                                        -Temperatur über DHT11,Am2301,DS18x20

                                        -halt normal Ansteuerung von Bewegungsmelder,Relais,Taster,Schalter,High / Low

                                        Noch bin ich am 433Mhz da fehlen mir noch die Teile aus China

                                        Würde denke auch alles mit ESP-Easy gehen.

                                        1 Antwort Letzte Antwort
                                        0
                                        • M Offline
                                          M Offline
                                          mrmomba
                                          schrieb am zuletzt editiert von
                                          #32

                                          Halle B3ta,

                                          ich habe mit Tasmota auf dem Wemos rumgespielt, aber er übermittelt mir einfach nicht zuverlässig (oder eher gar nicht) die Werte. Ich bin nach meinem Frust zu ESP-Easy (GRAUENHAFTE UI) und Tasmota gewechselt.

                                          Hier mal mein Leidensweg, bei Facebook beschildert:

                                          https://www.facebook.com/groups/4404991 … 837351823/

                                          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

                                          828

                                          Online

                                          32.4k

                                          Benutzer

                                          81.5k

                                          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