Arduino Reed Gaszähler

Mittels eines Reed Kontaktes kann z.B. bei einer passenden Gasuhr, die Umdrehung erfasst werden und somit der Verbrauch gezählt werden. Benötigt wird dafür ein Arduino Board z.B. ein NodeMCU und dazu ein Reed-Magnet.
Zusammen mit den Wago-Klemmen und Kabeln kann man das Ganze wie abgebildet zusammenbasteln. Angeschlossen sind die beiden Kabel am Anschluss D2 und GND. Ein extra Widerstand ist nicht notwendig.
Der passende Code dazu:

#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <PubSubClient.h>

const char* ssid = "WLANSSID";
const char* password = "TOLLESPASSWORT";

const char* mqttServer = "IP-Adresse";
const int mqttPort = PORT;
const char* mqttUser = "MQTTUSER";
const char* mqttPassword = "MQTTPASSWORT";

int connected_wlan = 0;
int connected_mqtt = 0;
int counttry_mqtt = 0;

WiFiClient espClient;
PubSubClient client(espClient);

const int REED_PIN = D2;

void setup() {
  Serial.begin(9600);//sets the baud rate

  int counttry_wlan = 0;
  int counttry_mqtt = 0;
  
  WiFi.begin(ssid, password);
 
  while (WiFi.status() != WL_CONNECTED && counttry_wlan < 4) {
    delay(1000);
    Serial.println("Connecting to WiFi..");
    counttry_wlan++;
  }
  
  if(WiFi.status() == WL_CONNECTED){
      Serial.println("connected_wlan to the WiFi network");

      connected_wlan = 1;
 
  }else{
     Serial.println("go to sleep 2");
  }
  
  client.setServer(mqttServer, mqttPort);

  while (!client.connected() && connected_mqtt < 4) {
    Serial.println("Connecting to MQTT...");

    if (client.connect("ESP8266Client", mqttUser, mqttPassword )) {
 
      Serial.println("connected_mqtt");
      connected_mqtt = 1;
 
    } else {
 
      Serial.print("failed with state ");
      Serial.print(client.state());
      counttry_mqtt++;
      delay(2000);     
    }
  }

  pinMode(REED_PIN, INPUT_PULLUP);
}

void loop()
{  
 
  if (digitalRead(REED_PIN) == LOW) {

    if(client.state() != 0){
      client.connect("ESP8266Client", mqttUser, mqttPassword );
    }
    client.publish("/wirtschaftsraum/gas", "1");
  }
  delay(200);
}