Sonntag, 17. April 2016

Review of Sonoff Smart Home Schalter mit Wifi

Ich habe vor ein paar Tagen ein Sonoff Schalter bestellt. Dieser ist im Grunde ein ESP8266 Modul mit einem Relais. Zusätzlich bringt es alles mit, was man benötigt, um an Netzspannung betrieben zu werden. Es eignet sich also um direkt vor ein Gerät geschaltet zu werden.



Im Lieferumfang des Sonoff befindet sich auch eine App mit der man den Schaltzustand des Relais über das Internet auslesen und ändern kann. Die Konfiguration ist denkbar einfach. Das Sonoff mit Netzspannung versorgen, dann den Knopf am Gehäuse für ca. 3 Sekunden drücken und die LED blinkt schnell. Gleichzeittig öffnet das Sonoff einen WLAN Access Point. Mit der App wird dann der Accesspoint gefunden und sich damit verbunden. In der App kann dann konfiguriert werden, welches WLAN Netzwerk als Zugang zum Internet verwendet werden soll. Dazu wird die SSID ausgewählt oder eingegeben, Der Zugangsschlüssel, sowie die Einstellung ob feste IP oder DHCP verwendet werden soll, werden ebenfalls vorgenommen. Anschließend verbindet sich das Sonoff mit dem angegebenen Netzwerk und kann über die App im Netzwerk gefunden werden. Über einen Webdienst kann dann der Schalter betätigt werden.

Das ganze für 8€ ist natürlich ein Angebot, dass es vertretbar macht. Vergleichbare schaltbare Steckdosen sind wesentlich teuerer. Allerdings wäre es eine Verbesserung, wenn das Schalten auch über das lokale Netz funktioniert und nicht unbedingt eine Verbindung in das Internet voraussetzt. Hier kommt Herbert Mk3 ins Spiel. Darauf läuft ein MQTT Server. Dieser kann Nachrichten an MQTT Clients verteilen. Dazu muss das Sonoff allerdings auch MQTT sprechen können. Das ist allerdings in der aktuellen Firmware nicht vorgesehen.

Für den Einsatz mit MQTT muss also eine andere Firmware auf das Sonoff programmiert werden. Mit Hilfe des ESP8266 Arduino Projekts ist die Software kein Problem. Die Schaltung des ESP8266 auf dem Sonoff wurde von Peter Scargill veröffentlicht.

Mit einem handelsüblichen FTDI 3V3 Seriellen Kabels habe ich mich an die Pins gehängt und konnte so den Inhalt des SPI-Flash auslesen (Backup der originalen Firmware) und anschließend eine eigene Firmware aufspielen.

Für die Sonoff Plattform gibt es bereits verschiedene Firmwares. Hier zeige ich euch zwei Alternativen zur ITead Firmware und der eWeLink App. Außerdem die Firmware, die ich weiterentwickelt habe.

Sonoff-MQTT-OTA von arendst

Auf Basis der ESP Entwicklungsumgebund oder der Arduino Bibliothek für den ESP8266 kann mit dieser Firmware das Sonoff mit vielen neuen Features ausgestattet werden.

Kommunikation wird über das MQTT Protokoll abgewickelt. Dabei gibt es folgende Befehle:

  • Relais ein-, aus- oder umschalten
  • MQTT Topic ändern
  • OTA Firmwareupdate URL ändern
  • OTA Firmwareupdate ausführen
  • Status anzeigen

Der Knopf am Gerät wird verwendet für

  • Relais umschalten
  • Wifi Smartconfig
  • OTA Update durchführen
  • Gerät zurücksetzen

Da ich mal wieder Lust hatte in einer anderen Sprache als C zu programmieren, habe ich noch eine weitere Firmware herausgesucht.

nodeMCU Sonoff von Frederic HARS

Diese Firmware bietet auf Basis des LUA-Interpreters von NodeMCU den Schlatzustand über ein Webinterface oder MQTT zu ändern. Die Verbindung zum MQTT Server wir in einer globalen Konfigurationsdatei eingetragen und dann von NodeMCU hergestellt.

Der MQTT Broker kann mit dieser Firmware lediglich den Schaltzuusand zusenden. Das Sonoff kann den Knopf nicht auslesen, also auch nicht vor Ort betätigt werden.
Die LED zeigt den Schaltzustand an.

Die MQTT Verbindung unterstützt keine Passwortgesicherte Verbindung, es sollte also nur im privaten Netzwerk eingesetzt werden. die Konfigurationsdatei kann über das Webinterface können die LUA Skripte geupdated werden. Die NodeMCU Firmware bleibt allerdings fix und muss über eine Kabelverbindung geupdatet werden.

Aus Basis dieser Firmware habe ich Anpassungen gemacht, die meine Sonoffs für mein Hausautomationsprojekt funktionsfähig machen. Der Fork von mir beinhaltet nicht nur kleine Änderungen für die Funktionsweise des MQTT, sondern auch die Funktion des Knopfes zum Umschalten des Relais.

Diese weitern Funktionen werden noch kommen:

  • Wifi Smartconfig
  • Wifi Autoconfig für Herbert/PiDome
  • Konfiguration über MQTT
  • Speichern des letzten Schattzustands
  • OTA Script
  • OTA Verwaltung für Herbert/PiDome




Sonntag, 6. März 2016

Ormerod Erweitungungsboard für Diamond Hotend

Im Sommer habe ich meinen Ormerod für das Diamond-Hotend umgerüstet. Dazu habe ich an den Extension-Stecker drei Pololu-kompatible Schrittmotortreiber angelötet. Damit ihr das nachzubauen könnt, gibt es jetzt das Adapterboard mit Aufnahmestellen für vier Pololu Module.

3D Rendering der Baugruppe in KiCad
Das Board wird einfach nur an den Erweiterungssteckplatz gesteckt. Die Konfigurationsdatei auf der SD-Karte kann angepasst werden um die neuen Schrittmotoren zu unterstützen.
Fertig bestücktes Duex X Board mit vier Pololu Stepper Treibern
Die Änderungen in der Konfigurationsdatei müssen auf der SD-Karte des Duet Boards durchgeführt werden. Jede Farbe, die mit dem Diamond Hotend gedruckt werden soll erhält eine eigenes Werkzeug. Dazu müsst ihr die Befehle G10 und M563 verwenden.
Mit M563 wird das "Werkzeug" angelegt. Werkzeug deshalb in Anführungszeichen, weil ein Werkzeug eine bestimmt Farbe im Hotend ist. M563 legt die Parameter fest, mit denen die Farbe erzeugt wird.

M563 P0 D0 H1

Diese Zeile erzeugt das erste Werkzeug T0 und teilt mit, welche Motoren und welche Heizer zum Werkzeug T0 gehören. D0 ist der Extrudermotor 0 und H1 ist der Heizer Nummer 1. Heizer Nummer 0 ist das Druckbett. Motor 0 ist der erste Extruder auf dem Duet Board. Um Motoren des Extension Board zu verwenden müsst ihr die Nummer an der jeweiligen Pinleiste nehmen. Das gilt jedoch nur für ein Duet Board der Version 0.6! Mit der neuen 0.8.5 Version wurde auch ein weiterer Motortrieber auf das Basisboard gebracht. Somit muss die Nummer um eins erhöht werden.

Als nächstes müssen wir einstellen, mit welcher Arbeitstemperatur (220°C) und welcher Standby-Temperatur (120°C) das Werkzeug arbeitet:

G10 P0 S220 R120

Auch hier muss die Werkzeugnummer 0 angegeben werden.

Duex Board mit zwei zusätzlichen Schrittmotoren angeschlossen

Mit den beiden Zeilen die wir oben sehen können wir jetzt eine ganze Liste an neuen Werkzeugen definieren. Der Drucker ist jetzt in der Lage 5 (oder 6) Motoren zu steuern. Für das Diamond Hotend benötigen wir nur 3. Wenn alle drei Motoren an das Extension Board E1, E2 und E3 angeschlossen sind, steht in der config.g also:

G10 P0 S220 R120
G10 P1 S220 R120
G10 P2 S220 R120
M563 P0 D1 H1
M563 P1 D2 H1
M563 P2 D3 H1

Damit können wir schon drei Farbige Drucke erzeugen. Das Schöne kommt allerdings, wenn wir die Eigenschaften eines Werkzeugs so definieren, dass mehr als nur ein Motor verwendet wird. 
Zu diesem Zweck gibt es in der Firmware für das Duet Board den Befehl M567. Dieser legt ein Mischverhältnis für ein bestimmtes Werkzeug fest.

M567 P0 E0:0.1:0.2:0.7

Dieser Befehl legt fest, dass das Werkzeug T0 ab sofort die zu extrudierende Länge gleichzeitig auf folgenden Motoren ausgibt:

  • Motor 0 : 0%
  • Motor 1: 10%
  • Motor 2: 20%
  • Motor 3: 70%
Wie wir oben sehen sind an Motoren 1 bis 3 die Motoren für das Diamond Hotend angeschlossen. Somit erhalten wir eine heterogen gemischte Masse am Ausgang der Düse. Mit transparenten Filamenten sollte das allerdings brauchbare Ergebnisse liefern. Ob das funktioniert wird sich in der Zukunft zeigen. Im Moment warte ich noch auf Teile um drei funktionierende Extruder zusammen zu bauen.

In der Zwischenzeit kann man die Extensionboards auch nachbauen, oder käuflich erwerben. Die Daten sowie eine Anleitung werden in den nächsten Tagen online gestellt.


Sonntag, 17. Januar 2016

Assembly of a Chinese 3D Delta Printer Kit

I got myself a Chinese 3D printer kit. It is a delta configuration build after the Reprap Kossel Mini . The Set included:
  • Hardware (linear rails, belts, motors, screws feathers, print surface)
  • Electronics (RAMPS 1.4, LC-display, SD-card, switches, cables)
  • Extruder (direct bowden extruder)
  • Hotend (E3D clone with heater cartridge and thermistor)
  • Heated Bed PCB (for heating up the print surface)
  • Free PLA filament
Contents of the two packages
Everything was shiped with DHL Express from Hong Kong and arrived 7 days after purchasing. Which is very nice for a package from china. Shipping was only 32$ extra. In Germay customs claimed another 68€ so in total 370€ which is not too bad for the two packages containing (hopefully) all of the parts needed for assembly.

Unpacking all the boxes leaves us with heaps of material. The threr cardboard boxes contain all of the parts. The tube contains the linear slides for the towers. The black beams are for the frame and the red PCB is the heater for the print surface. Included in the package were all the Allen keys needed for assembly. A lot of M3, M4 and M5 screws, nuts and various bits. An SD card with the necessary firmware and build instructions were included as well. All the mechanical connections are printed with PLA in a OK quality. The dimensions are met so I was no problem to put everything together.

All the assembly parts layed out on the table
With my comprehensive knowledge of simplified Chinese symbols, which is none, I could read some of the documentation. Luckily the internet is full of assembly instructions for the reprap Kossel mini.

After a few hours the mechanics where done and everything moves smoothly. After adjusting the delta values in the firmware, z height and probe offset for finding the true Z0 position it printed with the included PLA filament. The test cube was sliced with slic3r with a configuration I came up with. After a few layers the extruder stopped working and nothing was fed into the hotend anymore. After some fiddling around with the temperature and manually trying to push the filament through the hotend I dissembled the whole hotend part. It showed that the free filament sample had a huge part of 2mm diameter instead of 1.78, which i measured before configuring the slicer. Due to the large diamter the filament got stuck in the cold part of the hotend. Stupid thing but easyly fixable. Pushing with a small screwdriver from the nozzle side of the cold part released the stuck piece of filament.
Well the free sample found its way to the bin and a spool of light blue high quality PLA found its way to the extruder and out of it again. Tightening the hotend in a hot state will hopefully do the job.
The thing is running, litterally. A nice piece of hardware
If you are looking for a nice kit to build yourself a kossel mini 3D printer you can go for one of the cheap sets from china. But keep in mind, you are in for a steep learning curve. If you want to print 3D models and not fiddle around to much, buy something else.