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. Windanzeige mit Ventus W132 & Wemos D1 Mini

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    11
    1
    475

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.6k

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

Windanzeige mit Ventus W132 & Wemos D1 Mini

Geplant Angeheftet Gesperrt Verschoben Hardware
45 Beiträge 14 Kommentatoren 11.2k Aufrufe 17 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • C Offline
    C Offline
    claus1993
    schrieb am zuletzt editiert von
    #1

    Hallo Zusammen

    Habe bei mir noch einen Ventus W132 herum liegen den ich gerne für die Integration von Windstärke und Richtung im ioBroker nutzen möchte. Anstatt die Daten per 433Mhz zu senden würde ich hier jedoch gerne ein Wemos D1 Mini nutzen und die Daten mittels MQTT an ioBroker schicken. Folgende Überlegung habe ich hierzu,

    Austausch der RF Platine im W132 gegen einen Wemos D1 Mini. Würde dann einfach die Datenleitung des W132 auf einen GPIO des Wemos setzen. Weiterhin kann ich GRD und 3,3V des Wemos nutzen.

    Im Internet habe ich versucht herauszufinden wie ich die RAW Daten des W132 auslesen kann. Gibt es hierzu einen Sketch den ich auf mein Wemos flaschen kann der mir dann im Serial Monitor die Daten des W132 anzeigt?

    Da ich bisher nur sehr wenig Erfahrung mit Programmieren habe würde ich auch gerne hier eure Unterstützung nutzen. Als Dank würde ich dann eine Anleitung wie man die Daten des W132 mittels des Wemos und MQTT im ioBroker nutzen kann.

    Sobald ich die RAW Daten habe würde ich diese mit der Beschreibung des Datenprotokolls des W132 vergleichen und gerne zusammen mit euch den Sketch erstellen.

    Danke und Grüße!

    GlasfaserG 1 Antwort Letzte Antwort
    0
    • C claus1993

      Hallo Zusammen

      Habe bei mir noch einen Ventus W132 herum liegen den ich gerne für die Integration von Windstärke und Richtung im ioBroker nutzen möchte. Anstatt die Daten per 433Mhz zu senden würde ich hier jedoch gerne ein Wemos D1 Mini nutzen und die Daten mittels MQTT an ioBroker schicken. Folgende Überlegung habe ich hierzu,

      Austausch der RF Platine im W132 gegen einen Wemos D1 Mini. Würde dann einfach die Datenleitung des W132 auf einen GPIO des Wemos setzen. Weiterhin kann ich GRD und 3,3V des Wemos nutzen.

      Im Internet habe ich versucht herauszufinden wie ich die RAW Daten des W132 auslesen kann. Gibt es hierzu einen Sketch den ich auf mein Wemos flaschen kann der mir dann im Serial Monitor die Daten des W132 anzeigt?

      Da ich bisher nur sehr wenig Erfahrung mit Programmieren habe würde ich auch gerne hier eure Unterstützung nutzen. Als Dank würde ich dann eine Anleitung wie man die Daten des W132 mittels des Wemos und MQTT im ioBroker nutzen kann.

      Sobald ich die RAW Daten habe würde ich diese mit der Beschreibung des Datenprotokolls des W132 vergleichen und gerne zusammen mit euch den Sketch erstellen.

      Danke und Grüße!

      GlasfaserG Online
      GlasfaserG Online
      Glasfaser
      schrieb am zuletzt editiert von
      #2

      @claus1993

      Klingt gut .

      Kennst Du das schon : Link Text

      Synology 918+ 16GB - ioBroker in Docker v9 , VISO auf Trekstor Primebook C13 13,3" , Hikvision Domkameras mit Surveillance Station .. CCU RaspberryMatic in Synology VM .. Zigbee CC2538+CC2592 .. Sonoff .. KNX .. Modbus ..

      1 Antwort Letzte Antwort
      0
      • C Offline
        C Offline
        claus1993
        schrieb am zuletzt editiert von
        #3

        @Glasfaser
        von der Seite haben ich die Leitungen gefunden die ich abgreifen muss. Was ich dort jedoch nicht finden kann sind die RAW Daten des W132 oder einen Code wo ich das von mir benötigte herausziehen kann.

        Danke!

        GlasfaserG 1 Antwort Letzte Antwort
        0
        • C claus1993

          @Glasfaser
          von der Seite haben ich die Leitungen gefunden die ich abgreifen muss. Was ich dort jedoch nicht finden kann sind die RAW Daten des W132 oder einen Code wo ich das von mir benötigte herausziehen kann.

          Danke!

          GlasfaserG Online
          GlasfaserG Online
          Glasfaser
          schrieb am zuletzt editiert von Glasfaser
          #4

          Hast Du das auch gelesen ….

          z.JPG

          Hast du mal Kontakt mit Ihm aufgenommen , um diese Frage an Ihn zu stellen !?

          Schau mal hier , wäre das nicht interessant : Link Text

          Synology 918+ 16GB - ioBroker in Docker v9 , VISO auf Trekstor Primebook C13 13,3" , Hikvision Domkameras mit Surveillance Station .. CCU RaspberryMatic in Synology VM .. Zigbee CC2538+CC2592 .. Sonoff .. KNX .. Modbus ..

          1 Antwort Letzte Antwort
          0
          • C Offline
            C Offline
            claus1993
            schrieb am zuletzt editiert von
            #5

            Verständlicherweise möchte der Ersteller vom Weatherman, aufgrund der investierten Zeit, nicht unterstützen.

            Habe jetzt im I-Net einen Code gefunden um die Daten im Serial Monitor anzuzeigen;

            // Import required libraries
            #include <ESP8266WiFi.h>
            
            void setup(void)
            {  
            // Start Serial (to display results on the Serial monitor)
            Serial.begin(115200);
            
            // Set GPIO 5 as input
            pinMode(5, INPUT);}
            void loop() {
            
            // Read GPIO 5 and print it on Serial port
            Serial.print("State of GPIO 5: ");
            Serial.println(digitalRead(5));
            
            // Wait 1 second
              delay(1000);
            }
            
            1 Antwort Letzte Antwort
            0
            • M Offline
              M Offline
              mwyraz
              schrieb am zuletzt editiert von
              #6

              Hi,
              ich bin gerade dabei, einen W132 per ESP8266 an MQTT anzubinden. 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.

              Grüße,
              Michael

              GlasfaserG C 2 Antworten Letzte Antwort
              1
              • M mwyraz

                Hi,
                ich bin gerade dabei, einen W132 per ESP8266 an MQTT anzubinden. 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.

                Grüße,
                Michael

                GlasfaserG Online
                GlasfaserG Online
                Glasfaser
                schrieb am zuletzt editiert von Glasfaser
                #7

                @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:

                Synology 918+ 16GB - ioBroker in Docker v9 , VISO auf Trekstor Primebook C13 13,3" , Hikvision Domkameras mit Surveillance Station .. CCU RaspberryMatic in Synology VM .. Zigbee CC2538+CC2592 .. Sonoff .. KNX .. Modbus ..

                1 Antwort Letzte Antwort
                0
                • M Offline
                  M Offline
                  mwyraz
                  schrieb am zuletzt editiert von mwyraz
                  #8

                  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 Antwort Letzte Antwort
                  0
                  • M mwyraz

                    Hi,
                    ich bin gerade dabei, einen W132 per ESP8266 an MQTT anzubinden. 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.

                    Grüße,
                    Michael

                    C Offline
                    C Offline
                    claus1993
                    schrieb am zuletzt editiert von
                    #9

                    @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 Antwort Letzte Antwort
                    0
                    • C Offline
                      C Offline
                      claus1993
                      schrieb am zuletzt editiert von
                      #10

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

                        @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 Antwort Letzte Antwort
                        0
                        • M Offline
                          M Offline
                          mwyraz
                          schrieb am zuletzt editiert von
                          #12

                          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 Antworten Letzte Antwort
                          0
                          • M mwyraz

                            @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 Offline
                            C Offline
                            claus1993
                            schrieb am zuletzt editiert von
                            #13

                            @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 Antwort Letzte Antwort
                            0
                            • M mwyraz

                              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 Offline
                              C Offline
                              claus1993
                              schrieb am zuletzt editiert von
                              #14

                              @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 Antwort Letzte Antwort
                              0
                              • M Offline
                                M Offline
                                mwyraz
                                schrieb am zuletzt editiert von mwyraz
                                #15

                                @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 Antwort Letzte Antwort
                                0
                                • M 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 Offline
                                  C Offline
                                  claus1993
                                  schrieb am zuletzt editiert von
                                  #16

                                  @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 Antwort Letzte Antwort
                                  0
                                  • C Offline
                                    C Offline
                                    claus1993
                                    schrieb am zuletzt editiert von claus1993
                                    #17

                                    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 Antwort Letzte Antwort
                                    0
                                    • C Offline
                                      C Offline
                                      claus1993
                                      schrieb am zuletzt editiert von
                                      #18

                                      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.

                                      :blush: :+1:

                                      W 1 Antwort Letzte Antwort
                                      0
                                      • M Offline
                                        M Offline
                                        mwyraz
                                        schrieb am zuletzt editiert von mwyraz
                                        #19

                                        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 Antwort Letzte Antwort
                                        1
                                        • F Offline
                                          F Offline
                                          feli1
                                          schrieb am zuletzt editiert von feli1
                                          #20

                                          ...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 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

                                          694

                                          Online

                                          32.5k

                                          Benutzer

                                          81.8k

                                          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