Hier ein abgeänderter Belkin Wemos - Ardunio Code von Seite1 um das SonOff Modul mit Alexa ganz ohne einen Server oder MQTT schalten zu lassen.
Die serielle Ausgabe kann ich bei mir nicht sehen, warum weiß ich nicht, flashen geht ja, ist auch egal, soll ja ohne eine Servergeschichte laufen.
Gruß Helmut
Nachtrag: Wo die serielle Schnittstelle ist hat Michael Dworkin gut beschrieben, überhaupt SUPERTyp !
PHP-Code:
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include <WiFiUdp.h>
#include <functional>
#include "switch.h"
#include "UpnpBroadcastResponder.h"
#include "CallbackFunction.h"
// prototypes
boolean connectWifi();
//on/off callbacks
//- Stehlampe
void StehlampeLightsOn();
void StehlampeLightsOff();
// Change this before you flash
const char* ssid = "SSID";
const char* password = "password";
// Wemos blaue LED ist auf GPIO 2
// im SonOff ist LED auf GPIO13
// im SonOff ist Relais auf GPIO 12
// im SonOff ist LED auf GPIO 0
const int ledPin = 13;
const int Relais = 12;
const int Taster = 0;
boolean wifiConnected = false;
boolean val = 0; // SchaltZustand
UpnpBroadcastResponder upnpBroadcastResponder;
Switch *Stehlampe = NULL;
void setup()
{
Serial.begin(115200);
// initialize the digital pin as an output.
pinMode(ledPin, OUTPUT);
pinMode(Relais, OUTPUT);
pinMode(Taster, INPUT_PULLUP);
// Initialise wifi connection
wifiConnected = connectWifi();
if(wifiConnected){
upnpBroadcastResponder.beginUdpMulticast();
// Define your switches here. Max 14
// Format: Alexa invocation name, local port no, on callback, off callback
Stehlampe = new Switch("Stehlampe", 81, StehlampeLightsOn, StehlampeLightsOff);
Serial.println("Adding switches upnp broadcast responder");
upnpBroadcastResponder.addDevice(*Stehlampe);
}
}
void loop()
// --------------------------------- Taster ----------------------------------------------------------
{
if (!digitalRead(Taster)) // Wenn Taster betätigt
{
delay(50); // Entprellung
if (!digitalRead(Taster)) //immer noch betätigt? Noch mal prüfen
{
val = !val; // Umschalten
digitalWrite(Relais, val);
digitalWrite(ledPin, !val);
while (!digitalRead(Taster)); // Warten bis der Taster losgelassen wird
}
}
// ---------------------------------WLAN-------------------------------------------------------
if(wifiConnected){
upnpBroadcastResponder.serverLoop();
Stehlampe->serverLoop();
}
}
void StehlampeLightsOn() {
Serial.print("Stehlampe geht EIN ...");
digitalWrite(ledPin, LOW);
digitalWrite(Relais, HIGH);
}
void StehlampeLightsOff() {
Serial.print("Stehlampe geht AUS ...");
digitalWrite(ledPin, HIGH);
digitalWrite(Relais, LOW);
}
// connect to wifi – returns true if successful or false if not
boolean connectWifi(){
boolean state = true;
int i = 0;
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
Serial.println("");
Serial.println("Connecting to WiFi");
// Wait for connection
Serial.print("Connecting ...");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
if (i > 10){
state = false;
break;
}
i++;
}
if (state){
Serial.println("");
Serial.print("Connected to ");
Serial.println(ssid);
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
}
else {
Serial.println("");
Serial.println("Connection failed.");
}
return state;
}