Sonoff mit neuer Firmware flashen (incl. Integration in IP Symcon)

Wie ich hier bereits schrieb, habe ich mir testweise einige Sonoff-Module von Itead zugelegt. Ziel ist die Integration in IP Symcon. Hier meine Erklärung wie man auf das Modul eine neue (freie) Software aufspielt und es optional dann in IP Symcon integrieren kann. Der erste Teil ist unabhängig von jeder Software und auch für andere Programme und Steuerungen gültig.

EDIT: Hier beschreibe ich in einem neuen Artikel die Nutzung von Sonoff-Modulen in der kostenfreien Smarthome-Software ioBroker

Zuerst muss man die Module für das aufspielen der neuen Firmware vorbereiten. Hierzu müssen diese geöffnet werden (natürlich dürfen diese dabei NICHT an Netzspannung angeschossen sein! Alles hier erklärte wird OHNE Netzspannung durchgeführt! Es wird explizit darauf hingewiesen, wann das Modul wieder mit Netzspannung zu versorgen ist!). Das Gehäuse lässt sich an der Unterseite sehr leicht aufhebeln und dann komplett abnehmen.

Als nächstes muss man an die ungefähr in der Mitte der Platine befindlichen fünf Lötpunkte eine Steckerleiste löten (siehe Bild). Es werden zwar nur die ersten vier Anschlüsse benötigt, aber wer weiß was die Zukunft bringt (der fünfte ist ein GPIO, den mal evtl. später verwenden möchte)…

An diesen neuen Anschluss des Sonoff wird nun ein USB-FTDI-Adapter angeschlossen (Achtung: Das Modell muss 3,3V-Betrieb unterstützen! Mit 5 Volt wird der ESP8266 zerstört, auch prüfen ob der Stecker bei Dual-Adaptern richtig auf 3,3 Volt gesteckt ist!). Hierzu werden Steckbrücken-Kabel (Jumper wires) verwendet und die Anschlüsse beachtet. Es müssen jeweils plus und plus sowie minus und minus verbunden werden. RX und TX müssen jeweils vertauscht werden. Sollte eine Kommunikation beim flashen der Firmware nicht möglich sein, einfach mal an einem Ende RX und TX vertauschen. Dann ist das meist der Fehler!

Nun wird die Arduino IDE-Software benötigt. Wer diese noch nicht hat, muss sie noch auf dem Rechner installieren. Als nächsten Schritt legen wir im dortigen Programm-Verzeichnis (meist C:\Programme (x86)\Arduino) einen leeren Ordner mit dem Namen „portable“ an.

Um der Arduino-Software nun den ESP8266-Chip beizubringen (der in den Sonoff-Modulen verwendet wird) müssen wir die Software starten und unter Datei -> Voreinstellungen -> Zusätzliche Boardverwalter-URLs folgende Zeile hinzufügen:

http://arduino.esp8266.com/stable/package_esp8266com_index.json

Danach auf OK klicken.

Unter „Werkzeuge“ -> „Board“ -> „Boardverwalter“ geben wir nun „ESP8266“ in das Suchfeld ein und installieren die gefundene Erweiterung.

Nun installieren wir über „Sketch“ -> „Bibliothek einbinden“ -> „Bibliotheken verwalten“ folgende Bibliotheken:

  • PubSubClient (nur notwendig, wenn später MQTT genutzt werden soll!)
  • ArduinoJson

Nun öffnen wir folgenden Ordner (oder den bei Euch entsprechenden):

C:\Programme (x86)\Arduino\portable\sketchbook\libraries\PubSubClient\src

Dort öffnen wir mit einem Editor (ich empfehle Notepad ++, der von Windows ist nicht so optimal) die Datei „PubSubClient.h“ und nehmen folgende Änderung darin vor (einfach entsprechende Zeile suchen und Wert abändern):

#define MQTT_MAX_PACKET_SIZE 512

Nun laden wir die neue Firmware für das Sonoff-Modul herunter. Hierzu gehen wir auf den Link und klicken oben über der bunten Linie auf „Releases“ und laden dann die „Source code (zip)“. Diese wird auf dem Computer an einer wieder auffindbaren Stelle gespeichert und entpackt.

In diesem entpackten Ordner befindet sich ein Unterordner „sonoff“. Die dort befindliche „sonoff.ino“ öffnen wir nun in der Arduino-Software. In den Tabs am oberen Bildschirmrand wechseln wir nun in die „user_config.h“ und ändern folgende Parameter ab (einfach entsprechende Zeile suchen und Werte abändern):

#define STA_SSID1           "<<SSID>>"      // [Ssid1] Wifi SSID
#define STA_PASS1           "<<Passwort>>"  // [Password1] Wifi password

Die entsprechenden Variablen „STA_SSID2“ und „STA_PASS2“ können auch ausgefüllt werden. Das ist ein sekundär zu verwendendes WLAN, falls das erste nicht funktionieren sollte (Fallback).

Für MQTT müssen folgende Zeilen geändert werden (wenn TLS verwendet wird der obere Absatz, sonst der untere Absatz):

#ifdef USE_MQTT_TLS
  #define MQTT_HOST            "<<Server>>"     // [MqttHost]
  #define MQTT_FINGERPRINT     "A5 02 FF 13 99 9F 8B 39 8E F1 83 4F 11 23 65 0B 32 36 FC 07"  // [MqttFingerprint]
  #define MQTT_PORT            20123            // [MqttPort] MQTT TLS port
  #define MQTT_USER            "<<User>>"       // [MqttUser] Mandatory user
  #define MQTT_PASS            "<<Passwort>>"   // [MqttPassword] Mandatory password
#else
  #define MQTT_HOST            "<<Server>>"     // [MqttHost]
  #define MQTT_PORT            1883             // [MqttPort] MQTT port (10123 on CloudMQTT)
  #define MQTT_USER            "<<User>>"       // [MqttUser] Optional user
  #define MQTT_PASS            "<<Passwort>>"   // [MqttPassword] Optional password
#endif

Achtung: Ein MQTT-Server ohne Anmeldung kann nicht verwendet werden, da die Firmware eine Benutzerkennung voraussetzt (macht ja auch Sinn dass nicht jeder weltweit Eure Geräte steuern kann). Die Installation eines eigenen MQTT-Server werde ich hier noch zu späterer Zeit veröffentlichen! In der ersten Phase dieses Howto wird MQTT nicht verwendet!

Ziemlich am Ende der Datei müssen wir nun noch einige Funktionen die wir nicht benötigen deaktivieren, indem wir ihnen ein „//“ voranstellen:

// #define USE_DS18x20
// #define USE_I2C
// #define USE_IR_REMOTE
// #define USE_WS2812
// #define USE_WS2812_DMA

Man könnte die Zeilen natürlich auch ganz raus löschen, dann kann man sie aber später nicht mehr so leicht aktivieren, wenn man die Funktionen doch mal braucht…

Jetzt müssen wir der Arduino-Software noch beibringen, dass sie keinen Arduino sondern einen ESP8266 angeschlossen hat. Hierzu klicken wir auf „Werkzeuge“ -> „Board: “ –> „Generic ESP8266 Module“. Die Einstellungen in den Feldern darunter müssen entsprechend dem Bild links vorgenommen werden. Wenn man nicht weiß, welcher COM-Port der richtige ist, kann man einfach in der Systemsteuerung im Geräte-Manager schauen. Dort unter „Anschlüsse (COM & LPT)“ erscheint einer mit dem Namen „USB Serial Port (COMx)“. Das ist der richtige. Sollten mehrere USB Serial Ports vorhanden sein einfach den FTDI-Stecker abziehen und schauen welcher verschwindet 😉

Der Code kann jetzt durch klicken des Haken ganz oben links im Programm getestet werden. Wenn dies ohne Fehler abläuft, kann die Firmware auf das Sonoff geflasht werden. Hierzu muss das Modul erst in den Update-Modus versetzt werden. Dazu wird der USB-Stecker abgezogen und die Taste am Modul gedrückt und festgehalten. Nun wieder USB anschließen und erst danach den Taster wieder los lassen. Nun kann oben links in der Arduino-Software der Rechtspfeil angeklickt werden und das Modul wird geflasht. Hier sollte kein Fehler auftauchen. Danach den USB-Stecker wieder abziehen und neu verbinden. Das Modul lädt nun die neue Firmware. Dies dauert nur wenige Sekunden.

Ab sofort sollte das Modul in Eurem WLAN-Router als neues Gerät auftauchen (dieser darf natürlich nicht für unbekannte Geräe gesperrt sein!) und eine IP-Adresse zugewiesen bekommen haben (Ich verwende hierzu auf dem Handy die Android-App „Fing“, die noch einige Funktionen mehr bietet als nur die IP von Geräten zu zeigen. Euer Sonoff erscheint hier als „Espressiv-Gerät“).

Die nun bekannte IP könnt Ihr jetzt im Browser aufrufen um das Modul zu testen. Einfach mal mit der Toggle-Taste ein- und ausschalten. Die LED sollte nun an und aus gehen. Die Taste am Gerät hat die gleiche Funktion und auch wenn man dort drückt muss sich der Status im Web-Frontend verändern. Sollte das alles klappen, funktioniert das Modul fehlerfrei!

Es kann nun das FTDI-Kabel abgezogen werden, die verlöteten Pfostenstecker können natürlich verbleiben. Als nächster Schritt wird das Gehäuse wieder zusammengebaut. Jetzt kann das Modul an seinem Eingang mit Netzspannung versorgt werden (welche natürlich beim montieren abgeschaltet und gegen wieder einschalten gesichert ist!), der Verbraucher wird am Ausgang angeschlossen. Wer keine Ahnung von Netzspannung hat, sollte diese Arbeiten einem Fachmann überlassen (Lebensgefahr!). Nach der Montage der Berührungsschutz-Kappen kann dann die Zuleitung wieder eingeschaltet werden.

Ab sofort kann man in der Software seiner Wahl (Browser, Hausautomations-Software, etc.) folgende Aufrufe tätigen um das Modul ein- und auszuschalten:

http://<<IP des Moduls>>/cm?cmnd=Power On
http://<<IP des Moduls>>/cm?cmnd=Power Off

Ab hier folgt nun die Integration in die Software IP Symcon:

Ich gehe davon aus, dass man das Sonoff-Modul „ordentlich“ integrieren möchte (wie z.B. Homematic-Aktoren). Es geht auch schneller und „schmutziger“, aber ich finde diese Lösung deutlich besser:

Als erstes sucht Ihr Euch im Objektbaum ein Plätzchen, wo Ihr das Gerät anlegen möchtet (bei mir „Testumgebung“). Hierin erstellt Ihr mit einem Rechtsklick eine neue Instanz (Hersteller: (Sonstige), Gerät: Dummy Module). Als Name nehmt Ihr was passendes (hier: „Sonoff 1“). Unterhalb dieser Instanz kommt eine neue Variable vom Typ Boolean. Diese habe ich „Status“ genannt. Wiederum eine Ebene tiefer legt Ihr ein Script an (bei mir: „toggle“). Dieses Script hat folgenden Inhalt:

<?
if(GetValue(49185 /*[Testumgebung\Sonoff 1\Status]*/) == true)
{
    SetValueBoolean(49185 /*[Testumgebung\Sonoff 1\Status]*/, false);
    @$Datei = file_get_contents("http://192.168.1.103/cm?cmnd=Power%20Off", false, NULL, 0,0);
}
else
{
    SetValueBoolean(49185 /*[Testumgebung\Sonoff 1\Status]*/, true);
    @$Datei = file_get_contents("http://192.168.1.103/cm?cmnd=Power%20On", false, NULL, 0,0);
};
?>

ACHTUNG: Das Script gilt natürlich nur für meinen Fall, es müssen folgende Inhalte angepasst werden:

  • 49185 muss durch die ObjektID Eurer eigenen Status-Variable getauscht werden
  • 192.168.1.103 muss durch die IP-Adresse getauscht werden, die bei Euch das Modul durch den Router erhalten hat
  • Die Bemerkungen zu den ObjektID müsst Ihr nicht ändern, das macht IP Symcon von alleine, wenn Ihr das Script ein mal schließt und wieder öffnet

Nun könnt Ihr mit einem Rechtsklick auf das Script im Objektbaum und dem Befehl „Skript ausführen“ bereits testen ob alles funktioniert. Es sollte sich nun mit jeder Ausführung die Status-Variable ändern und die LED an und aus gehen.

Achtung: Sollte Eure funktionierende Konfiguration nach einiger Zeit nicht mehr gehen, kann es sein, dass Euer Router dem Sonoff eine andere IP-Adresse zugewiesen hat. Diese funktioniert dann natürlich im Script nicht mehr. Bitte schaut dann im Handbuch nach welche Einstellungen vorzunehmen sind, dass ein Gerät immer die gleiche Adresse zugewiesen bekommt (zu finden im Abschnitt „DHCP“).

Da „true“ und „false“ natürlich keine schönen Werte für eine Leuchte sind klicken wir nun doppelt auf die Status-Variable und wählen im Feld „Eigenes Profil“ den Wert „~Switch“. Bei „Eigene Aktion“ klicken wir auf „Wählen“ und suchen dort unser Script aus. Dies alles bestätigen wir mit Ok. Jetzt ist im Webfront das Sonoff-Modul „schön integriert“ und benutzbar! Natürlich können im Profil-Manager auch völlig andere Bezeichnungen vorgenommen werden. Ich habe hier z.B. bei mir alles auf „Ein“ und „Aus“ geändert.

Hinweis: Wenn direkt am Modul geschaltet wird, erfolgt keine Rückmeldung an IP Symcon. Diese Funktion wird, ebenso wie die Verwendung von MQTT, in einem weiteren Teil hier auf dem Blog integriert.

42 Kommentare

    • Vielen Dank für den Link! Werde ich mir mal anschauen! Verstehe aber echt nicht, wieso sowas grundlegendes nicht implementiert wird. So super und offen das System auch ist, MQTT muss rein!

      • Sehe ich genauso ! Aber Symcon ruht sich schon lange aus und baut nichts mehr neues ein, egal ob es nur ein Protokoll wie MQTT ist oder neue Hardware 🙁

  1. Hallo!

    Ich bin kurz vor dem verzweifeln!

    Ich habe mir vier Sonoff Basic bestellt und hatte schon versucht ESPEasy aufzuspielen. Mit dem Ergebnis, dass die Geräte nach dem Flashen nicht im WLAN aufgetaucht sind.

    Also habe ich es mit Arduino und dieser Anleitung probiert. Ich habe jeden Schritt brav erledigt… alles lief super… das Flashen war erfolgreich. Leider ist auch hier das Ergebnis, dass die Teile nicht im WLAN auftauchen.

    Was kann schief gelaufen sein. Könnten die Teile defekt sein? Ich bin völlig ratlos 🙁

    Gruß
    Henne

    • Sorry, aber da bin ich ehrlich gesagt total überfordert. Hatte ich noch nie Probleme mit! Hast Du vielleicht im Router die Geräte auf bekannte gesperrt? Dass neue Geräte gar nicht erlaubt sind? Wäre spontan das einzige was mir einfallen würde, zumal ja zwei verschiedene Systeme nicht klappen…

      Gruss Daniel

    • War bei mir gestern auch ein Kampf 🙂

      Was genau heißt „Flashen erfolgreich“? Keine Fehlermeldung oder kann man am Gerät die LED umschalten?

      Könnte sein, dass dein USB Adapter nicht genug Strom zum Flashen liefert. Das war es bei mir. Ich hab dann eine zusätzliche 3,3V Breadboard Stromversorgung verwendet.

      Dann ist noch Flash Modus DOUT statt DIO bei neueren Sonoffs nötig (und schadet anderen offenbar nicht).

      Wenn es nur die WLAN Konfiguration ist:
      Nach 4x kurz Knopf drücken sollte das Gerät ein eigenes WLAN aufmachen. Mit dem direkt verbinden (Pw 12345678), dann öffnet sich eine Webseite zum konfigurieren unter http://192.168.4.1

      Hoffe das hilft weiter!

    • Als Flash-Methode anstelle von DIO mal DOUT auswählen (wurde bereits erwähnt). Damit war das flashen bei mir erfolgreich. Nach dem Flashen das FTDI ab- und wieder anstecken. Die LED am Sonoff blinkt 1x und sollte danach auf Dauerlicht schalten. Wenn die LED nichts macht, ist was schiefgelaufen.

      • Ein Traum!

        Habe die doofen Dinger nun völlig frustriert wochenlang in der Ecke liegen lassen und einen Hass auf Aliexpress und die Asiaten überhaupt entwickelt.

        Aaaaber… mit DOUT geht im fernen Osten die Sonne wieder auf.

        Habe nun vier Schalter mehr in meiner Mediola-Fernbedienung.

        Ganz vielen Dank an joba1 und _BJ1!

        Gruss
        Henne

  2. Hallo,
    ich habe wie die Anleitung meine Sonoff Basic geflasht. es hat ja super geklappt, nun möchte ich den geflasht Sonoff mit Alexa verbinden, wüsste aber leider nicht wie man es macht, kannst du mir vielleicht weiterhelfen?

    bei der Original Sonoff kann man mit dem Ewelink Skill wunderbar mit Alexa verbinden !!!

    • Ich kann Dir da leider nur in Verbindung mit IP Symcon helfen, weil ich das so umgesetzt habe (alles andere wäre bei mir schwachsinnig). Hast Du auch IP Symcon?

      Gruss Daniel

  3. Hallo, durch ein paar Änderungen in dem Programm kann ich jetzt den Sonoff mit Alexa ansteuern. die nächste Frage ist ob man noch Timer darein bauen wie die Original Software von Ewelink Skill.

    LG

  4. Hi,

    evtl. kannst du mir hier weiterhelfen ich verzweifel schon.

    Ich bekomme immer folgende Meldungen:
    warning: espcomm_sync failed
    error: espcomm_open failed
    error: espcomm_upload_mem failed
    error: espcomm_upload_mem failed

    RX und TX habe ich schon mehrfach getauscht ohne erfolg.
    Flasher habe ich diesen hier.
    http://www.ebay.de/itm/FT232RL-FTDI-USB-zu-TTL-Serien-Converter-Adapter-Modul-5V-3-3V-F%C3%BCr-Arduino-TE203/281909029942?ssPageName=STRK%3AMEBIDX%3AIT&_trksid=p2057872.m2749.l2649

    Hab das ganze auch schon über ATOM.IO versucht aber auch da bricht er beim flashen immer ab.

    • So auf die Schnelle und auf Entfernund ist das nicht leicht. Ich würde nochmal alle Einstellungen der Schnittstelle kontrollieren (richtige ausgewählt, Baudrate, …).

      Gruss Daniel

    • @Denns,
      warum kaufst Du Deine Teile nicht bei aliexpress?
      Ich habe mir 10 Stück von den Teilen geholt für ca 18 USD inkl. Versand.

      Diese „Flasher“ sind auch für andere Sachen gut. Ich betreibe damit ein Nextion-Display am Raspberry.

      • Kommt immer drauf an, welche Ansprüche man hat… Ich persönlich könnte auch mit zehn von den Dingern nix anfangen. Hab mal drei gekauft und die reichen heute noch… 😉 Warum sollte man dann zehn Stück kaufen, wenn 9 immer nur originalverpackt in der Bastelkiste rumliegen? 😉

        Gruss Daniel

  5. Es ist absolut sinnvoll, in der user_config.h die IP-Adressen auch gleich passend einzustellen.
    Dann ist nach einem „Reset Configuration“ auf der Weboberfläche das Sonoff sofort erreichbar.
    Ich bevorzuge feste IP, deshalb mein Beispiel bei Fritzbox-üblichen Netzwerken(der DHCP-bereich fängt da üblicherweise erst bei 192.168.178.20 an):
    #define WIFI_IP_ADDRESS „192.168.178.12“ //statt 12 geht alles zwischen 2 und 19
    #define WIFI_GATEWAY „192.168.178.1“
    #define WIFI_SUBNETMASK „255.255.255.0“
    #define WIFI_DNS „192.168.178.1“
    Gruß
    MM

  6. Das hört sich wirklich gut an.
    Ich werde mir so ein Teil bestellen, um meine Kaffeemaschine smart zu machen.
    Geht auch ein Sketch für Wemos Mini? Ich habe da einen bereits für Homematic modifiziert.
    Ich habe meine Aktoren bisher alle aus einem Wemos Mini, Relais und Mini-Netzteil gebastelt.
    Gruß, Mathias

    • Sorry, aber mit Wemos Mini habe ich null Erfahrung. Hab glaub mal einen bestellt und in der Kiste liegen, aber nie in Betrieb gehabt. Wäre aber an Deinen Erfahrungen sehr interessiert. Sehr sehr gerne sogar würde ich einen Gastartikel veröffentlichen „Homematic-Aktoren mit Wemos Mini selbst gebaut“ oder ähnlich! Hättest Du Lust?

      Gruss Daniel

      • Warum nur Aktoren?
        Ich habe da auch ein paar Sensoren (BW) mit dem Wemos mini am Laufen.
        Nun ein kleiner Wermutstropfen bleibt.
        Man muß sich die Gehäuse dazu selber drucken.
        Ich versuche gerade eine Wetterstation in der Homematic einzubinden. Dieser kommt dann auf den Balkon. Um den Batterieverbrauch in Grenzen zu halten, soll der solar mit einem Backup-Akku betrieben werden.
        Um ehrlich zu sein, ich habe den ganzen Sommer über nichts getan. Diese Zeit ist mir einfach zu schade, um zwischen Lötstation und PC zu verbringen. Aber jetzt ist es ja bald wieder Winter……
        Die Ideen dazu habe ich mir im Netz zusammengeklaut 🙂

        Gruß,
        Mathias

        • Jetzt hätte ich noch mehr Interesse an einem Gastartikel von Dir… 🙂 Das Thema klingt ja richtig interessant!
          Gib es zu… Wenn der Winter rum ist, hast Du auch eine CCU3 entworfen? 😉

          Gruss Daniel

          • CCU3?
            Nee! dafür ist mein Können zu wenig.
            Da mußt Du Dich mit Jens Maus unterhalten!
            Er hat auch die Software für Raspberrymatic geschrieben, die ich heute einsetze. Die CCU2 habe ich in der Bucht versteigert.
            Der Geschwindigkeitszuwachs zur CCU2 ist enorm. so macht das Anlernen von Geräten, schreiben von Programmen und Skripten wirklich wieder Spaß!
            Wie bereits geschrieben, die Skripte, Sketche usw habe ich allesamt im Netz geklaut.

            Gruß,
            Mathias
            P.S. Wenn ich einen Gastartikel schreiben soll, will ich auch erwähnen, von wem die Sketche stammen!

  7. So meine Kaffeemaschine ist nun smart. Da dieses Sonoff-Teil da nicht reinpasst, habe ich mir ein Wemos D1 Mini besorgt, ein Mini-Netzteil und ein Arduino Relais.
    Hier der Sketch dazu:

    /*
    * WeMos-Schaltaktor (Prototyp)
    *
    * verbindet sich mit dem vorhandenen WLAN als Server
    * Steuerung über HTTP-Befehle:
    * „“ gibt eine Status- und Befehlsübersicht aus
    * „/aus“ schaltet das Relais aus
    * „/ein“ schaltet das Relais ein
    * „/status“ gibt den Schaltzustand des Relais als Logikwert („ein“ oder „aus“) zurück
    *
    * Getesteter Aufbau:
    * WeMos D1 mini
    * Relay Shield mini
    * Pin-Belegung:
    * D1: Steuerleitung Relais
    *
    * 31.Januar 2016 —m.yoda
    */

    #include
    #include
    #include

    // ******* Netzwerkeinstellungen, bitte anpassen! *******
    const char* ssid = „abc123“; // SSID des vorhandenen WLANs
    const char* password = „geheim“; // Passwort für das vorhandene WLAN
    IPAddress gateway(xxx,xxx,xxx,xxx); // IP-Adresse des WLAN-Gateways
    IPAddress subnet(255,255,255,0); // Subnetzmaske
    IPAddress ip(xxx,xxx,xxx,xxx); // feste IP-Adresse für den WeMos

    ESP8266WebServer server(80); // Webserver initialisieren auf Port 80
    String antwort = „“;

    String zeitstempel() { // Betriebszeit als Stunde:Minute:Sekunde
    char stempel[10];
    int lfdStunden = millis()/3600000;
    int lfdMinuten = millis()/60000-lfdStunden*60;
    int lfdSekunden = millis()/1000-lfdStunden*3600-lfdMinuten*60;
    sprintf (stempel,“%03d:%02d:%02d“, lfdStunden, lfdMinuten, lfdSekunden);
    return stempel;
    }

    void wurzel_behandlung() { // bei Aufruf des Root-Verzeichnisses
    String temp = zeitstempel();
    antwort = „WeMos Schaltaktor\n\n“;
    if (digitalRead(D1) == HIGH)
    antwort = antwort + „Status: eingeschaltet\n“;
    else
    antwort = antwort + „Status: ausgeschaltet\n“;
    antwort = antwort + „Betriebszeit: “ + temp + “ (Std:Min:Sek)\n“;
    antwort = antwort + „Verbunden mit: “ + ssid + „\n“;
    int rssi = WiFi.RSSI();
    antwort = antwort + „Signalstaerke: “ + String(rssi) + “ dBm\n\n“;
    antwort = antwort + „HTTP-Befehlsuebersicht:\n“;
    antwort = antwort + „\“/aus\“ schaltet das Relais aus\n“;
    antwort = antwort + „\“/ein\“ schaltet das Relais ein\n“;
    antwort = antwort + „\“/status\“ gibt den Schaltzustand des\n Relais als Logikwert (\“ein\“ oder \“aus\“) zurueck\n“;
    server.send(300, „text/plain“, antwort);
    delay(150);
    Serial.println(temp + “ unspezifische HTTP-Anfrage“);
    }

    void mach_an() {
    pinMode(D1, OUTPUT);
    digitalWrite(D1, HIGH);
    server.send(200, „text/plain“, „WeMos-Schaltaktor ist eingeschaltet“);
    delay(100);
    Serial.println(zeitstempel() + “ ueber HTTP eingeschaltet“);
    }

    void mach_aus() {
    pinMode(D1, OUTPUT);
    digitalWrite(D1, LOW);
    server.send(200, „text/plain“, „WeMos-Schaltaktor ist ausgeschaltet“);
    delay(100);
    Serial.println(zeitstempel() + “ ueber HTTP ausgeschaltet“);
    }

    void melde_status() {
    String temp = zeitstempel();
    if (digitalRead(D1) == HIGH)
    antwort = „ein“;
    else
    antwort = „aus“;
    server.send(200, „text/plain“, antwort);
    delay(100);
    Serial.println(zeitstempel() + “ ueber HTTP Status gemeldet“);
    }

    void setup() {
    pinMode(D1, OUTPUT); // Relais-Pin als Ausgang setzen

    // Seriellen Monitor für Kontrollausgaben öffnen
    Serial.begin(9600);
    Serial.println(„“);
    Serial.println(„WeMos-Schaltaktor“);

    // WLAN-Verbindung herstellen
    WiFi.config(ip, gateway, subnet); // auskommentieren, falls eine dynamische IP bezogen werden soll
    WiFi.begin(ssid, password);
    Serial.print(„Verbindungsaufbau“);

    // Verbindungsaufbau abwarten
    while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(„.“);
    }
    Serial.println(“ erfolgreich!“);
    Serial.println(„“);
    Serial.print(„Verbunden mit: „);
    Serial.println(ssid);
    Serial.print(„Signalstaerke: „);
    int rssi = WiFi.RSSI();
    Serial.print(rssi);
    Serial.println(“ dBm“);
    Serial.print(„IP-Adresse: „);
    Serial.println(WiFi.localIP());
    Serial.println(„“);

    // HTTP-Anfragen bearbeiten
    server.on(„/“, wurzel_behandlung);
    server.on(„/ein“, mach_an);
    server.on(„/aus“, mach_aus);
    server.on(„/status“, melde_status);

    // HTTP-Server starten
    server.begin();
    Serial.println(zeitstempel() + “ HTTP-Server gestartet“);
    }

    void loop() {
    server.handleClient(); // auf HTTP-Anfragen warten
    }

    Wer ein Rasperymatic bzw eine CCU2 sein Eigen nennt, schreibt ein Programm mit einem virtuellen Schalter der CCU/ Raspberrymatic. Ich habe dein einen Kaffee_ein und den anderen Kaffee_aus genannt 🙂
    Wenn Geräteauswahl–> Kaffee_ein–> kurz
    ODER

  8. Geräteauswahl–> Kaffee_ein–> lang
    dann
    Skript
    string stdout;
    string stderr;
    string url=“http:///ein“;
    system.Exec („wget -q -O /dev/null “ # url, &stdout, &stderr);
    Verzögerung 1 Sekunde

  9. Hallo mein Name ist Johannes ich bin durch Zufall auf diese Seite gelandet und da ich einige Sonoff Schalter habe wollte ich diese auf Tasmoha updaten beim Updatet erscheint folgende Fehlermeldung

    webserver:1537: error: ‚class EspClass‘ has no member named ‚getCoreVersion‘

    Bin über jede Hilfe dankbar
    Johannes

  10. Hallo,

    ich bekomme beim Kompilieren immer die Fehlermeldung
    Der Sketch ist zu groß; unter http://www.arduino.cc/en/Guide/Troubleshooting#size finden sich Hinweise, um die Größe zu verringern.
    Fehler beim Kompilieren für das Board Generic ESP8266 Module.

    Hat hier jemand eine Idee woran es liegt ? Mit den Hinweisen unter dem angegebenem Link komme ich nicht wirklich weiter. Macht es evtl Sinn ältere (kleinere?) Versionen von ArduinoJson und PubSubClient zu verwenden? Welche ?

  11. Hallo und Frohes Neues Jahr,
    Gratulliere zu dieser Supperanleitung. Ich bin was dieses Thema ein absoluter „ahnungsloser“. Doch nach Ihrer Anleitung habe ich einen SONOFF basic, der sich trotz unzaehliger Versuche geweigert hat den Offline Status zu verlassen (habe mehrere im Haus und funktionieren), flashen koennen.
    Ich habe geflasht, was nun?
    -Ist es moeglich dem Baustein eine feste IP-Adresse zu verpassen?
    – Kann ich irgendwie dieses Teil per irgendeiner APP steuern, also uebers internet zB.? Oder ueber DYN DNS (ich habe ein Server den ich von ueberall erreichen kann). Wenn es eine solceh Loesung gaebe wuerde ich alle anderen falshen, da der cloud server sehr oft ausfaellt.
    -Leider Begriffe wie MQTT sind fuer mich spanische Doerfer, aber ich koennte mich rein knieen (bin seit ueber 10 Jahre, trotzdem finde ich ab und zu ein bisschen Zeit um mein Kopf einigermassen fit zu halten.
    Vielen Dank im Voraus. (ich kann gut nach einer Anleitung arbeite, mit Loetkolben umgehen :)).

    • Hallo Teem, sorry für die späte Antwort. War etwas beschäftigt die letzten Tage… Die einfachste Steuerung bekommt man natürlich, wenn man sich zu Hause einen MQTT-Server aufsetzt. Hier möchte ich jedoch (noch) keine Anleitung erstellen, da es da hunderte im Netz gibt und es bei mir (noch) nicht so weit ist. Wird aber sicher dieses Jahr noch kommen… Steuerung über DynDNS von unterwegs aus ist natürlich möglich. Einfach daheim im eigenen Netz eine feste IP zuordnen (oder über den DNS immer die gleiche zuteilen lassen) und dann die entsprechende Portweiterleitung konfigurieren. Dann ist das Sonoff weltweit über Internet erreichbar. Die einfachste Steuerung geht natürlich über die HTTP-Requests, da braucht man dann keinerlei Software für.

      Gruss Daniel

    • Hallo Daniel und vielen Dank fuer deine Antwort. Ich werde mit Sicherheit am Ball bleiben, habe mir bereits ein Raspberrypi 3 zugelegt mit der Absicht den irgendwann in diesem Zusammenhang einzusetzen, zunaechstmal allerdings das Ding ein Bisschen erkunden. Nochmal besten Dank
      Teem

  12. Ich soll die Bibliotheken im lib Ordner der Sonoff Master laden, kann diese aber nicht in der Biblitheksverwaltung finden… bekomme immer Fehlermeldung beim Kompelieren.

  13. Arduino: 1.8.5 (Windows 10), Board: „Generic ESP8266 Module,
    exit status 1
    #error „MQTT_MAX_PACKET_SIZE is too small in libraries/PubSubClient/src/PubSubClient.h, increase it to at least 1000“

    Was mache ich Falsch ??

  14. Hallo! Ich versuche gerade Dein Sript für IPSymcon umzusetzen. Jedesmal wenn sich die Sonoff mit fester IP in meinem WLAN einloggen soll kommt im Log des Accesspoint die Meldung: WLAN[24G](#0), STA(ec:fa:bc:12:a5:c3) had been aged-out and disassociated. Hast Du vielleicht eien Tip für mich?; bin gerade ziemlich ratlos. Habe mal testhalber ein Script aus dem aktuellen ct-projekt probiert, das funktioniert sofort…benötige jedoch die Funktionalität über IPsymcon zum schalten…ist ein wirklich interessantes Thema! Danke fürs Antworten.

  15. @Daniel,
    Du hast mich nach der CCU3 gefragt. 😀
    Jetzt kommt sie bzw morgen wird sie der Presse vorgestellt.
    Guckst Du unter technikkram.net.
    Ich habe hierzu heute ein neues Thema im homematic-forum gestartet.

    Gruß,
    Mathias

  16. Hallo Spezialisten!! Bin Anfänger und habe meine Sonoffs Basic und S20 alle geflasht. Alles hat wunderbar funktioniert. Als nun meine Fritz 7590 kurz mal vom Netz war und sich die WLAN Geräte wieder angemeldet haben stellte ich fest, das von 19 Sonoffs sich nur 6 angemeldet haben. Die anderen nicht. Erst als ich sie kurz vom Strom nahm und wieder in die Steckdose, waren sie sofort da. An was kann es liegen?

3 Trackbacks / Pingbacks

  1. ioBroker: Integration von Sonoff Basic-Modulen mit Tasmota-Firmware – smarthome-tagebuch.de
  2. ioBroker: Integration von Jarolift Gurtwickler JAROMAT Eco UP 23/5 – smarthome-tagebuch.de
  3. ioBroker: Integration von Sonoff Basic-Modulen mit Tasmota-Firmware – bloggerbu.de

Schreibe einen Kommentar zu Mathias Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht.


*


Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.