Mittwoch, 29. März 2017

Sonoff

Hallo zusammen,

in meinem letzten Post habe ich gesagt, dass ich eine günstige Alternative zum Selbstbau von WLAN-Zwischensteckern gefunden habe. Dies soll das heutige Thema darstellen.

Doch zunächst möchte ich über mein Selbau-Modell sprechen. Dieses habe ich im Zusammenhang mit meinem IoT-System konzipiert und gebaut. Im Prinzip besteht es aus einem Netzteil, einem ESP8266 (dazu mal in einem späteren Post mehr) und einem Relay-Board, sowie ein paar weiteren einzelnen Bauteilen. All diese Komponenten sind innerhalb eines Zwischenstecker-Gehäuses verbaut.


Während der ESP und das Relayboard beide aus China stammen, habe ich das Gehäuse, sowie das Netzteil von einem lokalen Versender bezogen. Ich muss hier darauf hinweisen, dass man mit billigen Netzteilen vorsichtig umgehen sollte. Die von mir gekauften Netzteile haben mich pro Stück weniger als einen Euro gekostet. Der Form nach zu urteilen sollten sie mal als Steckernetzteile eingesetzt werden. Auf Grund des geringen Preises hatte ich gleich mehrere bestellt, jedoch verabschiedete sich das zu erst eingebaute beim ersten Anstecken mit einem kleinen Knall. (Siehe Bild mit geöffnetem Gehäuse, dunkle Flecken auf weißem Plastik links)

Daraufhin habe ich die anderen vorsorglich überprüft und massive Mängel festgestellt. Einige funktionierten garnicht und einige liefterten eine zu geringe Spannung. Wenigstens kam es zu keiner weiteren Explosion. Das darauf ausgewählte, funktionstüchtige Exemplar funktioniert dagegen bis heute einwandfrei, inzwischen gibt es allerdings unschöne Pfeifgeräusche von sich. Deswegen ist der Zwischenstecker auch nichtmehr im Einsatz, sondern liegt ungenutzt in der Ecke.

Als Ersatz kommen dafür bei mir in Form von Fertigmodulen mit dem Namen "Sonoff" - kurz für Switch on / off - von der chinesischen Firma ITEAD. Ich habe mittlerweile vier Stück davon im Dauereinsatz und weitere drei in Einsatzbereitschaft. Sonoff ist praktisch nichts anderes als das von mir gebaute Modell, jedoch sind alle Komponenten auf einer Platine vereint, sodass weniger Platz benötigt wird. Allerdings ist das Gehäuse kein Steckergehäuse, sodass man die Geräte nicht einfach zwischenstecken kann. Der Anschluss erfolgt stattdessen über zweipolige Schraubklemmen auf Ein- und Ausgangsseite, an welche Kabel mit Eurosteckern angeschlossen werden können. Sollte ein Schutzkontakt benötigt werden, so sollte es möglich sein, diese als einzelne Ader am Sonoff vorbei zu führen. Allerdings muss beachtet werden, dass die Sonoffs für lediglich 10 Ampere ausgelegt sind. Daher dürfen besonders leistungsstarke Geräte über 2,2 KW nicht betrieben werden. Ich persönlich würde aber auch diese Grenze nicht austesten wollen, weswegen ich auch ausdrücklich davon abrate Verbraucher mit hohem Energiebedarf über Sonoffs zu schalten!


Für die Logik des Sonoffs befindet sich im Inneren ein ESP8266. Dieser ist mit einer Software von ITEAD versehen, welche es erlaubt die Sonoffs über eine App zu steuern. Wem das wie mir nicht ausreicht, der kann die Sonoffs selbst programmieren. Dazu sollte auf jeden Fall sichergestellt werden, dass der zu programmierende Sonoff NICHT am Stromnetz angeschlossen ist. Unbedingt vorher trennen! Das Gehäuse lässt sich öffnen, indem im unteren Bereich die obere Plastikschale mit einem Fingernagel oder Schraubendreher von der Grundplatte weggedrückt wird. Auf den beiden langen Seiten wird die Oberschale von jeweils zwei Platiknasen gehalten. Diese brechen im allgemeinen auch nicht weg.



Nach dem Öffnen hat man freien Zugang zur Platine. Dort existieren fünf Kontakte, von welchen vier zur Programmierung mittels eines USB/Serial-Adapters benötigt werden. Entweder bestückt man die Kontaktlöcher mit Buchsenleisten, da die Programmierung aber vergleichsweise selten erfolgt, bin ich dazu übergegangen, die entsprechenden Stiftleisten während der Übertragung lediglich an die Kontaktlöcher zu drücken. Dies ist für die Programmierung ausreichend und spart das feste Einlöten der Buchsen. Wie bei jedem ESP muss, um diesen in den Programmiermodus zu versetzen, der Taster während des Starts (also während des Ansteckens der Spannungsversorgung) gedrückt sein.


Zur Programmierung habe ich die Standard-Arduino-Software verwendet, welche über den Board-Manager für den ESP8266 erweitert wurde. Auf der verlinkten Seite befinden sich Informationen, wie der ESP in der Arduino-IDE programmiert werden kann. Dies sollte aber für Kenner der IDE kein Problem darstellen, da die Bibliotheken des ESP sich denen von Arduino sehr ähneln. Wichtig zu wissen ist, dass als Board "Generic ESP8266 Module" ausgewählt werden sollte und dass der Speicher 1MB beträgt. Die Größe des "SPI-Flash-File-Systems" (SPIFFS) ist beliebig einstellbar, ich habe mich auf 128KB beschränkt. Die verwendeten Pins sind Pin 13 für die eingebaute LED, Pin 12 für das Relay und Pin 0 für den Taster. Wie schon gesagt, ist der Taster gleichzeitig der Taster, welchen den ESP in den Programmierzustand versetzt. Sollte er also beim späteren Anstecken gedrückt sein, wird der ESP in diesem Zustand gestartet und wird sein Programm nicht ausführen.

Rot: Vcc, Grün: Rx, Weiß: Tx, Schwarz: Gnd



Ist die Programmierung abgeschlossen, so muss da Gehäuse des Sonoffs wieder geschlossen werden, wonach das Gerät anschließend in Betrieb genommen werden kann. So erhaltet ihr einen DIY-WLAN-Switch für etwa 5 Euro. Die Sonoffs erhält man übrigens entweder direkt bei ITEAD, alternativ auf diversen anderen China-Seiten.

Das soll es für heute gewesen sein.
Ich wünsche allen noch einen schönen Nachmittag.

Samstag, 25. März 2017

Internet of Things

Heute möchte ich über das "Internet of Things" (IoT) und meine Interpretation dessen sprechen.

Angefangen hat die Sache aus meiner Sicht mit per Funk schaltbaren Zwischensteckern für Steckdosen. Vor wenigen Jahren war ich glücklich damit, als ich vom Bett aus mit einer ziemlich klobigen Fernbedienung das Licht im Zimmer ausschalten konnte. Und das mit einem Baumarkt-Set für einen Zehner. Der Spaß hielt aber nicht lange, da man von Woche zu Woche näher mit der Fernbedienung an den/die Empfänger gehen musste, damit diese reagieren.

IoT Version 0.0.0.1 ;)

Als es schließlich unerträglich wurde, musste eine Lösung her. Während sich meine Eltern für ein fertiges System von Homematic entschieden, wollte ich etwas eigenes, über das ich die volle Kontrolle habe. Meine Idee war zu dem Zeitpunkt eigene Komponenten - Schalter, Zwischenstecker, etc. - zu bauen und diese über eine Server-Anwendung zu verbinden. Im Prinzip habe ich genau dies auch umgesetzt. Oder anders gesagt: Ich setzte immer noch um. Da habe ich mir wohl etwas zu viel vorgenommen. Aber ich habe ja Zeit ;)

Den Anfang habe ich mit der Auswahl eines RaspberryPi als Server gemacht. Dabei war es zufällig genau der Zeitpunkt, als der RaspberryPi 3 vorgestellt wurde. Da ich mich mit Linux wenig auskenne und am liebsten in C# programmiere, war ich sehr glücklich damit, dass ich genau das auf dem Raspberry mit WindowsIoT tun könnte. Das es dabei eine Reihe an Einschränkungen geben würde.. naja das würde ich noch rausfinden.

Zusätzlich zum Server habe ich mich zeitgleich mit der Konzeption eines ersten WLAN-Zwischensteckers befasst. Ich möchte an dieser Stelle garnicht so viel dazu sagen, dafür wird ein späterer Blogpost herhalten müssen. Nur soviel: Ich habe einen Zwischenstecker gebaut, welcher auch funktioniert. Da ich allerdings eine wesentlich günstigere Lösung gefunden habe, bin ich davon abgekommen weitere Schalter dieser Art zu bauen.

Also zurück zur System-Konzeption. Diese sieht vor, dass sich Komponenten "Devices" zu einem Server verbinden. Bei erstmaliger Verbindung registrieren sich diese dort und teilen dem Server mit, welche Ein- und Ausgänge sie besitzen. Der Server vergibt an das Device eine eindeutige Identifikationsnummer, mit welcher es sich bei folgenden Verbindungen ausweisen kann.

Meine persönlichen Notizen zum Aufbau und zum Kommunikationsprotokoll

Die logische Verknüpfung von Ein- und Ausgängen erfolgt Server-Intern über Logiknetze. Diese liegen als Vorlage "Pattern" vor können beliebig oft instanziert werden. Jeder Instanz werden nun Verbindungen zwischen den Ein- und Ausgänge der Pattern mit den Ein- und Ausgängen von Devices zugeordnet.

Sendet nun ein Device eine Änderung eines Eingangs, so wird auf dem Server zunächst das entsprechende Device-Profil gesucht. Anhand dessen werden verknüpfte Logik-Instanzen gesucht. Deren Eingänge werden entsprechend der Verknüpfung aktiviert "getriggert". Die Instanz berechnet nun ihre eigenen Ausgänge anhand der hinterlegten Pattern neu. Gibt es eine Änderung eines Ausganges, so wird der neue Wert an verknüpfte Ausgänge von Devices übermittelt.

Schematischer Ablauf einer Trigger-Aktion

Die Programmierung der Pattern erfolgt dabei in einer eigenen Sprache über eine externe Verwaltungsanwendung. Diese ist nicht nur für die Programmierung, sondern auch für die Verwaltung der Pattern, der Instanzen, der Device etc. zuständig. Im Prinzip also für die gesamte Serververwaltung.

In Zukunft werde ich auf einzelne Bereiche näher eingehen, aber für heute soll es das gewesen sein.

Ich wünsche noch einen schönes Wochenende!

Freitag, 24. März 2017

Kauf dir doch eine!?

Hallo Zusammen,

In meinem ersten "gehaltvollen" Blogpost möchte ich von einem aktuellen Projekt berichten, welches ich vor kurzem begonnen habe. Dazu möchte ich zunächst erst einmal auf die Quelle der Projektidee verweisen. Diese stammt von Instructables und nennt sich "PlexiClock".
Für die Leute, die Instructables nicht kennen: Instructables ist eine Website, auf welcher Personen Anleitungen erstellen und veröffentlichen können. Diese Anleitungen haben keine thematische Begrenzung, somit gibt es von Cosplay über Technologie bis zu Kochen alles. Über den Newsletter dieser Seite bin ich auf das genannte Projekt "PlexiClock" aufmerksam gemacht worden und habe mich schließlich dazu entschlossen, ebenfalls eine solche Plexiglass-Uhr zu bauen.
 

Die Idee


Was kann denn nun so besonders an einer Uhr sein, dass man sie selbst bauen muss? Tja, diese Frage musste ich auch bei meinen Bekannten öfter beantworten, insbesondere bei denen, die beim Gespräch darüber mit  "Pff, kauf dir doch einfach eine Uhr!" antworteten. Nun, im Prinzip ist die PlexiClock nichts anderes als eine normale Digitaluhr mit 4 Ziffern, welche jeweils durch eine Sieben-Sement-Anzeige dargestellt werden. Die Besonderheit ist lediglich, dass die Uhr durchsichtig ist, da die Anzeige komplett aus Plexiglass besteht. Die visuelle Erscheinung der Ziffer entsteht dadurch, dass die in das Plexiglass eingravierte Ziffer von der Seite der Plexiglassscheibe angeleuchtet wird. Dies geschieht nun aber nicht für die komplette Ziffer, sondern für jedes der 7 Segmente. Jedes Segment befindet sich also auf einer eigenen Plexiglassscheibe und besitzt eine eigene LED zur Beleuchtung. Man benötigt also pro Ziffer 7 Plexiglassscheiben und 7 LEDs. Da vier Ziffern vorhanden sein sollen, werden insgesamt 28 Elemente von beiden benötigt.
 

Größenplanung


Soweit zur Theorie. Nun zur Praxis. Dafür musste ich festlegen, welche Größe die PlexiClock haben soll. Da die Uhr aus vier Sieben-Segment-Anzeigen besteht, habe ich also über diverse Elektronik-Shops verschiedene Größen von genannten Anzeigen rausgesucht, um das typische Verhaltnis zwischen Höhe und Breite zu ermitteln.

Unglaubliche Mathematik-Skills!
Dieses lässt sich im folgenden auf jede beliebige Größe skalieren. Da die PlexiClock meine aktuelle Wanduhr ersetzten soll, welche zwar seit Jahren einwandfrei läuft, aber nervig oft mit neuen Batterien gefüttert werden möchte, habe ich eine ungefähre Vorstellung, wie groß das Resultat werden soll. Um meine Vorstellung vorab zu testen, habe ich mir drei mögliche Größen auf eine Pappe gepinselt und mit der Wanduhr abgeglichen.

Größenvergleich Wanduhr

Die auf der Pappe aufgezeichneten Größen entsprechen Ziffernbreiten von jeweils 70, 80 bzw. 90mm. Da ich persönlich die größte Variante überdimensioniert empfunden habe, habe ich mich für die 80mm-Version entschieden.
 

Beschaffung


Woher bekommt man nun aber 28 Plexiglassscheiben in einer solchen speziellen Größe? Wenn man, wie ich, nicht die Lust dazu hat, sie sich aus großen Platten selbst auszusägen und dadurch möglicherweise unsaubere Kanten zu erhalten, bestellt man sie einfach im Internet!
Eine einfache Google-Suche lieferte auf Anhieb mehrere Anbieter für Plattenzuschnitt. Jedoch musste ich feststellen, dass die meisten Anbieter erst Größen ab 100mm*100mm anbieten. Tja, Glück für die wenigen Anbieter, welche auch kleinere Größen zuschneiden. Das günstigste Angebot habe ich von www.plattenzuschnitt24.de erhalten, welche pro Platte exakt einen €uro haben wollten. Dazu muss ich sagen, dass ich mir den Luxus von laserpolierten Kanten gegönnt habe, anstatt rohe Sägekanten zu wählen. Diese wären zum Preis von 81ct möglich gewesen, wobei andere Anbieter dies hätten unterbieten können. Zusätzlich habe ich noch jeweils zwei Streifen aus dem selben Material von jeweils 30mm*500mm und 40mm*500mm geordert, welche ich für den Sockel einplane. Diese Streifen werden vom genannten Anbieter als Fertigware vertrieben, wodurch sie sehr preisgünstig sind. Die Dicke aller Platten beträgt im übrigen 3mm, darauf gehe ich gleich weiter ein.

Parallel zur Materialauswahl habe ich mich auch nach passenden LEDs umgesehen. Die original PlexiClock verwendet einfarbige LEDs von nicht spezifizierter Größe. Da der Erbauer aber Plexiglass mit 2mm Dicke verwendet gehe ich davon aus, dass die LEDs ebenfalls so groß sind. Allerdings wollte ich keine einfarbigen LEDs. Ich will RGB! Das Problem? RGB-LEDs gibt es üblicherweise erst ab 5mm Durchmesser. Nimmt man diesen Wert als Scheibendicke, so ergibt sich eine Gesamtstärke von 35mm. Da sich die einzelnen Segmente der Anzeige hintereinander befinden, verschieben sie sich mit steigender Stärke. Da ich dies vermeiden wollte, habe ich nach Alternativen gesucht.
Abgesehen von ovalen 3mm-LEDs, welche im Vergleich nicht bezahlbar sind, konnte ich nur SMD-LEDs finden. Diese sind üblicherweise sehr viel kleiner als "normale" THT-LEDs. Dies ist sowohl Vor- als auch Nachteil, denn kleine LEDs ermöglichen zwar eine geringere Scheibendicke, lassen sich allerdings auch nichtmehr über integrierte Pins löten.

Trotz der erhöhten Löt-Schwierigkeit habe ich mich letztendlich für SMD-LEDs in der Größe 2.8mm*3.5mm entschieden. Dies liegt auch daran, dass der Preis von knapp 7,50€ für 500 Stück unschlagbar ist.

Und nun heist es für mich: warten auf die Lieferungen. Und da die LEDs aus China kommen, wird dies wohl noch ein paar Wochen dauern.

Blog gestartet

Hallo und Willkommen auf meinem Tech-Blog!


Mein Name ist Markus, Ich bin 22 Jahre alt und studiere Mikrotechnik/Mechatronik im zweiten Master-Semester. Nebenbei arbeite ich an einem an der Uni ansäßigen Forschungsinstitut.

Soweit zu meiner Person, nun zum durch diesen Post gestarteten Blog. Auf diesem möchte Ich in Zukunft über meine laufenden, zukünftigen und vergangenen Projekte berichten. Diese befassen sich meist mit Dingen aus den Bereichen der Informatik und  Elektrotechnik. Die Updates werden unregelmäßig erscheinen, je nachdem ob und wieviel Ich gerade an Projekten arbeite.

Nun aber genug gequatscht, viel Gerede war noch nie meine Stärke!