Lichtsteuerung Teil 3: Bus / Firmware

Ein Thema hätten wir noch: Es gibt Hardware und ein tolles Webinterface, aber wie kommen die Signale dann vom Webinterface zum Schieberegister? Und was macht man, wenn man feststellt, dass man neben Lampen auch noch RGB-Streifen, 7-Segment-Anzeigen und Weiteres ansteuern möchte?

Ohne besondere Vorkehrungen passen nämlich nicht sehr viele Geräte an einen RasPi: Es gibt 10-12 nutzbare GPIO Pins, d.h. bei 2 Pins (Clock + Data) pro Endgerät ist Platz für 5-6 Geräte. Wenn man das Taktsignal gemeinsam benutzt, werden daraus sogar 9-11.
Das mag ausreichen, hat aber immer noch das Problem, dass es nicht skaliert und man für jedes neue AVR-Board ein zusätzliches Kabel vom RasPi bis zum Board ziehen muss.

Also: Warum nicht ein Datenbus?
„Lichtsteuerung Teil 3: Bus / Firmware“ weiterlesen

Lichtsteuerung Teil 2: Software

Nachdem der letzte Eintrag nur ein paar Hardwaredinge beleuchtet hat, geht es jetzt um die Software, genaugenommen das Webinterface und ein paar Zusatzskripte.
Die Dateien liegen wie alles andere im dorfmap repository und einige Helfer in dorfmap-deb.

Weboberfläche

dorfmap ist Perlcode mit Mojolicious. Zeigt im Browser einen Grundriss des Chaosdorf an und verteilt darauf Symbole für Lampen, Drucker, Türstatus und weitere potentiell interessante Dinge. Die Koordinaten der Geräte sind als Pixel-Offsets (ja, eigentlich möchte man relative Angaben benutzen ;-) ) zusammen mit Steuerungsfoo in einer coordinates-Datei angegeben.

Status anzeigen

Ausgelesen wird entweder direkt aus dem GPIO-Pin (per /sys/class/gpio) oder Caches für die Schieberegister in /tmp. Einige Sonderfälle (z.B. Hosts, die nicht steuerbar sind) werden von einem separaten Skript alle zwei Minuten überprüft und zwischengespeichert.

Status ändern

Per Default wird getoggelt, d.h. ein Klick auf eine eingeschaltete Lampe schaltet sie aus und ein Klick auf eine ausgeschaltete Lampe schaltet sie ein. Einzige Ausnahme ist bei uns die Außenbeleuchtung, die anhand der Tageszeit automatisch gesteuert wird, so dass die dorfmap nur die Automatik ein- bzw. ausschaltet.

API

Ist auch vorhanden, in JSON und plaintext. Dazu bietet sich die
Dokumentation im Wiki an.

Das Webinterface ist inzwischen recht umfangreich, aber einigermaßen portabel. Angepasst werden müssen in erster Linie der Grundriss und die coordinates-Datei, und im Falle von Schieberegistern / anderen Konstruktionen, die nicht direkt auf GPIO-Pins zugreifen, noch die system-Aufrufe in index.pl (avrshift-donationprint etc.)

C++-User-Group Treffen im Chaosdorf am Mi, 17. April 2013

Am Mi. den 17. April trifft sich die C++ User-Group NRW und Interessierte zu einem Themenabend zu C++.

Diesmal gibt es ein Highlight: Eine Videoschaltung und Gespräch mit dem C++ Committee!

Ab 19 Uhr beginnt das Treffen im Chaosdorf, die Videoschaltung beginnt dann um ca. 20 Uhr.