RasPiSwitch (8 Kanal IP Switch)

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo allerseits,

    Um mich kurz vorzustellen, ich heiße Harry, bin mitte 30, gelernter Energieelektroniker, im Service für Industrieanlagen tätig.

    Ich habe mir letztens einen Raspberry Pi zugelegt, bin also noch blutiger Anfänger, habe ein bisschen damit herumgespielt, mir sind verschiedene Verwendungszwecke eingefallen, evtl. als PC fürs Auto etc, ich habe dann aber einen anderen Einsatzzweck fürs erste Bastelprojekt ausgewählt, und ich möchte das hier kurz vorstellen.

    Ein 8 Kanal IP Switch mit

    • integriertem NAS, Schaltstatusanzeige über LED
    • selbstgebautes Relais-Treiber Board (über einen ULN2803A)
    • selbstgebautes RelaisBoard für 8 Relais mit einer theoretischen Belastbarkeit von 10A/Kanal
    • ein USB-Port nach aussen geführt
    • der Netzwerkanschluss nach aussen geführt
    • ein Taster um den RasPi ohne Login herunter zu fahren bzw zu starten


    das ganze eingebaut in ein 19" Gehäuse.

    Sieht dann im Groben so aus (Versuchsaufbau, deswegen so unordentlich :D):

    • 5V Netzteil (Versorgung für den RasPi und das Treiber Board)
    • RasPi inkl. USB Stick für die NAS Funktionalität
    • Relaistreiber Board mit dem ULN2803A und Anschluss für Reset-/Starttaster (nicht sichtbar)
    • Relaisboard mit Anschlüssen für 6,3mm Flachstecker für die Relaiskontakte
    • LED interface Board mit Vorwiderständen


    Softwaremässig ist bisher folgendes im Einsatz:

    • Raspbian Wheezy
    • WiringPi
    • Apache Webserver
    • PHP5
    • Samba
    • Ein Shutdownscript, damit man mit dem Taster herunterfahren kann.


    Prinzpiell funktioniert es folgendermassen:

    Apache/PHP stellt eine Webseite zur Verfügung, auf der man sich erstmal einloggen muß.

    Bisher funktioniert das über einen ganz billigen Login über Sessions, ohne verschlüsseltes Passwort oder SQL Server im Hintergrund, wer Sicherheitsbedenken hat, kann da noch verbessern.

    Hat man sich eingeloggt, bekommt man links einen Überblick über das System (von HIER "geklaut), oben kann man sich wieder ausloggen, in der Mitte sieht man den Ausgangsstatus der verwendeten 8 GPIO Ausgänge.

    Grüner "Button", Ausgang ist auf 0, Relais sind nicht geschaltet, roter Button, Ausgang ist geschaltet.

    Der RasPi schaltet die 3,3V Ausgänge raus, die gehen über Flachbandkabel auf das Treiber Board, werden dort vom ULN2803A auf 5V umgesetzt, gehen dann weiter über Flachbandkabel aufs Relaisboard, und schalten dort die 5V Relais. Das Flachbandkabel vom Relaisboard geht weiter zum LED Interfaceboard, dort wird das 5V Signal über Vorwiderstände angepasst, und es können LEDs über Klemmen angeschlossen werden.

    Das ganze Ding kann man nun als 8-Kanal IP Switch inkl. NAS, als 8 Kanal Zeitschaltuhr über cron-jobs oder ähnliches benützen.

    Wenn Interesse am Nachbau oder der Weiterentwicklung/Verbesserung besteht, erstelle ich gerne eine komplette Projektdoku.

    Wünsche Euch fröhliche Restweihnachten :thumbs1:

  • Ich denke, eine genauere Beschreibung wäre nicht schlecht.

    Ich würd zumindest an sich mal rein gucken um zu sehen ob etwas bei ist was ich mir "ausborge". Und ich denke anderen hier im Forum geht es zum teil ähnlich.

    Vorallem willst bei den Streifen oder Punktrasterplatinen bleiben oder mal auf geätzte Platinen zurückgreifen? Und hat die Wahl für ein 19" Gehäuse ein Festen Grund? Oder nur Geschmackssache? Also mal interessehalber wollte ich mal fragen.


    Michael

    Der Raspberry Pi ist schon ein schönes Spielzeug mit dem man einiges anfangen kann.

    :angel: :wallbash:

  • Hallo RaspiDo,

    Dann erstelle ich das mal, wenns vollends fertig ist, das Gehäuse muß ich noch fertig bauen.

    Die Lochstreifenplatine war jetzt ganz OK, um den Prototyp zusammen zu pfriemeln, prinzpiell lohnt es sich nicht die Relaisplatine selber zu machen, das war einfach ein Test, ob es funktioniert, aber wenn man alles zusammen rechnet, ist sie auf jeden Fall teurer als die 20€ Variante aus der Bucht.

    Für die Treiberplatine würde es sich lohnen, das braucht man ja immer wieder, aber ich habe auf Anhieb keine Möglichkeit eine Platine zu ätzen, bzw ätzen zu lassen, da müsste ich mich mal umschauen.

    Das 19" Gehäuse hab ich zum einen deswegen gewählt, weil ich bei der Variante jetzt die 230V auf Schukosteckdosen rausschalte, die haben ein Flanschmaß von 50x50mm, das ganze dann 8x, da wirds schwierig ein passendes Gehäuse zu finden. Wenn man das ganze über Klemmen und Kabel/Verschraubungen nach aussen führt, wenn man die Relaiskontakte "potentialfrei" benützt" oder es wirklich fest ins Haus einbaut, wäre es natürlich möglich das ganze kleiner zu gestalten.

    Ausserdem habe ich es gewählt, weil es aus Metall ist, und ich mir so ein paar PE Anschlußklemmen sparen kann, weil die nämlich unverschämt teuer sind, da kann ich das ganze auf eine Schraube führen, und somit das Gehäuse gleich mit erden.

    Und drittens gefällt mir der "Industrielook", einfach beruhigend robust :D

    Eignet sich wunderbar um seinen Monitor drauf zu stellen.

  • Mal eine Frage, wo hast du das Gehäuse her? Weil z.B. das von Pollin ist nicht sonderlich vernünftig.

    Und zu den Platinenhalter, dort gibt es Leisten zum drauf schieben von Conrad. Sind so graue Teilchen, hab leider nur keine Artikelnummer gerade zur Hand.


    Michael

    Der Raspberry Pi ist schon ein schönes Spielzeug mit dem man einiges anfangen kann.

    :angel: :wallbash:

  • Ich stell grad die Doku zusammen.

    Das ist ein "Adam Hall" Gehäuse, bestellt beim Musikhaus Thomann, die haben auch PA Zubehör, also die ganzen Musiksachen zum Rackeinbau

    http://www.thomann.de/de/adam_hall_87409v.htm

    Ja, Platinenhalter gibts sicherlich bessere, die sind auch vom Conrad, auf der einen Seite (hier an der Frontplatte) selbstklebend, auf der anderen Seite hab ich sie mit Sekundenkleber auf die Platine geklebt.

    Gruß
    Harry

  • Ich haette vermtl. mit Optokopplern galvanisch getrennt und dann mit Triacs die Last geschaltet. Ich wunder mich nur warum immer alle mit Relais schalten. Hab schon ueberlegt ob ich einen Denkfehler mache...

    Edit: Eine Alternative waeren noch Solid State Relais

    Einmal editiert, zuletzt von drops (29. Dezember 2013 um 11:00)

  • Ich vermute, weil Relais meist günstiger, bekannter und nicht so wärme ableiten, wenn man 230V bei bis zu 10A schalten möchte. Den wenn ich den Pi vor den 230V schützen wollen würden, würde ich höchst wahrscheinlich auch Relais nehmen. Die bekommt man schließlich für paar € und alternativ gibt es auch schöne Relais von Finder, welche es mit freiläuferdiode und Sockel für die Hutschiene gibt. Also sicher auswechselbar bei defekt.

    Bei Interesse such ich mal die Links raus, wo ich letztens noch welche kaufte.


    Michael

    Der Raspberry Pi ist schon ein schönes Spielzeug mit dem man einiges anfangen kann.

    :angel: :wallbash:

  • Also bei mir kommts vom Job, also in Industrieanlagen werden immer noch die meisten Sachen mit Relais/Schützen geschaltet, vereinzelt Optokoppler, und Triacs meistens nur, wenn was geregelt werden muß, eigentlich nie, wenn nur Binär geschaltet werden soll.

    Wäre aber auch noch ein "Umbau", wenn man Lichter damit schalten will, dann könnte man einen "IP Dimmer" draus bauen, über einen Schieberegeler den Zündwinkel der Triacs verändern.

    Klar, die Relais könnte man auch mit auf die Hutschiene klicken, und ne Klemmleiste auf die Relaiplatine, würde auch gehen.

    Ne Schutzbeschaltung mit Dioden hat der ULN2803A ja eigentlich mit drin.

    Einmal editiert, zuletzt von PAINKILLER (29. Dezember 2013 um 12:24)

  • Heute sind die letzten Bauteile gekommen, Plastikrändelmuttern für das Platinen Package und der Shutdown Taster.

    Kann erstmal als fertig betrachtet werden...

    So sieht es jetzt aus...


    Ansicht von hinten, Steckdosen, Zuleitung, Netzwerkanschluß:


    Anschluss der Durchführungen für Netzwerk hinten und USB in der Frontplatte


    Das Platinenpackage, jetzt sauber und isoliert mit Plastikschrauben verbunden.


    Die LEDs zur Anzeige der Ausgänge in der Frontplatte


    Der Shutdown/Start Knopf und der USB Anschluß in der Frontplatte


    Und das ganze mal komplett


    Nun wird evtl. die Frontplatte noch mit Folienaufklebern beschriftet, damit man auch weiß was da angezeigt wird. Die Schutzklappen für Netzwerk und USB Anschluss fehlen auch noch, aber dann ist es endgültig fertig... :)

    Wünsch Euch nen guten Rutsch ins neue Jahr, vielleicht habt ihr ja nun Zeit ein wenig zu basteln...


  • Nettes Projekt.

    Aber ich sollte mich um andere Pojekte weniger kümmern bzw. interessieren. So kommen meine eigenen Projekte irgendwie nicht sonderlich vorran =(

    Scherz, aber ich muss endlich mal gucken meine Projekte weiter zu bekommen.


    Michael

    Der Raspberry Pi ist schon ein schönes Spielzeug mit dem man einiges anfangen kann.

    :angel: :wallbash:

    Einmal editiert, zuletzt von RaspiDo (30. Dezember 2013 um 22:00)

  • Ich habe nun mittlerweile noch ein bisschen die "Software" aufgebohrt, und einiges verändert.

    Viellleicht nicht der sicherste oder schnellste Code, aber vielleicht kann jemand was davon gebrauchen.

    Mittlerweile ist folgendes verwirklicht:

    • Benutzerverwaltung und Login System mit Sessions und verschlüsselten Passwörtern in einer mySQL Datenbank
    • Es gibt "normal" Benutzer, und "SuperUser". Normalbenutzer können nur die für sie freigegebenen Ausgänge schalten, und das eigene Passwort ändern. Ein SuperUser kann Schaltberechtigungen ändern, Passwörter von anderen Benutzern ändern, ohne Kenntnis vom alten Passwort des Users haben zu müssen, Benutzer löschen und Benutzer hinzufügen
    • Die Systeminfo an der Seite wurde abgespeckt, die Geschichte mit dem Filesystem braucht an dieser Stelle kein Mensch.
    • Das ganze wurde mit Chrome und Firefox getestet, funktioniert runter bis zu einer Auflösung von 1366x768 ohne zu scrollen, ausser das AdminCP, die Tabelle ist zu breit, weil einige Infos ausgegeben werden.


    Aber ein paar Screenshots sagen mehr als tausend Worte:

    Nach der Installation von mySQL kann man phpMyAdmin installieren, damit man einfacher manuell auf die Datenbank zugreifen kann, ist kein Muß, man kann die Datenbank auch direkt über PHP anlegen.

    Falls phpMyAdmin installiert wird, sollte auf jeden Fall ein "sicheres" Passwort gewählt werden, und es so konfiguriert werden, das es von "aussen", also aus dem Internet nicht erreichtbar ist, das macht die Geschichte ein wenig sicherer.

    Es muß auf jeden Fall eine Datenbank und eine Tabelle darin angelegt werden.

    Ich habe sie folgendermassen genannt:

    • Datenbankname: raspiswitch
    • Tabellenname: credentials


    Das kann man aber machen wie man will, das kann man in der Datei "db.php" konfigurieren. Dort wird auch der Datenbankbenutzer inkl. Passwort abgelegt.

    Die Struktur der Tabelle muß folgendermassen aussehen:


    Die Tabellenspalten und ihre Funktion:

    • "ID" --> primary key, der automatisch selbst hochzählt, wenn ein User angelegt wird (der Benutzer "SuperUser" muß die ID 1 haben).
    • "username" --> Benutzername
    • "password" --> zugehöriges Passwort
    • "out1" --> Schaltberechtigung für Ausgang 1 (enthält 0 oder 1, bei 1 ist der dementsprechende Benutzer berechtigt den Ausgang zu schalten)
    • "out2" --> Schaltberechtigung für Ausgang 2
    • "out3" --> Schaltberechtigung für Ausgang 3
    • "out4" --> Schaltberechtigung für Ausgang 4
    • "out5" --> Schaltberechtigung für Ausgang 5
    • "out6" --> Schaltberechtigung für Ausgang 6
    • "out7" --> Schaltberechtigung für Ausgang 7
    • "out8" --> Schaltberechtigung für Ausgang 8
    • "superuser" --> enthält auch 0 oder 1, ist das Bit gesetzt, ist der demensprechende User als "Superuser" deklariert, und hat Zugang zum AdminCP inkl. Benutzer ändern/hinzufügen/löschen etc.


    loggt man sich als "Normal" User ein, sieht das ganze dann folgendermassen aus:

    Der eingeloggte User hat in diesem Fall nur Zugriff auf Ausgang 1, und der Link fürs AdminCP taucht nicht auf.

    loggt man sich als "SuperUser" ein, sieht es etwas anders aus:

    Jetzt hat man Zugang zum AdminCP (rechts oben), in diesem Beispiel sind alle 8 Ausgänge für den Benutzer "SuperUser" freigeschaltet, das muß aber nicht zwingend der Fall sein.

    Das AdminCP sieht so aus:

    Man sieht welcher Benutzer welche Ausgänge schalten darf, man kann die ganze Tabelle auch noch anders sortieren, in dem man auf den Spaltenkopf klickt, und man kann dann jeweils noch in "absteigender" oder "ansteigender" Reihenfolge sortieren, in dem man auf die Pfeile neben dem Spaltenkopf klickt.

    Rechts in der Tabelle die Administrationslinks für die Schaltberechtigungen, Passwort ändern oder Benutzer löschen.

    Die Adminlinks stehen für den Benutzer mit dem Namen "SuperUser" nicht zur Verfügung, damit man sich nicht aus versehen aus dem AdminCP aussperrt.

    Wenn man auf "Berechtigungen" editieren klickt, kann man die Schaltberechtigungen des jeweiligen Users einstellen und in der Datenbank abspeichern.

    klickt man auf "pw ändern", kann man als SuperUser das Passwort eines Normalusers verändern, ohne dessen altes Passwort kennen zu müssen.

    Ein Benutzer mit "superuser=1" in der Datenbank kann den Benutzer mit dem Namen "SuperUser" nicht verändern, dieser kann sein Passwort nur über den Link oben im Banner ändern, wenn er eingeloggt ist, und sein altes Passwort weiß.

    Passwort ändern als eingeloggter Normaluser sieht dann so aus:

    das alte Passwort muß eingegeben werden.

    Dann gibt es noch die Funktion "Benutzer anlegen"

    Hier muß der Benutzername, 2x das Passwort, um Tippfehler zu vermeiden, und die gewünschten Schaltberechtigungen angegeben werden.

    Die Schaltberechtigungen und das Superuser-Bit sind default auf 0, und müssen dediziert verändert werden, alls man das Formular abschickt, ohne etwas zu verändern.

    Als letztes besteht noch die Funktion "Benutzer löschen"

    Es geht eine zweite Seite auf, auf der man mit einer Checkbox den Löschvorgang bestätigen muß.

    Ist dies der Fall, und wird der Button "User löschen!" geklickt, fliegt der gewählte Benutzer unvermittelt aus der Datenbank.

    Ich habe es einigermassen durchkommentiert, ich hoffe man kommt klar damit, falls es überhaupt jemand verwenden möchte...

    Was evtl. noch verwirklicht werden soll:

    • Eine "Browserweiche", das die Seite auf Mobilgeräten (Tablet/Handy) anders aussieht
    • die "Zeitschaltuhren" Funktion ermöglichen, CronJob Dateien übers Web editieren
    • logging in die Datenbank (Welcher User mit welcher IP hat welchen Eingang wann geschaltet)
    • Tabelle des AdminCPs noch mit CSS so darstellen, das jede zweite Teile eine andere Farbe hat, um die Lesbarkeit zu verbessern.

    Hier die Webseite(n)

    rasiswitch.zip

    Gruß
    Harry

    Einmal editiert, zuletzt von PAINKILLER (20. Januar 2014 um 20:03)

  • Hallöchen ...

    Respekt, ich kann mich eigentlich nur wiederholen: saubere Arbeit, super genacht!

    Und danke für die Sourcen - ich denke, da gibts sicherlich den einen oder anderen, der das brauchen kann.

    Ich wünsche Dir noch eine schöne Zeit und noch viel Spass mt Deinem RPi,
    -ds-

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!