somit der Verbrauch gezählt werden. Dazu benötigt man ein Arduino Board z.B. NodeMCU und einen Reed-Magnet.
Zusammen mit den Wago-Klemmen und Kabeln kann man das Ganze wie abgebildet zusammenbasteln. Die beiden Kabel werden an D2 und GND angeschlossen. Ein zusätzlicher Widerstand wird nicht benötigt. Hier der entsprechende Code:
#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);
}