Anfänger benötigt Hilfe beim Lauflicht

Klar gerne, ist noch nicht ganz fertig aber es wird :slight_smile:

#include <Arduino.h>
#include <ESP8266WiFi.h>             // ESP 8266
#include <PubSubClient.h>            //MQTT 
#include "Servo.h"                   //Sevosteuerung
#include <Adafruit_NeoPixel.h>       //WS8212 LED'S


#define PIN (D2)
#define NUMP 10


// Funktionen
WiFiClient espClient;
PubSubClient client(espClient);
Adafruit_NeoPixel strip(NUMP, PIN, NEO_GRB + NEO_KHZ800);

// Variablen
String newHostname = "GarageRobbi_1OG";
const char* ssid = "****";
const char* password = "*****";
const char* mqtt_server = "192.168.50.10";
const int mqtt_port = 1884;
const char* clientId = "Garage Robbi 1.OG";
const char* mqtt_user = "*****";
const char* mqtt_pwd = "****";
char msg[50];
Servo Klappe;
bool blink1, dauer1 ;
int pause=100;
int i1=0;
int mode, rt, gn, bl, bri;





// Verbindung mit WLan herstellen
void wifi_setup() {
 WiFi.hostname(newHostname.c_str());
 Serial.println();
 WiFi.begin(ssid, password);
 Serial.print("Verbinde mit WLan");
 while (WiFi.status() != WL_CONNECTED)
 {
   delay(500);
   Serial.print(".");
 }
 Serial.println();
 Serial.print("Connected, IP address: ");
 Serial.print(WiFi.localIP());
}

/// MQTT Client
void MQTTCallback(char* topic, byte* payload, unsigned int length) {
String Command = "";
      Serial.print("Received message [");
      Serial.print(topic);
      Serial.print("] ");
      char msg[length+1];
  for (int i = 0; i < length; i++) {
        Serial.print((char)payload[i]);
        msg[i] = (char)payload[i];
        Command = Command + (char)payload[i];}
        int angle = Command.toInt();
        Serial.println();

if(strcmp(topic, "Garage Robbi 1OG/Klappe") == 0){  // Eingehend Motor
  Klappe.write(angle);
}

if(strcmp(topic, "Garage Robbi 1OG/LED") == 0){ // Eingehend LED
  i1=0;
  sscanf(msg, "%d:%d:%d:%d:%d:%d", &mode, &rt, &gn, &bl, &bri);
    if (mode==0){  //Aus
  blink1 = false ;
  dauer1 = false ;
  strip.clear();
  strip.show();
  }
    else if (mode==1) { //Lauflicht Strip 1
    blink1 = true ;
    dauer1 = false ;
  }
    else if (mode==2) { //Dauer Strip 1
    dauer1 = true ;
    blink1 = false ;
  }
    else   {            // Alles Andere --> Aus
  blink1 = false ;
  dauer1 = false ;
  strip.clear();
  strip.show();
  }
}
if(strcmp(topic, "Garage Robbi 1OG/string") == 0){
  
  /*
  
  Serial.print(F("n="));
  Serial.println(n);
  Serial.print(F("mode="));
  Serial.print(mode);
  Serial.print(F(", rt="));
  Serial.println(rt);
  Serial.print(F("bl="));
  Serial.print(bl);
  Serial.print(F(", gn="));
  Serial.println(gn);
  Serial.print(F("bri="));
  Serial.print(bri);
  */
}

}

void reconnect() {
  while (!client.connected()) {
    Serial.print("Attempting MQTT connection...");

    if (client.connect(clientId, mqtt_user, mqtt_pwd)) {
      Serial.println("connected");
      client.subscribe("Garage Robbi 1OG/Klappe");
      client.subscribe("Garage Robbi 1OG/LED");
      client.subscribe("Garage Robbi 1OG/string");

    }
    else
    {
      Serial.print("failed, rc=");
      Serial.print(client.state());
      Serial.println(" try again in 5 seconds");
      // Wait 5 seconds before retrying
      delay(5000);
    }
  }
}

void LED(){   // LEDS ansteuern
if (blink1) {
  strip.setBrightness(bri);
  strip.setPixelColor(i1, strip.Color(rt,gn,bl)); // Pixel leuchtet in der Farbe Grün
  strip.setPixelColor(i1-1, strip.Color(0,0,0)); // Der vorherige Pixel wird abgeschaltet
  strip.show(); // LED's Ansteuern
  Serial.print(i1);
  if (i1 == 0) {// wenn i1 0 Letzte (NUMP) ausschalten
    Serial.print(F("NumPixel: "));
    Serial.println(NUMP);
    strip.setPixelColor(strip.numPixels()-1, strip.Color(0, 0, 0));
  strip.show(); // LED's Ansteuern
  Serial.print(i1);
  Serial.print("10 aus");}
  delay (pause);
  i1=i1+1; // "i1" hochzählen
  if (i1==NUMP){ // wenn Ende dann i1 auf 0
  i1=0; 
  Serial.print(i1);
  Serial.print("i1 auf null");
  }  
}
if (dauer1){
   for(int i=0; i<NUMP; i++) { // For each pixel...
    strip.setBrightness(bri);
    strip.setPixelColor(i, strip.Color(rt, gn, bl));
    strip.show();   // Send the updated pixel colors to the hardware.
    }
  }
}

void setup() {          // Initialisierung beim start
  Serial.begin(9600);   // Serielle baudrate
  Klappe.attach(D1);
  strip.begin();           // INITIALIZE NeoPixel strip object (REQUIRED)
  strip.show();            // Turn OFF all pixels ASAP
  strip.setBrightness(50); // Set BRIGHTNESS to about 1/5 (max = 255)
  delay(500);
  wifi_setup() ;         // WLAN verbinden
  client.setServer(mqtt_server, mqtt_port);
  reconnect();
  client.setCallback(MQTTCallback);
}

// put your main code here, to run repeatedly:
void loop() {
//WLan überwachen / neu verbinden
   client.loop();
   LED();
if (WiFi.status() != WL_CONNECTED) {
    delay(3000);
    wifi_setup();
  }
if (!client.connected() && WiFi.status() == WL_CONNECTED){
  delay(3000);
  reconnect();
}
  
}

Habe dir mal alle rein gepackt was ich bis jetzt habe, hoffe du schlägst als Profi jetzt nicht die Hände über dem Kopf zusammen :rofl: :rofl: Die ganzen Prints waren nur zum testen, kommen am schluss noch raus...

1 Like