Schlagwort-Archive: Internet-of-Things

Sonoff Hack für Alexa von Amazon

Download Arduino Sourcecode von Github

In diesem Projekt wird gezeigt, wie man seinen WIFI Sonoff Switch  der Firma ITEAD direkt und ohne Umwege über eine App oder den ITEAD Server, über seine eigen Amazon Alexa ansteuern kann.

Hierfür sind ein paar kleinere Änderungen an der Hard- und Firmware des Sonoff nötig, die nachfolgend gezeigt werden. Nach dem Umbau bietet der Switch viele neue Möglichkeiten.

  • Konfiguration der WIFI Parameter über ein Captiv Portal.
    Zur Inbetriebnahme des Sonoff startet der Switch im Access Point Modus, hier können anschließend alle Betriebsparameter eingegeben werde, die für den Betrieb im eigenen WLAN und mit Alexa notwendig sind.
  • Wurde der Sonoff an das eigenen WLAN gebracht, kann über ein Web Interface der Schalter bedient und der Timer konfiguriert werden.
  • Zusätzlich kann der Sonoff über das in der Konfiguration definieren Schlüsselwort über Amazon Alexa angesprochen und geschaltet werden.

Allgemeines

Vom Sonoff Switch sind zwei verschiedene Modul Varianten verfügbar. Eine mit und eine ohne RF-Funkmodul.
Wir werden uns hier mit dem Modul ohne RF-Funkmodul beschäftigen, da wir nur das WLAN-Modul fü dieses Projekt benötigen.

Etwas neuer auf dem Markt sind nun auch die Sonoff Schalter Steckdosen mit der Bezeichnung Sonoff S20, hier von habe ich ein paar bestellt. Diese können genau so wie die oben beschreibenen Module mit der geänderten Firmware geflasht werden.

Warum ein Sonoff?

Der Sonoff ist nicht der erste seiner Art, also warum er und nicht ein anderer?
Das angesagte Ziel ist es, selbst die Kontrolle zu behalten. Und nicht auf irgend einen Anbieter angewiesen zu sein.
Im Auslieferungszustand ist bereits eine Firmware auf dem Sonoff vorinstalliert, so kann der Switch direkt von einem Smartphone über die App gesteuert werden.

Den Kern des Sonoff bildet ein WiFi Modul Names ESP8266, der kompatibel mit dem Arduino ist.
Somit kann eine neue Firmware leicht mit der Arduino IDE erstellt und direkt von dort in den Mikrocontroller geladen werden.
ITEAD war sogar so nett und hat alle für die Programmierung benötigten Signale herausgeführt 🙂

Lets hack!

Bevor irgend welche Arbeiten an dem Switch durchgeführt, sei es das öffnen des Gehäuses, ein Hardware Umbau oder das flashen, muss unbedingt die Netzspannung entfernt werden!!!
Es besteht LEBENSGEFAHR!!!

Im ersten Schritt wird der Flash RAM Speicher des Sonoff (1 MBit) gegen einen größeren Speicher 4MBit ausgetauscht. So bleib genügend Platz für weitere neue Innovationen.

Dieses YouTube Video zeigt die Vorgehensweise.

Eine genaue Beschreibung über die Programmierung mit der Arduino IDE und dem Austausch des Speichers finden Sie in diesem Link.

Zugriff für die Programmierung des Sonoff bietet ein Stiftleistenslot auf der Platine, der wie folgt belegt ist.

Wichtig:
Der ESP8266 arbeitet mit einer Betriebsspannung von 3.3V Vergessen deshalb nicht vor dem Anschluß ihres Programmiergerät dies auf 3.3V um zu stellen.

Programmer Sonoff (gezählt vom quadratischen Pin)
3V3 1
TX 2 (RX)
RX 3 (TX)
GND 4
 NC 5

Für die Programmierung halten sie den Taster gedrückt und schalten sie anschließend die Spannungsversorgung 3V3 des Sonoff zu. So startet der ESP8266 im Flash Modus.

Pin Belegung des Sonoff

Funktion GPIO NodeMCU
Button 0 3
Relay 12 6
Green LED 13 7
Spare (pin 5) 14 5

Die LED auf der Platine ist aktuell eine rot/grün bi-color led, bei der aber nur die grüne led verwendet wird. Die rote LED ist für die Variante mit dem RF-Modul geplant und, die in meiner Version aber nicht vorhanden ist

Nach dem flashen der neuen Firmware, was erstmalig über die Serielle Schnittstelle erfolgen muss, ist es dann möglich weitere Firmware Updates OTA in den Sonoff zu übertragen.
In der Arduino IDE sollte nach dem konfigurieren des Switches ein entsprechender Eintrag unter Port zu finden sein.

Einen lokalen Blynkserver beim Booten der Raspberry PI Starten

In diesem Beitrag wird am Beispiel eines lokalen Blynk Servers gezeigt, wie auf einer Raspberry PI eine Java File beim Starten und Herunterfahren der PI automatisch gestartet und heruntergefahren werden kann.

  1. Zuerst wird ein Startscript und ein Stopscript erstellt, die später die Applikation mir Rootrechten startet und stoppt. Hier für wechseln wir mit sudo bash unsere Benutzerrechte auf Root.In unserem Beispiel speichern wir die Scripte im Verzeichnis /usr/local/bin/…
  • Start Script: /usr/local/bin/startBlynk.sh
  • Stop Script: /usr/local/bin/stoppBlynk.sh

Nach dem erstellen der Scripte müssen noch deren Attribute auf ausführbar gesetzt werden. Dies geschieht mit dem Befehl chmod +x NAME

Zu Starten des BlynkServers kann der Inhalt des Scripts startBlynk.sh im einfachsten Fall so aussehen:

#!/bin/bash
/usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/bin/java -jar /home/pi/Blynk/server-0.39.10.jar -dataFolder /home/pi/Blynk &

Zu Stoppen des BlynkServers kann der Inhalt des Scripts stoppBlynk.sh im einfachsten Fall so aussehen:

#!/bin/bash
#sucht und beendet die Java Applikation
ps auxf |grep ’server-0.xx.x.jar ‚|`awk ‚{ print „kill “ $2 }’`

Als nächstes benötigen wir noch das folgendes Script (localBlynk) , wir speichere es in das Verzeichnis /etc/init.d/localBlynk

  • sudo nano /etc/init.d/localBlynk
  • Inhalt der Date:#! /bin/sh
    ### BEGIN INIT INFO
    # Provides:        localBlynk
    # Required-Start:
    # Required-Stop:
    # Default-Start:        2 3 4 5
    # Default-Stop:         0 1 6
    # Short-Description:    Stars & Stops BlynkServer
    # Description:          Stars & Stops BlynkServer
    ### END INIT INFO

 

# Start Stop Blynk local Blynk Server

case $1 in
start)
/bin/bash /usr/local/bin/startBlynk.sh
;;
stop)
/bin/bash /usr/local/bin/stopBlynk.sh
;;
restart)
/bin/bash /usr/local/bin/stopBlynk.sh
/bin/bash /usr/local/bin/startBlynk.sh
;;
esac
exit 0

  • Um das Script zum Systemstart hinzu zu fügen, führen wir nun noch  folgende Kommandos aus:cd /etc/init.d/
    sudo chmod 755 localBlynk
    sudo update-rc.d localBlynkdefaults

 

Einen eigenen lokalen Blynk Server auf dem Raspberry PI installieren

Logen Sie sich auf ihrer Raspberry z.B. per ssh ein.

Nun wird die aktuelle Java Version (Java 8) installiert :

sudo apt-get install oracle-java8-jdk

Stellen Sie sicher, dass nun die aktuelle Java Version installiert wurde.

java -version
Output: java version "1.8.0_40"

Download des Blynkserver jar Files in das „/home/pi/Blynk Verzeichnis.
Sollte das Verzeichnis noch nicht existiert muss es zuerst angelegt werden.

Alle folgenden „sudo“ Anweisungen kann man sich sparen, wenn man gleich in den „sudo bash“ wechselt, dies ist vergleichbar mit dem „su“ bei anderen Linux Distributionen.

pwd
/home/pi/
sudo mkdir Blynk
cd Blynk
sudo wget "https://github.com/blynkkk/blynk-server/releases/download/v0.39.10/server-0.39.10.jar"

Es ist auch möglich,  die Server Datei manuell via ssh oder scp herunter zuladen und in das entsprechende Verzeichnis hinein zu kopieren .

Um den Mailversand zu aktivieren, muss im Verzeichnis /home/pi/Blynk eine Datei mit dem Namen mail.properties angelegt werden.

Der Inhalt dieser Datei hat folgendes Format.

mail.smtp.auth=true
mail.smtp.starttls.enable=true
mail.smtp.host=smtp.gmail.com
mail.smtp.port=587
mail.smtp.username=Anmeldename
mail.smtp.password=Kennwort

Die aktuelle Blynk Server Version ist unter:
https://github.com/blynkkk/blynk-server/releases
zu finden.

  • Server mit den default Einstellungen starten (Hardware Port 9443 SSL)
    sudo java -jar server-0.39.10.jar -dataFolder /home/pi/Blynk        
    
  • Als Rückmeldung des Servers erscheint eine Meldung wie diese :
    Blynk Server successfully started.
    All server output is stored in current folder in 'logs/blynk.log' file.
    

Aktiviere automatischen Server Neustart

Um diese Option zu aktivieren, suchen Sie das Verzeichnis:
/etc/init.d/rc.local
öffnen sie die Datei mit dem vi Editor und fügen sie die folgende Zeile hinzu:

sudo vi rc.local
java -jar /home/pi/Blynk/server-0.39.10.jar -dataFolder /home/pi/Blynk &

Sollte dieser Ansatz nicht funktionieren, versuche Sie bitte folgendes:

sudo crontab -e

und fügen sie die folgenden Zeilen hinzu

    @reboot java -jar /home/pi/server-0.39.10.jar -dataFolder /home/pi/Blynk &

anschließend speichern und beenden.

Der Administrationsbereich kann anschließend bei laufendem Blynk Server mit folgender URL im Browser geöffnet werden.

https://your_ip|(127.0.0.1):9443/admin

Um den Blynkserver im Lokalen Netzwerk auch über das Internet erreichen zu können wird der Einsatz einer DynDNS Adresse empfohlen. Diese kann dann z.B. in einer Fritzbox hinterlegt werden, ändert sich die IP-Adresse der Fritzbox (alle 24 Stunden veranlaßt durch den Provider), wird automatisch die DynDNS Adresse informiert und der Server ist somit immer mit einem Pseudo Domain Name erreichbar.
In lokalen Router müssen außerdem noch ein paar Portfreigaben definiert werden. EIn Auszug der wichtigsten Einstellungen ist hier zu sehen.

 

Viele weitere Informationen zur Konfiguration der Blynk Servers.