Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Hardware
    4. Windanzeige mit Ventus W132 & Wemos D1 Mini

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    Windanzeige mit Ventus W132 & Wemos D1 Mini

    This topic has been deleted. Only users with topic management privileges can see it.
    • Glasfaser
      Glasfaser @mwyraz last edited by Glasfaser

      @mwyraz sagte in Windanzeige mit Ventus W132 & Wemos D1 Mini:

      Wenn das hier noch aktuell ist, würde ich meine Ergebnisse aufbereiten und hier mal posten.
      Einen W174 Regenmesser habe ich schon angebunden (allerdings ohne die Original-Elektronik, da hier ja nur ein Reed-Kontakt-Auslöser gezählt werden muss.

      Auf jeden Fall , bin sehr gespannt darauf , wie du es gelöst hast 👍

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

        Ich lese die gesendeten Daten aus indem ich den 433 MHz Sender entfernt und den ESP8266 stattdessen angeschlossen habe.

        Läuft erstmal, schreibt alles nach Serial.println() und liefert plausible Daten:

        https://gist.github.com/micw/098709efc83a9d9ebf16d14cea4ca38e

        Für heute mache ich Feierabend, die nächsten Tage mache ich nen ordentlichen Sketch draus und dokumentiere die Schaltung.

        Ich werde die Daten im MQTT wie folgt ausgeben:

        /sensor/ID/alive -> 1 wenn der Sensor online ist, 0 via Last-will-and-testament, wenn er offline geht
        /sensor/ID/temp -> Temperatur in °C, 1 Kommastelle, englisches Zahlenformat
        /sensor/ID/hum -> Luftfeuchte in % (Ganzzahl)
        /sensor/ID/wind_avg -> durchschnitttliche Windgeschwindigkeit in m/s, 1 Kommastelle, englisches Zahlenformat
        /sensor/ID/wind_gust -> max Windgeschwindigkeit in m/s, 1 Kommastelle, englisches Zahlenformat
        /sensor/ID/wind_dir -> Windrichtung, 0, 45, 90 ... 315 Grad

        Wenn ich eine Umrechnung von Umdrehungszeit in Windgeschwindigkeit gefunden hätte, wäre ich direkt auf die Hardware-Sensoren gegangen. Dann hätte ich die Windrichtung besser interpolieren können, statt nur 8 Richtungen zu haben und hätte bei Böen auch schneller als 1x alle 30s senden können.

        Allerdings hat die Verwendung der Original-Logikplatine auch Vorteile. Ich habe zusätzlich ein Thermometer und auch eine Luftfeuchte-Messung. Diese scheint kapazitiv zu funktionieren, zumindest ist da kein "üblicher" Luftfeuchtesensor verbaut sondern eine Platte und ein Draht mit ~1cm Abstrand.

        Edit: natürlich kann man auch einen 433 MHz Empfänger an den Pin des ESP anschließen und den Sensor unmodifiziert lassen. Da ich ihn aber er per Netzteil versorgen will, habe ich mich für den Direkt-Anschluss entschieden.

        1 Reply Last reply Reply Quote 0
        • C
          claus1993 @mwyraz last edited by

          @mwyraz said in Windanzeige mit Ventus W132 & Wemos D1 Mini:

          Das Thema ruht bei mir gerade etwas da ich nicht weitergekommen bin. Habe jedoch noch immer großes Interesse daran und freue mich mehr von dir zu hören 🙂

          1 Reply Last reply Reply Quote 0
          • C
            claus1993 last edited by

            Einen W174 Regenmesser mit der eingebauten Elektronik habe ich bereits eingebunden. Habe einfach den 433 Mhz Sender gegen einen ESP getauscht und zähle die Impulse mittels ESP Easy.

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

              @claus1993 said in Windanzeige mit Ventus W132 & Wemos D1 Mini:

              Einen W174 Regenmesser mit der eingebauten Elektronik habe ich bereits eingebunden. Habe einfach den 433 Mhz Sender gegen einen ESP getauscht und zähle die Impulse mittels ESP Easy.

              Ich zähle die Regenmenge (0,7mm je Puls) direkt im ESP und sende die Werte via MQTT weiter. Auf dem Server läuft ein MQTT-Script, welches diese wieder in Deltas verwandelt (damit ist das tollerant gegenüber verlorenen Nachrichten und Neustarts). Die Deltas gehen in eine InfluxDB, in der Heimautomatsierung kann ich dann Regensummen über Intervalle ("heute", "letzte 24h", "letzte Woche") abfragen.

              C 1 Reply Last reply Reply Quote 0
              • M
                mwyraz last edited by

                Ich habe den Sketch fertig, funktioniert prima. Es verwendet noch eine Wifi/Mqtt Wrapper-Bibliothek von mir aber sollte ohne großen Aufwand mit den Original-MQTT+Wifi-Bibliotheken laufen.

                Das Gist habe ich aktualisiert: https://gist.github.com/micw/098709efc83a9d9ebf16d14cea4ca38e

                Die Libs sind ansosten auch hier zu finden:
                https://github.com/micw/ArduinoProjekte/tree/master/libraries/common
                https://github.com/micw/ArduinoProjekte/tree/master/libraries/private
                esp_pins.h braucht man denke ich inzwischen nicht mehr.

                C K 2 Replies Last reply Reply Quote 0
                • C
                  claus1993 @mwyraz last edited by

                  @mwyraz said in Windanzeige mit Ventus W132 & Wemos D1 Mini:

                  Ich zähle die Regenmenge (0,7mm je Puls) direkt im ESP und sende die Werte via MQTT weiter. Auf dem Server läuft ein MQTT-Script, welches diese wieder in Deltas verwandelt (damit ist das tollerant gegenüber verlorenen Nachrichten und Neustarts). Die Deltas gehen in eine InfluxDB, in der Heimautomatsierung kann ich dann Regensummen über Intervalle ("heute", "letzte 24h", "letzte Woche") abfragen.

                  So habe ich es auch gelöst 🙂

                  1 Reply Last reply Reply Quote 0
                  • C
                    claus1993 @mwyraz last edited by

                    @mwyraz said in Windanzeige mit Ventus W132 & Wemos D1 Mini:

                    Ich habe den Sketch fertig, funktioniert prima. Es verwendet noch eine Wifi/Mqtt Wrapper-Bibliothek von mir aber sollte ohne großen Aufwand mit den Original-MQTT+Wifi-Bibliotheken laufen.

                    Erstmal vielen Dank das du uns den Sketch zu Verfügung stellst!!! Bin jetzt kein Experte was das Schreiben eines Skriptes betrifft, von daher bestraffe mich nicht wenn ich mit meiner folgenden Frage daneben liege 😉

                    Im Sketch finde ich keinen Hinweis wie ich den ESP mit meinem WIFI und dem MQTT Adapter verbinden kann. Habe ich da etwas überlesen oder wo kann ich meine WIFI/MQTT Daten/Passwörter eintragen?

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

                      @claus1993 said in Windanzeige mit Ventus W132 & Wemos D1 Mini:

                      Im Sketch finde ich keinen Hinweis wie ich den ESP mit meinem WIFI und dem MQTT Adapter verbinden kann. Habe ich da etwas überlesen oder wo kann ich meine WIFI/MQTT Daten/Passwörter eintragen?

                      Der Code dazu ist in den verlinkten Libs (common und private). Da habe ich das Wifi- und MQTT Handling drin, weil das immer das selbe ist.

                      Du kannst den Code auch statt zu includen einfach in den Sketch kopieren:

                      https://github.com/micw/ArduinoProjekte/blob/master/libraries/common/common_wifi.h
                      https://github.com/micw/ArduinoProjekte/blob/master/libraries/common/common_mqtt.h

                      Letzterer erzeugt eine Client-ID für den ESP auf Basis seiner MAC-Adresse, schreibt beim Verbinden nach /sensor/CLIENTID/alive eine 1 und lässt es beim Trennen auf 0 umsetzten. Damit sehe ich immer, welche meiner ESPs verbunden sind.

                      Die WIFI- und MQTT-Credentials sind per #define in einer externen Datei die im .gitignore liegt. Dadurch committe ich die nicht aus versehen nach Github. Ein Beispiel dafür ist unter https://github.com/micw/ArduinoProjekte/blob/master/libraries/private/private_wifi.h.example

                      Edit:

                      @claus1993 said in Windanzeige mit Ventus W132 & Wemos D1 Mini:

                      Bin jetzt kein Experte was das Schreiben eines Skriptes betrifft, von daher bestraffe mich nicht wenn ich mit meiner folgenden Frage daneben liege

                      Fragen hilft Verstehen, daher frage gerne und viel 😉 Wenn Du Schwierigkeiten mit dem Sketch hast, kann ich gerne weiterhelfen.

                      C 1 Reply Last reply Reply Quote 0
                      • C
                        claus1993 @mwyraz last edited by

                        @mwyraz

                        Habe mal alles in einen Sketch kopiert und ihn dann überprüfen lassen.

                        Beim kopieren habe ich die define und include untereinander geschrieben. Den Rest der einzelnen Sketche habe ich dann darunter kopiert. Zusätzlich habe ich die define für die Userberechtigungen in den Sketch kopiert. Im Endeffekt habe ich aus 4 einzelnen Sketchen einen einzigen erstellt.

                        /**
                         * Ein ESP8622 NodeMCU Develompent Board, welches Sensorwerte via MQTT verschickt
                         * http://frightanic.com/iot/comparison-of-esp8266-nodemcu-development-boards/
                         * 
                         * Umbau eines W132 Windsensors von ELV
                         * 
                         * - Abtrennen des 433 MHZ-Senders, welcher mit 3 Leitungen (Schwarz, Rot, Blau) an der Logik-Platine angeschlossen ist
                         * - Anschließen des ESP-8266
                         *   - Schwarz -> GND
                         *   - Rot -> 3.3V
                         *   - Blau -> D2
                         * 
                         * Eine Beschreibung des Protokoll ist unter http://www.tfd.hu/tfdhu/files/wsprotocol/auriol_protocol_v20.pdf zu finden, hilfreich ist auch https://sourceforge.net/p/wmrx00/discussion/855158/thread/b3a47730/
                         * - Bits und Sync-Signale werden über die Abstände der fallenden Flanke codiert
                         * - diese Implementierung nutzt dazu einen Interrupt auf der fallenden Flanke
                         */
                        
                        
                        #define MQTT_ALIVE_TOPIC "sensor/%s/alive"
                        #define MQTT_DATA_TOPIC "sensor/%s/%s"
                        #define MQTT_KEEPALIVE 10
                        
                        #define WIFI_SSID "mywifi"
                        #define WIFI_PASSWORD "topsecret"
                        #define MQTT_HOST "10.10.10.1"
                        #define MQTT_PORT 1883
                        #define MQTT_USERNAME "sensor"
                        #define MQTT_PASSWORD "secret"
                        
                        #include <common_wifi.h>
                        #include <common_mqtt.h>
                        #include <esp_pins.h>
                        #include <ESP8266WiFi.h>
                        #include <WiFiUdp.h>
                        #include <private_wifi.h>
                        #include <PubSubClient.h>
                        
                        #define PIN_ANEMOMETER D2
                        
                        void setup_wifi() {
                          delay(10);
                          // We start by connecting to a WiFi network
                          Serial.println();
                          Serial.print("Connecting to ");
                          Serial.println(WIFI_SSID);
                        
                          WiFi.mode(WIFI_STA); // disable hotspot
                          WiFi.begin(WIFI_SSID,WIFI_PASSWORD);
                          wdt_reset(); // Watchdock resetten
                        
                          while (WiFi.status() != WL_CONNECTED) {
                            delay(500);
                            Serial.print(".");
                          }
                        
                          Serial.println("");
                          Serial.println("WiFi connected");
                          Serial.println("IP address: ");
                          Serial.println(WiFi.localIP());
                        }
                        
                        extern const char* MQTT_FALSE = "0";
                        
                        extern const char* MQTT_TRUE = "1";
                        
                        
                        
                        WiFiClient wifiClient;
                        
                        PubSubClient mqttClient(wifiClient);
                        
                        
                        
                        char MQTT_CLIENT_ID[15];
                        
                        
                        
                        void setup_mqtt() {
                        
                          mqttClient.setServer(MQTT_HOST, MQTT_PORT);
                        
                          byte mac[6];
                        
                          WiFi.macAddress(mac);
                        
                          sprintf(MQTT_CLIENT_ID, "ESP8266_%02X%02X%02X", mac[3], mac[4], mac[5]);
                        
                        }
                        
                        
                        
                        void connect_mqtt(char* MQTT_TOPIC) {
                        
                          // Loop until we're reconnected
                        
                          while (!mqttClient.connected()) {
                        
                            Serial.print("Attempting MQTT connection...");
                        
                            // Attempt to connect
                        
                        #if defined(MQTT_ALIVE_TOPIC)
                        
                            byte mac[6];
                        
                            WiFi.macAddress(mac);
                        
                            char aliveTopicId[7];
                        
                            sprintf(aliveTopicId, "%02X%02X%02X", mac[3], mac[4], mac[5]);
                        
                            char aliveTopic[255];
                        
                            sprintf(aliveTopic, MQTT_ALIVE_TOPIC, aliveTopicId);
                        
                            if (mqttClient.connect(MQTT_CLIENT_ID, MQTT_USERNAME, MQTT_PASSWORD, aliveTopic, 1, 1, MQTT_FALSE)) {
                        
                              Serial.println("connected with last will and testament enabled");
                        
                              mqttClient.publish(aliveTopic,MQTT_TRUE,1);
                        
                              Serial.print("Sent alive message to ");
                        
                              Serial.println(aliveTopic);
                        
                        #else
                        
                            if (mqttClient.connect(MQTT_CLIENT_ID, MQTT_USERNAME, MQTT_PASSWORD)) {
                        
                              Serial.println("connected");
                        
                        #endif
                        
                              if (MQTT_TOPIC && mqttClient.subscribe(MQTT_TOPIC,1)) {
                        
                                Serial.print("Subscribed to ");
                        
                                Serial.println(MQTT_TOPIC);
                        
                              }
                        
                            } else {
                        
                              Serial.print("failed, rc=");
                        
                              Serial.print(mqttClient.state());
                        
                              Serial.println(" try again in 5 seconds");
                        
                              // Wait 5 seconds before retrying
                        
                              delay(5000);
                        
                              wdt_reset();
                        
                            }
                        
                          }
                        
                        }
                        
                        volatile unsigned long lastTrigger;
                        
                        byte mac[6];
                        char sensorId[7];
                        char topicBuffer[255];
                        char messageBuffer[255];
                        
                        byte bitPos=-1;
                        byte messageNum=-1;
                        // there are always sent 6 messages. For temperature/humidity, the message is repeatet 6 times. For wind, 2 messages are repeatet 3 times each
                        int message1Bits[36];
                        int message2Bits[36];
                        
                        bool verifyChecksum(int bits[]) {
                          int checksum=0xf;
                          for (int i=0;i<8;i++) {
                            checksum-=bits[i*4]|bits[i*4+1]<<1|bits[i*4+2]<<2|bits[i*4+3]<<3;
                          }
                          checksum&=0xf;
                          int expectedChecksum=bits[32]|bits[33]<<1|bits[34]<<2|bits[35]<<3;
                          return checksum==expectedChecksum;
                        }
                        
                        void decodeMessages() {
                          if (!verifyChecksum(message1Bits)) {
                            Serial.println("Checksum mismatch in message #1");
                            return;
                          }
                          
                        /*  
                          Serial.println("---");
                          for (int i=0;i<36;i++) {
                            Serial.print(message1Bits[i]);
                            Serial.print(" ");
                          }
                          Serial.println();
                          for (int i=0;i<36;i++) {
                            Serial.print(message2Bits[i]);
                            Serial.print(" ");
                          }
                          Serial.println();
                          */
                          
                          if (message1Bits[9]==1 && message1Bits[10]==1) { // wind data (2 messages)
                        
                            if (!verifyChecksum(message2Bits)) {
                              Serial.println("Checksum mismatch in message #1");
                              return;
                            }
                            
                            float windSpeed=(message1Bits[24]    | message1Bits[25]<<1 | message1Bits[26]<<2 | message1Bits[27]<<3 |
                                             message1Bits[28]<<4 | message1Bits[29]<<5 | message1Bits[30]<<6 | message1Bits[31]<<7)*0.2f;
                            Serial.print("Average wind speed: ");
                            Serial.print(windSpeed);
                            Serial.println(" m/s");
                        
                            sprintf(topicBuffer, MQTT_DATA_TOPIC, sensorId, "wind_speed");
                            String value = String(windSpeed,1);
                            value.toCharArray(messageBuffer,255);
                            mqttClient.publish(topicBuffer,(byte*)messageBuffer,strlen(messageBuffer));
                        
                        
                            float windGust=(message2Bits[24]    | message2Bits[25]<<1 | message2Bits[26]<<2 | message2Bits[27]<<3 |
                                            message2Bits[28]<<4 | message2Bits[29]<<5 | message2Bits[30]<<6 | message2Bits[31]<<7)*0.2f;
                            Serial.print("Max wind speed: ");
                            Serial.print(windGust);
                            Serial.println(" m/s");
                        
                            sprintf(topicBuffer, MQTT_DATA_TOPIC, sensorId, "wind_gust");
                            value = String(windGust,1);
                            value.toCharArray(messageBuffer,255);
                            mqttClient.publish(topicBuffer,(byte*)messageBuffer,strlen(messageBuffer));
                        
                            int windDirection=(message2Bits[15]    | message2Bits[16]<<1 | message2Bits[17]<<2 | message2Bits[18]<<3 |
                                               message2Bits[19]<<4 | message2Bits[20]<<5 | message2Bits[21]<<6 | message2Bits[22]<<7 |
                                               message2Bits[23]<<8);
                            Serial.print("Wind direction: ");
                            Serial.print(windDirection);
                            Serial.println(" °");
                        
                            sprintf(topicBuffer, MQTT_DATA_TOPIC, sensorId, "wind_direction");
                            value = String(windDirection);
                            value.toCharArray(messageBuffer,255);
                            mqttClient.publish(topicBuffer,(byte*)messageBuffer,strlen(messageBuffer));
                            
                          } else {  // temperature/humidity in both messages
                            int temperatureRaw=(message1Bits[12]    | message1Bits[13]<<1 | message1Bits[14]<<2 | message1Bits[15]<<3 |
                                                message1Bits[16]<<4 | message1Bits[17]<<5 | message1Bits[18]<<6 | message1Bits[19]<<7 | 
                                                message1Bits[20]<<8 | message1Bits[21]<<9 | message1Bits[22]<<10| message1Bits[23]<<11);
                            if (temperatureRaw& 0x800) temperatureRaw+=0xF000; // negative number, 12 to 16 bit
                            float temperature=temperatureRaw*0.1f;
                            Serial.print("Temperature: ");
                            Serial.print(temperature);
                            Serial.println(" °C");
                        
                            sprintf(topicBuffer, MQTT_DATA_TOPIC, sensorId, "temp");
                            String value = String(temperature,1);
                            value.toCharArray(messageBuffer,255);
                            mqttClient.publish(topicBuffer,(byte*)messageBuffer,strlen(messageBuffer));
                            
                            int humidity=(message1Bits[24] | message1Bits[25]<<1 | message1Bits[26]<<2 | message1Bits[27]<<3 )+
                                         (message1Bits[28] | message1Bits[29]<<1 | message1Bits[30]<<2 | message1Bits[31]<<3 )*10;
                            Serial.print("Humidity: ");
                            Serial.print(humidity);
                            Serial.println(" %");
                        
                            sprintf(topicBuffer, MQTT_DATA_TOPIC, sensorId, "humi");
                            value = String(humidity);
                            value.toCharArray(messageBuffer,255);
                            mqttClient.publish(topicBuffer,(byte*)messageBuffer,strlen(messageBuffer));
                            
                          }
                          
                        }
                        
                        void dataTrigger() {
                          unsigned long now=micros();
                          unsigned long duration=now-lastTrigger;
                          lastTrigger=now;
                        
                          if (duration>30000) { // a news block of messages begins
                            messageNum=0;
                          }
                        
                          if (duration>7000) { // ~9 ms = sync signal
                            if (bitPos==36) { // we got a full message
                              if (messageNum==0) { // 1st message completed
                                messageNum=1;
                              } else if (messageNum==1) { // 2nd message completed
                                decodeMessages();
                                messageNum=-1;
                              }
                            }
                            bitPos=0; // Nachricht begonnen
                            return;
                          }
                        
                          if (messageNum<0) return; // ignore repeated messages
                          if (bitPos<0) return; // invalid message, ignored
                        
                          if (messageNum==0) {
                            message1Bits[bitPos]=(duration>3300); // 2.2ms=LOW, 4.4ms = HIGH bits
                          } else {
                            message2Bits[bitPos]=(duration>3300); // 2.2ms=LOW, 4.4ms = HIGH bits
                          }
                          bitPos++;
                          if (bitPos>36) bitPos=-1; // message too long -> invalid
                        }
                        
                        void setup() {
                          wdt_enable(WDTO_8S); // Watchdog muss alle 8 Sekunden resettet werden
                          Serial.begin(115200);
                          Serial.println("Initializing");
                        
                          WiFi.macAddress(mac);
                          sprintf(sensorId, "%02X%02X%02X", mac[3], mac[4], mac[5]);
                        
                          setup_wifi();
                          wdt_reset(); // Watchdog resetten
                          setup_mqtt();
                          wdt_reset(); // Watchdog resetten
                          
                          pinMode(PIN_ANEMOMETER,INPUT);
                          attachInterrupt(digitalPinToInterrupt(PIN_ANEMOMETER), dataTrigger, FALLING);
                        
                          wdt_reset(); // Watchdog resetten
                        
                          Serial.println("Starting");
                        }
                        
                        void loop() {
                          wdt_reset(); // Watchdog resetten
                          connect_mqtt(0);
                          wdt_reset(); // Watchdog resetten
                          mqttClient.loop();
                        }
                        

                        Beim Prüfen bekomme ich folgende Fehlerantwort; "common_wifi.h: No such file or Directory"

                        Woran kann das liegen?

                        Danke für deine Unterstützung!

                        M 1 Reply Last reply Reply Quote 0
                        • C
                          claus1993 last edited by claus1993

                          Hier mal noch die komplette Fehlermeldung

                          Arduino: 1.8.8 (Windows 10), Board: "LOLIN(WEMOS) D1 R2 & mini, 80 MHz, Flash, Disabled, 4M (no SPIFFS), v2 Lower Memory, Disabled, None, Only Sketch, 921600"
                          
                          C:\Program Files (x86)\Arduino\arduino-builder -dump-prefs -logger=machine -hardware C:\Program Files (x86)\Arduino\hardware -hardware C:\Users\claus\AppData\Local\Arduino15\packages -tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files (x86)\Arduino\hardware\tools\avr -tools C:\Users\claus\AppData\Local\Arduino15\packages -built-in-libraries C:\Program Files (x86)\Arduino\libraries -libraries C:\Users\claus\Documents\Arduino\libraries -fqbn=esp8266:esp8266:d1_mini:xtal=80,vt=flash,exception=disabled,eesz=4M,ip=lm2f,dbg=Disabled,lvl=None____,wipe=none,baud=921600 -ide-version=10808 -build-path C:\Users\claus\AppData\Local\Temp\arduino_build_156623 -warnings=none -build-cache C:\Users\claus\AppData\Local\Temp\arduino_cache_901311 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.esptool.path=C:\Users\claus\AppData\Local\Arduino15\packages\esp8266\tools\esptool\2.5.0-3-20ed2b9 -prefs=runtime.tools.esptool-2.5.0-3-20ed2b9.path=C:\Users\claus\AppData\Local\Arduino15\packages\esp8266\tools\esptool\2.5.0-3-20ed2b9 -prefs=runtime.tools.xtensa-lx106-elf-gcc.path=C:\Users\claus\AppData\Local\Arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\2.5.0-3-20ed2b9 -prefs=runtime.tools.xtensa-lx106-elf-gcc-2.5.0-3-20ed2b9.path=C:\Users\claus\AppData\Local\Arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\2.5.0-3-20ed2b9 -prefs=runtime.tools.mkspiffs.path=C:\Users\claus\AppData\Local\Arduino15\packages\esp8266\tools\mkspiffs\2.5.0-3-20ed2b9 -prefs=runtime.tools.mkspiffs-2.5.0-3-20ed2b9.path=C:\Users\claus\AppData\Local\Arduino15\packages\esp8266\tools\mkspiffs\2.5.0-3-20ed2b9 -verbose C:\Users\claus\Documents\Arduino\Windmesser\Windmesser.ino
                          C:\Program Files (x86)\Arduino\arduino-builder -compile -logger=machine -hardware C:\Program Files (x86)\Arduino\hardware -hardware C:\Users\claus\AppData\Local\Arduino15\packages -tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files (x86)\Arduino\hardware\tools\avr -tools C:\Users\claus\AppData\Local\Arduino15\packages -built-in-libraries C:\Program Files (x86)\Arduino\libraries -libraries C:\Users\claus\Documents\Arduino\libraries -fqbn=esp8266:esp8266:d1_mini:xtal=80,vt=flash,exception=disabled,eesz=4M,ip=lm2f,dbg=Disabled,lvl=None____,wipe=none,baud=921600 -ide-version=10808 -build-path C:\Users\claus\AppData\Local\Temp\arduino_build_156623 -warnings=none -build-cache C:\Users\claus\AppData\Local\Temp\arduino_cache_901311 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.esptool.path=C:\Users\claus\AppData\Local\Arduino15\packages\esp8266\tools\esptool\2.5.0-3-20ed2b9 -prefs=runtime.tools.esptool-2.5.0-3-20ed2b9.path=C:\Users\claus\AppData\Local\Arduino15\packages\esp8266\tools\esptool\2.5.0-3-20ed2b9 -prefs=runtime.tools.xtensa-lx106-elf-gcc.path=C:\Users\claus\AppData\Local\Arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\2.5.0-3-20ed2b9 -prefs=runtime.tools.xtensa-lx106-elf-gcc-2.5.0-3-20ed2b9.path=C:\Users\claus\AppData\Local\Arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\2.5.0-3-20ed2b9 -prefs=runtime.tools.mkspiffs.path=C:\Users\claus\AppData\Local\Arduino15\packages\esp8266\tools\mkspiffs\2.5.0-3-20ed2b9 -prefs=runtime.tools.mkspiffs-2.5.0-3-20ed2b9.path=C:\Users\claus\AppData\Local\Arduino15\packages\esp8266\tools\mkspiffs\2.5.0-3-20ed2b9 -verbose C:\Users\claus\Documents\Arduino\Windmesser\Windmesser.ino
                          Using board 'd1_mini' from platform in folder: C:\Users\claus\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.0
                          Using core 'esp8266' from platform in folder: C:\Users\claus\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.0
                          Build-Optionen wurden verändert, alles wird neu kompiliert
                          Detecting libraries used...
                          "C:\\Users\\claus\\AppData\\Local\\Arduino15\\packages\\esp8266\\tools\\xtensa-lx106-elf-gcc\\2.5.0-3-20ed2b9/bin/xtensa-lx106-elf-g++" -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ "-IC:\\Users\\claus\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\2.5.0/tools/sdk/include" "-IC:\\Users\\claus\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\2.5.0/tools/sdk/lwip2/include" "-IC:\\Users\\claus\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\2.5.0/tools/sdk/libc/xtensa-lx106-elf/include" "-IC:\\Users\\claus\\AppData\\Local\\Temp\\arduino_build_156623/core" -c -w -Os -g -mlongcalls -mtext-section-literals -fno-rtti -falign-functions=4 -std=c++11 -ffunction-sections -fdata-sections -fno-exceptions -w -x c++ -E -CC -DF_CPU=80000000L -DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=0 -DARDUINO=10808 -DARDUINO_ESP8266_WEMOS_D1MINI -DARDUINO_ARCH_ESP8266 "-DARDUINO_BOARD=\"ESP8266_WEMOS_D1MINI\"" -DFLASHMODE_DIO -DESP8266 "-IC:\\Users\\claus\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\2.5.0\\cores\\esp8266" "-IC:\\Users\\claus\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\2.5.0\\variants\\d1_mini" "C:\\Users\\claus\\AppData\\Local\\Temp\\arduino_build_156623\\sketch\\Windmesser.ino.cpp" -o nul
                          Windmesser:30:25: error: common_wifi.h: No such file or directory
                          
                           #include <common_wifi.h>
                          
                                                   ^
                          
                          compilation terminated.
                          
                          exit status 1
                          common_wifi.h: No such file or directory
                          

                          WIFI und MQTT Namen sowie Passwörter habe ich bewusst noch nicht eingetragen 🙂

                          1 Reply Last reply Reply Quote 0
                          • C
                            claus1993 last edited by

                            Dann gebe ich mir mal selber eine Antwort 🙂

                            Da ich die Befehle direkt in den Sketch kopiert habe, benötige ich die externen Libraries nicht. Externe Libraries werden in den gleichen Ordner abgelegt wie der Sketch und im Sketch mit include eingebunden.

                            Habe die #include für <common_wifi.h>, <Common_mqtt.h>, <esp_pins.h> und <private_wifi.h> mit einen // davor als Kommentar gesetzt. Den Sketch auf meinen ESP geflasht und jetzt habe ich die Values in meinem ioBroker 🙂

                            Weiterhin habe ich meine Zugriffsdaten für mein WLAN und MQTT im Sketch eingetragen.

                            😊 👍

                            W 1 Reply Last reply Reply Quote 0
                            • M
                              mwyraz last edited by mwyraz

                              Top 😉

                              Please enter a longer post. Posts should contain at least 8 character(s).

                              Freu mich, dass es geht. Ja, die Libs entfallen, wenn du deren Inhalt reinkopierst kannst die Zeilen rauslöschen.

                              Edit: ich versuche mal, meinen Blogpost incl. "Schaltplan" zeitnah fertig zu machen und poste dann den Link hier.

                              1 Reply Last reply Reply Quote 1
                              • F
                                feli1 last edited by feli1

                                ...habe in dem Sketch von @claus1993 vom 9.Okt die includes "common_wifi.h, common_mqtt.h, private_wifi.h und esp_pins.h" auskommentiert, die Wlan und MQTT Login Daten eingetragen und den Sketch erfolgreich geflasht.
                                Der Wemos meldet sich erfolgreich in der Fritzbox an, alles scheint ok. Leider wird mein MQTT Adapter im IO Broker nicht grün. Mit dem MQTT Beispiel- Sketch aus dem Arduino IDE wird er dagegen sofort grün.
                                Habe im Moment keine Idee wie ich weitermachen könnte.
                                Hat jemand einen Vorschlag?

                                1 Reply Last reply Reply Quote 0
                                • W
                                  Wayne1983 @claus1993 last edited by

                                  @claus1993 Hallo. Vielleicht könntest du mir helfen. Habe alle lt. deiner Beschreibung erledigt.
                                  Bekomme aber immer folgende Fehlermeldung.

                                  Fehlermeldung W132_neu.jpg

                                  Danke.

                                  1 Reply Last reply Reply Quote 0
                                  • H
                                    hugo1215 last edited by

                                    Hallo zusammen,
                                    habe auch das Script von @claus1993 genommen und auch die #include für <common_wifi.h>, <Common_mqtt.h>, <esp_pins.h> und <private_wifi.h> mit einen // auskommentiert.
                                    Habe meine Wlan daten und MQTT daten eingeben. Im Wlan habe ich diesen auch gefunden nur leider sehe ich diese noch nicht im MQTT im Iobroker.
                                    Habe ich was übersehen? Sensor ist auch angeschlossen.
                                    Gruß

                                    1 Reply Last reply Reply Quote 0
                                    • C
                                      claus1993 last edited by claus1993

                                      Sorry das tut mir leid das es nicht funktioniert...bin leider kein Profi was das programmieren betrifft und wurschtele mich auch immer so durch. meist ist es ein Trial and Error...

                                      @Wayne1983
                                      du hast die Meldung zu dem D2 Pin gesehen? Hast du deine Data Leitung dort angesetzt?
                                      Hatte in einem anderen Sketch auch ein Problem und habe dann D2 durch den GPIO Pin ersetzt. Vielleicht hilft das.

                                      @hugo1215
                                      hast du die Daten korrekt eingegeben? Funktionieren andere MQTT Exports? Hast du auch deine IP und Port Nummer verwendet und nicht die die im Skript steht?

                                      Aufgrund eines Rechner Crashs habe ich den Sketch leider nicht mehr sonst würde ich ihn hier posten 😞

                                      1 Reply Last reply Reply Quote 0
                                      • H
                                        hugo1215 last edited by hugo1215

                                        Hallo @claus1993,
                                        also normal funktionieren die Exports. Habe 4 Wemos laufen wo ESP EASY läuft mit meinem Einstellungen.
                                        Hatte einen Kleine Fehler gefunden. hehe. Wass aber passiert ist das es sich immer wieder mit meinem WLAN verbinden will das hat er auch macht immer ein Reconnect und somit kommt er nicht zum verbinden mit dem MQTT server und kann dann im weiteren Verlauf nicht die Daten vom Windmesser weiterleiten.
                                        Gruß

                                        H 1 Reply Last reply Reply Quote 0
                                        • C
                                          claus1993 last edited by

                                          @hugo1215

                                          sorry dann kann ich leider nicht weiterhelfen. Sollte mir etwas einfallen würde ich mich melden.

                                          H 1 Reply Last reply Reply Quote 0
                                          • premo
                                            premo last edited by premo

                                            Falls Interesse besteht dann könnte ich mal ein einfaches Ansteuern der Markise anbieten.

                                            Bei mir ist ein Eltako WS Windsensor mit Wemos D1 mini im Einsatz.
                                            Mit dem Skript wird über MQTT die Windstärke in km/h in IOBroker
                                            angezeigt.
                                            Der Eltako WS erzeugt pro Umdrehung 2 Impulse, beim W132 wird nur 1 Impuls erzeugt.
                                            Dieses muss im Skript noch eingestellt werden.
                                            Anbei die Beschreibung mit Skript

                                            esp8266-anemometer-master.zip Beschreibung.zip

                                            Gerade noch was Intressantes gefunden.
                                            https://gist.github.com/micw/098709efc83a9d9ebf16d14cea4ca38e

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            664
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

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