Hi
Code aus #1
#include <Arduino.h>
#ifdef ESP32
#include <WiFi.h>
#else
#include <ESP8266WiFi.h>
#endif
#include "fauxmoESP.h"
#include "credentials.sample.h"
#define SERIAL_BAUDRATE 115200
#define REDPIN 14
#define GREENPIN 13
#define BLUEPIN 12
int r, g, b;
fauxmoESP fauxmo;
// -----------------------------------------------------------------------------
// Wifi
// -----------------------------------------------------------------------------
void wifiSetup() {
// Set WIFI module to STA mode
WiFi.mode(WIFI_STA);
// Connect
Serial.printf("[WIFI] Connecting to %s ", WIFI_SSID);
WiFi.begin(WIFI_SSID, WIFI_PASS);
// Wait
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(100);
}
Serial.println();
// Connected!
Serial.printf("[WIFI] STATION Mode, SSID: %s, IP address: %s\n", WiFi.SSID().c_str(), WiFi.localIP().toString().c_str());
}
void setup() {
// Init serial port and clean garbage
Serial.begin(SERIAL_BAUDRATE);
Serial.println();
Serial.println();
//LED
pinMode(REDPIN, OUTPUT);
pinMode(GREENPIN, OUTPUT);
pinMode(BLUEPIN, OUTPUT);
analogWriteFreq(500);
analogWriteRange(100);
// Wifi
wifiSetup();
// LED
// You can enable or disable the library at any moment
// Disabling it will prevent the devices from being discovered and switched
fauxmo.enable(true);
// Add virtual devices
fauxmo.addDevice("rot");
fauxmo.addDevice("blau");
fauxmo.addDevice("grün");
// fauxmoESP 2.0.0 has changed the callback signature to add the device_id,
// this way it's easier to match devices to action without having to compare strings.
fauxmo.onSetState([](unsigned char device_id, const char * device_name, bool state) {
Serial.printf("[MAIN] Device #%d (%s) state: %s\n", device_id, device_name, state ? "ON" : "OFF");
if (state) {
if(device_id == 0){
digitalWrite(REDPIN, 100);
}
if(device_id == 1){
digitalWrite(GREENPIN, 100);
}
if(device_id == 2){
digitalWrite(BLUEPIN, 100);
}
if(device_id == 3){
digitalWrite(REDPIN, 100);
digitalWrite(GREENPIN, 100);
digitalWrite(BLUEPIN, 100);
}
} else {
digitalWrite(REDPIN, 0);
digitalWrite(GREENPIN, 0);
digitalWrite(BLUEPIN, 0);
if(device_id == 3){
digitalWrite(REDPIN, 0);
digitalWrite(GREENPIN, 0);
digitalWrite(BLUEPIN, 0);
}
}
});
// Callback to retrieve current state (for GetBinaryState queries)
/* fauxmo.onGetState([](unsigned char device_id, const char * device_name) {
}); */
}
void loop() {
// Since fauxmoESP 2.0 the library uses the "compatibility" mode by
// default, this means that it uses WiFiUdp class instead of AsyncUDP.
// The later requires the Arduino Core for ESP8266 staging version
// whilst the former works fine with current stable 2.3.0 version.
// But, since it's not "async" anymore we have to manually poll for UDP
// packets
fauxmo.handle();
static unsigned long last = millis();
if (millis() - last > 5000) {
last = millis();
Serial.printf("[MAIN] Free heap: %d bytes\n", ESP.getFreeHeap());
}
}
Code aus #6
#include <ESP8266WiFi.h>
#include "WemoSwitch.h"
#include "WemoManager.h"
#include "CallbackFunction.h"
// prototypes
boolean connectWifi();
//on/off callbacks
void RotOn();
void RotOff();
void GruenOn();
void GruenOff();
void BlauOn();
void BlauOff();
//------- Replace the following! ------
char ssid[] = ""; // your network SSID (name)
char password[] = ""; // your network key
WemoManager wemoManager;
WemoSwitch *Rot = NULL;
WemoSwitch *Gruen = NULL;
WemoSwitch *Blau = NULL;
const int ledPin = BUILTIN_LED;
void setup()
{
Serial.begin(115200);
// Set WiFi to station mode and disconnect from an AP if it was Previously
// connected
WiFi.mode(WIFI_STA);
WiFi.disconnect();
delay(100);
// Attempt to connect to Wifi network:
Serial.print("Connecting Wifi: ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(500);
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
IPAddress ip = WiFi.localIP();
Serial.println(ip);
wemoManager.begin();
// Format: Alexa invocation name, local port no, on callback, off callback
Rot = new WemoSwitch("LED Rot", 80, RotOn, RotOff);
Gruen = new WemoSwitch("LED Gruen", 81, GruenOn, GruenOff);
Blau = new WemoSwitch("LED Blau", 82, BlauOn, BlauOff);
wemoManager.addDevice(*Rot);
wemoManager.addDevice(*Gruen);
wemoManager.addDevice(*Blau);
pinMode(ledPin, OUTPUT); // initialize digital ledPin as an output.
delay(10);
digitalWrite(ledPin, HIGH); // Wemos BUILTIN_LED is active Low, so high is off
}
void loop()
{
wemoManager.serverLoop();
}
void RotOn() {
Serial.print("Switch 1 turn on ...");
digitalWrite(ledPin, LOW);
delay(100);
digitalWrite(ledPin, HIGH);
}
void RotOff() {
Serial.print("Switch 1 turn off ...");
digitalWrite(ledPin, HIGH);
}
void GruenOn() {
Serial.print("Switch 2 turn on ...");
digitalWrite(ledPin, LOW);
delay(100);
digitalWrite(ledPin, HIGH);
delay(100);
digitalWrite(ledPin, LOW);
delay(100);
digitalWrite(ledPin, HIGH);
}
void GruenOff() {
Serial.print("Switch 2 turn off ...");
digitalWrite(ledPin, HIGH);
}
void BlauOn() {
Serial.print("Switch 3 turn on ...");
digitalWrite(ledPin, LOW);
delay(100);
digitalWrite(ledPin, HIGH);
delay(100);
digitalWrite(ledPin, LOW);
delay(100);
digitalWrite(ledPin, HIGH);
delay(100);
digitalWrite(ledPin, LOW);
delay(100);
digitalWrite(ledPin, HIGH);
}
void BlauOff() {
Serial.print("Switch 3 turn off ...");
digitalWrite(ledPin, HIGH);
}
... done
(passen sogar Beide in Einen Post)
Hintergrund: In 6 Monaten sind die Codes auf PasteBin gelöscht und hier kann man nicht mehr verfolgen, was sich wie entwickelt hat oder wo der Fehler war.