Holgip
Lt. Commander
- Registriert
- Dez. 2012
- Beiträge
- 1.779
Ich habe mich an eine kleine Beschreibung für mein Steckdosenprojekt gewagt. Vielleicht benötigt jemand auch so etwas.
Das ist mein erster Artikel. Wenn also noch etwas fehlt, bitte melden. Leider habe ich keine Bilder vom Aufbau der Leiste geschossen und möchte jetzt auch ungern die Leiste nochmal komplett aufschrauben. Habt bitte Verständnis dafür.
Eingeteilt habe ich den Bericht in folgende Abschnitte:
- Einleitung
- Hardware
- Mechanischer Aufbau
- Software
- Kosten
- Fazit
Fangen wir also an.
Einleitung:
Ein von einem anderen Projekt übrig gebliebener Raspberry Pi brachte mich auf die Idee, die Steckdosenleiste meines kleinen Homeservers zu automatisieren. Der Server ist ein Zotac ID14, woran ich insgesamt 4 USB Festplatten in 3 externen Gehäusen angeschlossen habe. Im Zotac werkelt eine SSD, die noch in 2 Partitionen unterteilt ist (BS und Daten).
Die letzten Jahre schaltete ich die Geräte einmal mit dem Hauptschalter der Leiste ein, hatte aber noch 3 Schalter in die Leiste integriert, mit denen ich die Festplatten einzeln schalten konnte.
Das wollte ich jetzt automatisieren, um von jedem der 5 PCs im Heimnetz den Server und die Festplatten zu schalten.
Die Hardware:
Die Steckdosenleiste ist eine etwas ältere mit Dosen, die im 90° Winkel angeordnet sind (etwa so wie diese: Link: http://www.voelkner.de/products/265870/Steckdosenleiste-5-fach-Plus-Anschliessbar.html). Alle Anderen mit 0° oder 45° sind nicht geeignet, da die Kontakte mit durchgehenden Metalleisten ausgeführt sind, während die 90°-Leisten einzeln verdrahtet werden.
Vornweg die übliche Warnung. Alle Arbeiten an 230V dürfen nur von jemanden ausgeführt werden, der dafür ausgebildet ist! Erstens kann es bei einem Kuzschluß ganz schön knallen und zweitens und viel wichtiger: LEBENSGEFAHR!
Klar war, dass ich insgesamt 4 Steckdosen schalten musste, also 4 GPIOs des Pi belegt werden. Eine Steckdose hängt direkt an 230V. Dort ist das Steckernetzteil für den Pi angeschlossen.
Als Stromverstärker für die GPIOs sah ich erst 4 Transistoren mit den entsprechenden Widerständen vor, stolperte dann im Internet aber über das ULN2003 IC, das normal für die Ansteuerung von Schrittmotoren verwendet wird. In diesem IC sind 8 sog. Darlington-Transistoren integriert, also mehr als genug für mein Vorhaben. Von Vorteil ist es, dass man zwischen Pi und dem ULN2003 keine Widerstände einzufügen braucht, da der Schaltstrom der Darlingtons sehr gering ist und die GPIOs kaum belastet werden.
Die Ausgänge des ULN2003 können direkt Relais schalten, benötigen also auch keine externen Bauteile mehr (außer der Freilaufdiode parallel zur Relaisspule).
Beim Durchblättern der Angebote für Relais stieß ich schließlich auf sog. Solid State Relais (SSR). Diese schalten, galvanisch getrennt, mit einer LED einen lichtempfindlichen Triac, der wiederum die 230V für die Steckdosen durchschaltet. Kostenmäßig geben sich normale Relais und SSR nicht allzuviel, wobei gesagt werden muss, dass SSRs nicht ganz die Ströme schalten können wie Relais. Dafür ist der Schaltvorgang nicht zu hören und die Bauform der SSRs wesentlich kleiner. Das war für mich der ausschlaggebende Grund, da die Elektronik -abgesehen vom Pi- in die alte Steckdosenleiste passen sollte.
Die SSR die ich mir ausgesucht habe (Sharp S202 S02) leisten mit entsprechender Kühlung bis zu 8A pro Stück (1840W), ohne Kühlkörper dürfen es maximal 2A (460W) sein. Alle meine Geräte zusammen haben bei Vollast eine Leistung von ca. 50W. Die SSRs können also ohne Kühlkörper betrieben werden.
Es gibt noch stärkere SSRs, die aber dann fast doppelt so teuer sind.
Zum Schutz vor Überspannungen hat jedes SSR noch einen 460V Varistor Parallel zu den Schaltausgängen erhalten. Zu besachten ist, dass die Varistoren so dicht wie möglich an den SSRs sitzen. Ich habe sie direkt an die Schaltausgänge gelötet.
Ach ja: Dieser SSR-Typ hat noch eine integrierte Nullpunktserkennung, d.h. dass der Triac nur schaltet, wenn die Wechselspannung gerade durch den Nullpunkt geht. Das verhindert Spannungsspitzen an den angeschlossenen Geräten.
Zur optischen Einschaltkontrolle dienen 4 LEDs, die direkt neben der jeweiligen Steckdose platziert sind. Die LEDs liegen in Reihe mit den Steuer-LEDs der SSR. Es sind also 8 Leitungen von der Platine zu den LEDs nötig. Um den Strom zu begrenzen wird noch ein 150Ohm-Widerstand in Reihe geschaltet. Die Freilaufdiode, die bei Relais notwendig ist, fällt hier natürlich weg.
Unbedingt beachten: Das ULN2003 hat invertierende Ausgänge, d.h. wenn ein GPIO auf 1 ist, bringt das IC eine 0 am Ausgang. Dementsprechend hängen die LEDs mit der Kathode am Ausgang des ULN2003, respektive am Vorwiderstand.
Schaltplan:
Mechanischer Aufbau:
Das IC, die Widerstände und die Pfostenleisten zum Anschluß des Pi, der LEDs und der SSRs sind auf einer kleinen Platine aufgebaut, die unterhalb der Schalteröffnung in der Steckdosenleiste sitzt. Die Öffnung selbst habe ich mit einem Stück Kunststoffplatte verschlossen. Die SSRs sitzen zwischen den einzelnen Steckdosen, damit die 230V-Verkabelung einigermaßen kurz wird. Alle Anschlüsse sind mit Schrumpfschlauch überzogen um die Berührungsgefahr so gering wie möglich zu halten (wobei man ja sowieso nie in eine eingeschaltete Steckdosenleiste greifen sollte). Auch die SSR selbst habe ich mit Silikonhauben gegen Berührung gesichert. Die Kühlplatte führt 230V.
Das Gehäuse des Pi habe ich mit Heißkleber und zwei 19" Lochschienen, die ich noch hatte, mit der Steckdose verbunden. Die elektrische Verbindung zwischen Pi und der Leiste erfolgt mit 2 4-poligen Flachbandkabeln, wobei jeweils 2 Kabel an +5V und an GND angeschlossen sind.
Software:
Den Pi betreibe ich mit Raspbian Jessie lite, da ich keine GUI benötige und das Ganze auf eine 2GB Micro-SD passen sollte. Als zusätzliche Programme habe ich Python, wiringPi und einen Apache-Server installiert. Angesprochen wird der PI über einen PC und PUTTY.
Die GPIOs zu programmieren habe ich in einem vorherigen Projekt schon gemacht. Die Steuerung wird über Python-Scripts erledigt, die dann von PHP-Scripts über einen Webbrowser gestartet werden können.
Da ich von PHP und Javascript wenig Ahnung habe, programmierte ich erst einmal ein ganz einfaches PHP-Script, das mir die Aufrufe der Python-Scripte ermöglichte. Ich wollte aber noch eine Kontrolle, ob die jeweilige Steckdose eingeschaltet ist und wandte mich deshalb an das Programmier-Forum hier (link!).
Die Anfrage war ein voller Erfolg. Besonders hervorgetan hat sich r15ch13, der mein Script so umschrieb, dass es keinen "Spaghetticode" mehr enthält und auch meine späteren Einfälle immer sehr gut umgesetzt hat. Die PHP, CSS und JS die ich hier veröffentliche sind also komplett von r15ch13 geschrieben. Vielen Dank nochmal an dieser Stelle!
Meine Anforderungen waren wie folgt:
- Die Software soll leicht bedienbar sein
- Jedes Gerät soll einzeln ein- und wieder ausschaltbar sein
- Wenn man eine Festplatte einschaltet, soll gleichzeitig der Server gestartet werden
- Wenn der Server ausgeschaltet ist, sollen alle Festplatten auch ausgeschaltet werden
- Es muss im Programm eine optische Rückkopplung geben, ob ein Gerät eingeschaltet ist
- Es soll davor gewarnt werden, wenn auf den Server oder eine Festplatte zugegriffen wird, um eine Beschädigung offener Dateien durch zu frühes Ausschalten zu verhindern.
Vor allem der letzte Punkt hat mir einiges Kopfzerbrechen gemacht, denn der Server weigerte sich beharrlich, eine "openfile"-Anfrage des Pi zu beantworten. Nun lasse ich den Server eine openfile-Datei schreiben, die dann auf den Pi kopiert wird und dort ausgewertet werden kann. Allerdings ist Windows beim Anzeigen der offenen Dateien etwas langsam, vor allem, wenn gar nicht mehr auf das Laufwerk zugegriffen wird, der Explorer auf dem Client aber immer noch auf ist, wird der Status der offenen Dateien nicht verändert. Man muss erst auf dem Client den Explorer schließen und erst nach einigen Minuten merkt das Windows auf dem Server, dass keine Dateien mehr geöffnet sind. Ein Nachteil, mit dem ich aber leben kann.
Die Scripte lade ich später hoch. Dummerweise habe ich zu früh auf "Veröffentlichen" geklickt und schließe das hier mit den Kosten und dem Fazit ab.
Kosten:
Wenn man alles neu kaufen muss sind zum einen der Pi selbst, zum anderen die Steckdosenleiste und die SSRs die größten Kostenfaktoren. Alle anderen Bauteile sind vernachlässigbar billig. Hier mal eine Kostenaufstellung:
Name Einzel Gesamt
Steckdosenleiste 37,95€ 37,95€ Völkner
Raspberry Pi B 27,90€ 27,90€ Reichelt
Netzteil für Pi 8,50€ 8,50€ "
Micro-SD Karte 8GB 3,20€ 3,20€ "
4x Sharp SSR S202 S01 5,35€ 21,40€ "
4x Isolierkappe 0,60€ 2,40€ "
ULN2003 0,29€ 0,29€ "
IC-Sockel 0,05€ 0,05€ "
Stift- u.Buchsenleisten 1,55€ 1,55€ "
4x Widerstand 150 0,04€ 0,12€ "
4x Varistor 460V, 0,6W 0,30€ 1,20€ "
4x LED 0,06€ 0,24€ "
Schrumpfschlauch ca. 1,00€ 1,00€ "
______________________________________________________
105,80€
Dazu kommen noch die Versandkosten. Hat man den Pi schon zu Hause, wird's natürlich entsprechend günstiger. Von der geforderten Leistung würde auch ein Pi Zero reichen, wenn der denn eine Ethernet-Schnittstelle hätte.
Der Preis ist nur geringfügig höher als die bei Reichelt angebotene Infrarot-Steckdosenleiste, aber man hat dafür individuell schaltbare Steckdosen und mir hat es mal wieder Spaß gemacht, mit Elektronik zu basteln.
Fazit:
Das Ganze läuft jetzt über zwei Wochen zu meiner vollen Zufriedenheit. Schwierigkeiten gab es bei der Hardware nicht. Nur die Software hätte ich alleine nicht hinbekommen.
Ich denke, dass das Projekt auch für Leute interessant ist, die keine PCs oder Festplatten schalten wollen. Die Scripts lassen sich gut an die jeweiligen Anforderungen anpassen.
Wenn man das Ganze mit Relais aufbauen will, kann man die LEDs parallel über die restlichen 4 Darlingtons des ULN2003 steuern lassen. Dann bekommen die Relais die vollen 5V zum Durchschalten.
Das ist mein erster Artikel. Wenn also noch etwas fehlt, bitte melden. Leider habe ich keine Bilder vom Aufbau der Leiste geschossen und möchte jetzt auch ungern die Leiste nochmal komplett aufschrauben. Habt bitte Verständnis dafür.
Eingeteilt habe ich den Bericht in folgende Abschnitte:
- Einleitung
- Hardware
- Mechanischer Aufbau
- Software
- Kosten
- Fazit
Fangen wir also an.
Einleitung:
Ein von einem anderen Projekt übrig gebliebener Raspberry Pi brachte mich auf die Idee, die Steckdosenleiste meines kleinen Homeservers zu automatisieren. Der Server ist ein Zotac ID14, woran ich insgesamt 4 USB Festplatten in 3 externen Gehäusen angeschlossen habe. Im Zotac werkelt eine SSD, die noch in 2 Partitionen unterteilt ist (BS und Daten).
Die letzten Jahre schaltete ich die Geräte einmal mit dem Hauptschalter der Leiste ein, hatte aber noch 3 Schalter in die Leiste integriert, mit denen ich die Festplatten einzeln schalten konnte.
Das wollte ich jetzt automatisieren, um von jedem der 5 PCs im Heimnetz den Server und die Festplatten zu schalten.
Die Hardware:
Die Steckdosenleiste ist eine etwas ältere mit Dosen, die im 90° Winkel angeordnet sind (etwa so wie diese: Link: http://www.voelkner.de/products/265870/Steckdosenleiste-5-fach-Plus-Anschliessbar.html). Alle Anderen mit 0° oder 45° sind nicht geeignet, da die Kontakte mit durchgehenden Metalleisten ausgeführt sind, während die 90°-Leisten einzeln verdrahtet werden.
Vornweg die übliche Warnung. Alle Arbeiten an 230V dürfen nur von jemanden ausgeführt werden, der dafür ausgebildet ist! Erstens kann es bei einem Kuzschluß ganz schön knallen und zweitens und viel wichtiger: LEBENSGEFAHR!
Klar war, dass ich insgesamt 4 Steckdosen schalten musste, also 4 GPIOs des Pi belegt werden. Eine Steckdose hängt direkt an 230V. Dort ist das Steckernetzteil für den Pi angeschlossen.
Als Stromverstärker für die GPIOs sah ich erst 4 Transistoren mit den entsprechenden Widerständen vor, stolperte dann im Internet aber über das ULN2003 IC, das normal für die Ansteuerung von Schrittmotoren verwendet wird. In diesem IC sind 8 sog. Darlington-Transistoren integriert, also mehr als genug für mein Vorhaben. Von Vorteil ist es, dass man zwischen Pi und dem ULN2003 keine Widerstände einzufügen braucht, da der Schaltstrom der Darlingtons sehr gering ist und die GPIOs kaum belastet werden.
Die Ausgänge des ULN2003 können direkt Relais schalten, benötigen also auch keine externen Bauteile mehr (außer der Freilaufdiode parallel zur Relaisspule).
Beim Durchblättern der Angebote für Relais stieß ich schließlich auf sog. Solid State Relais (SSR). Diese schalten, galvanisch getrennt, mit einer LED einen lichtempfindlichen Triac, der wiederum die 230V für die Steckdosen durchschaltet. Kostenmäßig geben sich normale Relais und SSR nicht allzuviel, wobei gesagt werden muss, dass SSRs nicht ganz die Ströme schalten können wie Relais. Dafür ist der Schaltvorgang nicht zu hören und die Bauform der SSRs wesentlich kleiner. Das war für mich der ausschlaggebende Grund, da die Elektronik -abgesehen vom Pi- in die alte Steckdosenleiste passen sollte.
Die SSR die ich mir ausgesucht habe (Sharp S202 S02) leisten mit entsprechender Kühlung bis zu 8A pro Stück (1840W), ohne Kühlkörper dürfen es maximal 2A (460W) sein. Alle meine Geräte zusammen haben bei Vollast eine Leistung von ca. 50W. Die SSRs können also ohne Kühlkörper betrieben werden.
Es gibt noch stärkere SSRs, die aber dann fast doppelt so teuer sind.
Zum Schutz vor Überspannungen hat jedes SSR noch einen 460V Varistor Parallel zu den Schaltausgängen erhalten. Zu besachten ist, dass die Varistoren so dicht wie möglich an den SSRs sitzen. Ich habe sie direkt an die Schaltausgänge gelötet.
Ach ja: Dieser SSR-Typ hat noch eine integrierte Nullpunktserkennung, d.h. dass der Triac nur schaltet, wenn die Wechselspannung gerade durch den Nullpunkt geht. Das verhindert Spannungsspitzen an den angeschlossenen Geräten.
Zur optischen Einschaltkontrolle dienen 4 LEDs, die direkt neben der jeweiligen Steckdose platziert sind. Die LEDs liegen in Reihe mit den Steuer-LEDs der SSR. Es sind also 8 Leitungen von der Platine zu den LEDs nötig. Um den Strom zu begrenzen wird noch ein 150Ohm-Widerstand in Reihe geschaltet. Die Freilaufdiode, die bei Relais notwendig ist, fällt hier natürlich weg.
Unbedingt beachten: Das ULN2003 hat invertierende Ausgänge, d.h. wenn ein GPIO auf 1 ist, bringt das IC eine 0 am Ausgang. Dementsprechend hängen die LEDs mit der Kathode am Ausgang des ULN2003, respektive am Vorwiderstand.
Schaltplan:
Mechanischer Aufbau:
Das IC, die Widerstände und die Pfostenleisten zum Anschluß des Pi, der LEDs und der SSRs sind auf einer kleinen Platine aufgebaut, die unterhalb der Schalteröffnung in der Steckdosenleiste sitzt. Die Öffnung selbst habe ich mit einem Stück Kunststoffplatte verschlossen. Die SSRs sitzen zwischen den einzelnen Steckdosen, damit die 230V-Verkabelung einigermaßen kurz wird. Alle Anschlüsse sind mit Schrumpfschlauch überzogen um die Berührungsgefahr so gering wie möglich zu halten (wobei man ja sowieso nie in eine eingeschaltete Steckdosenleiste greifen sollte). Auch die SSR selbst habe ich mit Silikonhauben gegen Berührung gesichert. Die Kühlplatte führt 230V.
Das Gehäuse des Pi habe ich mit Heißkleber und zwei 19" Lochschienen, die ich noch hatte, mit der Steckdose verbunden. Die elektrische Verbindung zwischen Pi und der Leiste erfolgt mit 2 4-poligen Flachbandkabeln, wobei jeweils 2 Kabel an +5V und an GND angeschlossen sind.
Software:
Den Pi betreibe ich mit Raspbian Jessie lite, da ich keine GUI benötige und das Ganze auf eine 2GB Micro-SD passen sollte. Als zusätzliche Programme habe ich Python, wiringPi und einen Apache-Server installiert. Angesprochen wird der PI über einen PC und PUTTY.
Die GPIOs zu programmieren habe ich in einem vorherigen Projekt schon gemacht. Die Steuerung wird über Python-Scripts erledigt, die dann von PHP-Scripts über einen Webbrowser gestartet werden können.
Da ich von PHP und Javascript wenig Ahnung habe, programmierte ich erst einmal ein ganz einfaches PHP-Script, das mir die Aufrufe der Python-Scripte ermöglichte. Ich wollte aber noch eine Kontrolle, ob die jeweilige Steckdose eingeschaltet ist und wandte mich deshalb an das Programmier-Forum hier (link!).
Die Anfrage war ein voller Erfolg. Besonders hervorgetan hat sich r15ch13, der mein Script so umschrieb, dass es keinen "Spaghetticode" mehr enthält und auch meine späteren Einfälle immer sehr gut umgesetzt hat. Die PHP, CSS und JS die ich hier veröffentliche sind also komplett von r15ch13 geschrieben. Vielen Dank nochmal an dieser Stelle!
Meine Anforderungen waren wie folgt:
- Die Software soll leicht bedienbar sein
- Jedes Gerät soll einzeln ein- und wieder ausschaltbar sein
- Wenn man eine Festplatte einschaltet, soll gleichzeitig der Server gestartet werden
- Wenn der Server ausgeschaltet ist, sollen alle Festplatten auch ausgeschaltet werden
- Es muss im Programm eine optische Rückkopplung geben, ob ein Gerät eingeschaltet ist
- Es soll davor gewarnt werden, wenn auf den Server oder eine Festplatte zugegriffen wird, um eine Beschädigung offener Dateien durch zu frühes Ausschalten zu verhindern.
Vor allem der letzte Punkt hat mir einiges Kopfzerbrechen gemacht, denn der Server weigerte sich beharrlich, eine "openfile"-Anfrage des Pi zu beantworten. Nun lasse ich den Server eine openfile-Datei schreiben, die dann auf den Pi kopiert wird und dort ausgewertet werden kann. Allerdings ist Windows beim Anzeigen der offenen Dateien etwas langsam, vor allem, wenn gar nicht mehr auf das Laufwerk zugegriffen wird, der Explorer auf dem Client aber immer noch auf ist, wird der Status der offenen Dateien nicht verändert. Man muss erst auf dem Client den Explorer schließen und erst nach einigen Minuten merkt das Windows auf dem Server, dass keine Dateien mehr geöffnet sind. Ein Nachteil, mit dem ich aber leben kann.
Die Scripte lade ich später hoch. Dummerweise habe ich zu früh auf "Veröffentlichen" geklickt und schließe das hier mit den Kosten und dem Fazit ab.
Kosten:
Wenn man alles neu kaufen muss sind zum einen der Pi selbst, zum anderen die Steckdosenleiste und die SSRs die größten Kostenfaktoren. Alle anderen Bauteile sind vernachlässigbar billig. Hier mal eine Kostenaufstellung:
Name Einzel Gesamt
Steckdosenleiste 37,95€ 37,95€ Völkner
Raspberry Pi B 27,90€ 27,90€ Reichelt
Netzteil für Pi 8,50€ 8,50€ "
Micro-SD Karte 8GB 3,20€ 3,20€ "
4x Sharp SSR S202 S01 5,35€ 21,40€ "
4x Isolierkappe 0,60€ 2,40€ "
ULN2003 0,29€ 0,29€ "
IC-Sockel 0,05€ 0,05€ "
Stift- u.Buchsenleisten 1,55€ 1,55€ "
4x Widerstand 150 0,04€ 0,12€ "
4x Varistor 460V, 0,6W 0,30€ 1,20€ "
4x LED 0,06€ 0,24€ "
Schrumpfschlauch ca. 1,00€ 1,00€ "
______________________________________________________
105,80€
Dazu kommen noch die Versandkosten. Hat man den Pi schon zu Hause, wird's natürlich entsprechend günstiger. Von der geforderten Leistung würde auch ein Pi Zero reichen, wenn der denn eine Ethernet-Schnittstelle hätte.
Der Preis ist nur geringfügig höher als die bei Reichelt angebotene Infrarot-Steckdosenleiste, aber man hat dafür individuell schaltbare Steckdosen und mir hat es mal wieder Spaß gemacht, mit Elektronik zu basteln.
Fazit:
Das Ganze läuft jetzt über zwei Wochen zu meiner vollen Zufriedenheit. Schwierigkeiten gab es bei der Hardware nicht. Nur die Software hätte ich alleine nicht hinbekommen.
Ich denke, dass das Projekt auch für Leute interessant ist, die keine PCs oder Festplatten schalten wollen. Die Scripts lassen sich gut an die jeweiligen Anforderungen anpassen.
Wenn man das Ganze mit Relais aufbauen will, kann man die LEDs parallel über die restlichen 4 Darlingtons des ULN2003 steuern lassen. Dann bekommen die Relais die vollen 5V zum Durchschalten.
Zuletzt bearbeitet:
(zu früh abgeschickt)