From bbec6e6f4998cba4909ca6adc1a68ae2ad8fbaa6 Mon Sep 17 00:00:00 2001 From: Stefan Date: Sun, 15 May 2022 16:08:15 +0200 Subject: [PATCH] Wifi working, mqtt still to do --- Abstandssensor.ino | 73 ++++++++++++++++++++++++++++++++-------------- 1 file changed, 51 insertions(+), 22 deletions(-) diff --git a/Abstandssensor.ino b/Abstandssensor.ino index b2a41d7..ead66f2 100644 --- a/Abstandssensor.ino +++ b/Abstandssensor.ino @@ -1,4 +1,4 @@ -#include +#include #include #include @@ -20,7 +20,7 @@ MQTTPubSubClient mqtt; // Set Data pin for LED ring (we use GPIO3, which is also RX of the serial line) #define DATA_PIN 3 const uint16_t PixelCount = 8; -NeoPixelBus strip(PixelCount, DATA_PIN); +NeoPixelBus strip(PixelCount, DATA_PIN); long duration; // here we measure the time needed by the ultrasonic pulse float distance; // the calculated distance @@ -38,30 +38,61 @@ RgbColor blue(0, 0, colorSaturation); RgbColor white(colorSaturation); RgbColor black(0); + + +void callback(char* topic, byte* payload, unsigned int length) { + Serial.print("Message arrived ["); + Serial.print(topic); + Serial.print("] "); + for (int i = 0; i < length; i++) { + Serial.print((char)payload[i]); + } + Serial.println(); + + // Switch on the LED if an 1 was received as first character + if ((char)payload[0] == '1') { + digitalWrite(BUILTIN_LED, LOW); // Turn the LED on (Note that LOW is the voltage level + // but actually the LED is on; this is because + // it is acive low on the ESP-01) + } else { + digitalWrite(BUILTIN_LED, HIGH); // Turn the LED off by making the voltage HIGH + } +} + void setup() { + // Important to first initilizate Serial before the strip as + // we are useing the RX PIN to connect the strip + Serial.begin(115200); // Baudrate: 115200 - // start your network - WiFi.begin(wifi_ssid, wifi_password); - // connect to host - client.connect(mqtt_server, 1883); - // initialize mqtt client - mqtt.begin(client); - // connect to mqtt broker - mqtt.connect("arduino", "public", "public"); + // start your network + WiFi.mode(WIFI_STA); + WiFi.begin(wifi_ssid, wifi_password); + + while (WiFi.status() != WL_CONNECTED) { + delay(500); + Serial.print("."); + } - // subscribe topic and callback which is called when /hello has come - mqtt.subscribe("/hello", [](const String& payload, const size_t size) { - Serial.print("/hello "); - Serial.println(payload); - }); + randomSeed(micros()); + + Serial.println(""); Serial.println("WiFi connected"); + Serial.println("IP address: "); Serial.println(WiFi.localIP()); + + // connect to host + client.connect(mqtt_server, 1883); + // initialize mqtt client + mqtt.begin(client); + // connect to mqtt broker + mqtt.connect("arduino", "public", "public"); + + // subscribe topic and callback which is called when /hello has come + mqtt.subscribe(mqtt_topic, [](const String& payload, const size_t size) { + Serial.print(mqtt_topic); Serial.println(payload); + }); // Setup the ultrasonic sensor PIN pinMode(TRIG, OUTPUT); // TRIG-Pin: Output pinMode(ECHO, INPUT); // ECHO-Pin: Input - - // Important to first initilizate Serial before the strip as - // we are useing the RX PIN to connect the strip - Serial.begin(9600); // Baudrate: 115200 // this resets all the neopixels to an off state strip.Begin(); @@ -121,11 +152,9 @@ void loop() { else {setRed(); } // Anzeige der Entfernung im seriellen Monitor - #ifdef DEBUG Serial.println("Poti: " + String(poti)); Serial.println("Entfernung: " + String(distance) + "cm"); Serial.println("Percent: " + String(percent) + " of goal value"); - #endif - delay(100); + delay(1000); }