#include #include const char* SSID = "smartroom"; const char* PSK = "smarthome"; const char* MQTT_BROKER = "192.168.4.1"; WiFiClient espClient; PubSubClient client(espClient); // defines pins numbers const int trigPin = D4; //D4 const int echoPin = D3; //D3 long duration; int distance; int distance_alt=0; char msg[50]; int value = 0; long lastMsg = 0; void setup() { pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output pinMode(echoPin, INPUT); // Sets the echoPin as an Input Serial.begin(115200); setup_wifi(); client.setServer(MQTT_BROKER, 1883); } void setup_wifi() { delay(10); Serial.println(); Serial.print("Connecting to "); Serial.println(SSID); WiFi.mode(WIFI_STA); WiFi.begin(SSID, PSK); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); } void reconnect() { while (!client.connected()) { Serial.print("Reconnecting..."); if (!client.connect("ESP8266Client")) { Serial.print("failed, rc="); Serial.print(client.state()); Serial.println(" retrying in 5 seconds"); delay(5000); } } } void loop() { if (!client.connected()) { reconnect(); } client.loop(); // Clears the trigPin digitalWrite(trigPin, LOW); delayMicroseconds(2); // Sets the trigPin on HIGH state for 10 micro seconds digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); // Reads the echoPin, returns the sound wave travel time in microseconds duration = pulseIn(echoPin, HIGH); // Calculating the distance distance = duration * 0.034 / 2; // Prints the distance on the Serial Monitor if((distance!=(distance_alt-1))&&(distance!=(distance_alt))&&(distance!=(distance_alt+1))){//+-1 um störungen herauszufiltern snprintf (msg,50,"%d", distance); Serial.print("Publish Motion: "); Serial.println(msg); client.publish("/home/data", msg); delay(500); } distance_alt=distance; }