Klar gerne, ist noch nicht ganz fertig aber es wird ![]()
#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
Die ganzen Prints waren nur zum testen, kommen am schluss noch raus...