Arduino Webserver: Installation von php5 mit JSON & Sessions auf Arduino Yún

Ich muss es eingestehen: ich bin kein großer Freund von Python. Es ist zwar auf dem Yun vorinstalliert und läuft auch, aber für meine Anwendungen war es irgendwie nicht das richtige. Da fühle ich mich bei php schon mehr zuhause. Glücklicher weiße kommt Linino schon direkt mit opkg und ermöglicht so eine schnelle Installation von php.

Nach etwas Recherche habe ich die Befehle schnell gefunden. Hier also festgehalten für mich und die Nachwelt, alles um php5 auf dem Yun zum Laufen zu bringen. Und das sogar ohne jeden Neustart. ;)
[...]

Category: Arduino

CatFeeder Update 2: Bau des Futterbehälters

Der wichtigste Teil bei einem Fütterungsautomaten ist wohl der Futterbehälter selbst. Dieser stelle mich auch vor die größten Probleme. Musste ich doch in einer recht flachen Form möglichst viel Futter sowie die Mechanik zur Ausgabe unterbringen und dennoch genug Platz für die Elektrik und andere Bauteile über behalten. Meine Suche nach passenden Behältern und unterschiedlichen Mechaniken stellte sich nach kurzer Zeit als aussichtslos heraus und hielt für mich fest, dass ich wohl selber einen Behälter bauen muss.

Zur Ausgabe des Futters wurde ein Cerealienspender genommen. Das sollte ja auch für Katzenfutter funktionieren. Jan hat dies in seinem Projekt bereits genutzt und ist sehr zufrieden damit. Von Ihm habe ich auch ein paar andere Ideen einfließen lassen. Den Behälter selbst fertigte ich aus einem mit weißem Lack beschichteten Regalboden, welches ich aus dem Baumarkt geholt habe.

Der fertige Behälter hat ein Fassungsvermögen von etwa 4,2 Liter. Zum Vergleich, der Dispenser fasst etwa 1.1 Liter. Das sollte für ein paar Tage genügen.
[...]

Category: CatFeeder

CatFeeder Update 1: Molger auskleiden

Es ist früher Nachmittag. Die Sonne scheint. Das Wetter ist angenehm. Was gibt es also schöneres, als mit dem Dremel auf die Terrasse zu gehen und Acrylplatten zu schneiden? Nichts! So machte ich mich daran die Platten zur inneren Auskleidung von Molger anzupassen. Ich entschied mich 3mm starke, weiß/transparente, satinierte Acrylplatten zu verwenden, welche ich mir vorab besorgte.

Die innere Auskleidung hat mehrere Gründe. Zum einen natürlich die Optik. Die Schlitze lassen vom Inneren immer noch eine Menge durchblicken. Das möchte ich später vermeiden. Das leicht transparente und satinierte Material lässt nachher aber noch Licht durscheinen. Um etwas “ambient light” zu schaffen werden später im Inneren ein paar RGB-LED-Stripes angebracht, welche ich noch von einem anderen Projekt über habe, die dann durch die Schlitze scheinen sollen. Die Knöpfe und das Display werden blau beleuchtet sein, weshalb hoffentlich ein stimmiges Gesamtbild entsteht, wenn die LEDs im Inneren ebenfalls blau leuchten.
[...]

Category: CatFeeder

Projektstart: Katzenfütterungsautomat / CatFeeder

Schlaf ist wichtig! Besonders heilig ist mir dieser am Wochenende. Wer aber selber Pelzträger (aka “Katzen“) im Haushalt hat, wird wohlmöglich nachvollziehen können, dass es diesen komplett egal ist, ob man schläft oder nicht. Es hat auch samstags und sonntags zur selben Zeit wie in der Woche Futter zu geben! Freundlicherweise erinnern mich meine Katzen immer rechtzeitig daran, dass ich bald zum Füttern aufstehen müsse. Meist eine gute Stunde vorher.

Abhilfe muss her!

Mein alter Kollege und Freund Jan hat bereits ein ähnliches Projekt vor einiger Zeit realisiert. Praktisch genau was ich will, technisch und optisch müsste es aber verändert werden. Also entschloss ich mich, ein komplett eigenes Projekt draus zu machen und die bewährten Ideen aus Jan’s Catfeeder einfließen zu lassen.

Der “Arduino powered WiFi enabled Linux controlled CatFeeder” ist geboren! ;)
[...]

Category: CatFeeder

Lazy 0.1.16 erschienen

Die neuste Version meines Plugins Lazy für jQuery ist vorhin auf GitHub erschienen. Die Changelog dazu ist eher überschaubar. Neben einer etwas ausführlicheren Beschreibung auf GitHub kam hauptsächlich ein neues Feature dazu, welches hoffentlich praktisch ist.

Mit dem neuen Callback onFinishedAll wurde ein neues Event hinzugefügt, welches einmalig nach dem laden aller Bilder aufgerufen wird. Hierbei spielt es keine Rolle, ob alle Bilder korrekt geladen, oder Teile nur fehlerhaft geladen werden konnten.
[...]

Category: PHP / HTML / CSS / JS

HOWTO: Logger in Zend Framework 2 über Modul Config erstellen

Wer das Zend Framework kennt wird vermutlich auch schon Kontakt mit Zend\Log und dem Thema logging gehabt haben. Mit dem ZF2 wurden viele Dinge verändert und auch der Logger blieb davon nicht verschont. Leider lässt aber die Dokumentation aktuell noch zu wünschen übrig. Wer eine Logger-Instanz über die Modul-Config (modul.config.php) erstellen will, wird vermutlich das gleiche Problem wie ich bekommen, dass man keine wirklichen Informationen dazu findet. Die Optionen für ein Config-Array sind einfach nicht ausreichend erklärt oder überhaupt aufgeführt.

Nachdem ich die diversen Dateien aus dem Zend\Log durchgesehen habe, konnte ich weitgehend die Konfiguration nachstellen. Somit ist es im Endeffekt leicht möglich eine Instanz des Loggers komplett in der Konfigurationsdatei zu erstellen, ohne irgendwelche Einstellungen hardcoded abzulegen; wenn man weiß wie. :)
[...]

Category: PHP / HTML / CSS / JS

PHP gibt uns so viel mehr zurück: yield is here!

Was freue ich mich über das Feature in php 5.5: yield! Gut, klingt jetzt erst mal als Wort nicht sonderlich spannend. Es ist zugegeben auch nicht sehr umfangreich, aber für mich als Entwickler ist die Möglichkeit eine super Ergänzung.

Was macht man normalerweise, wenn man eine Liste an eine andere Funktion übergeben will? In gefühlt 98% der Fälle wird ein mit einer Schleife ein Array erstellt, in einem 1% macht man vielleicht ein Objekt draus und im übrigen Prozent der Fälle überlegt man es vielleicht doch anders zu machen. Der Nachteil ist natürlich generell, dass ein Array oder Objekt im Speicher liegt. Habe ich also Daten, die ich dann noch in ein Array/Object umpacke, um es in einem bestimmten Format an eine andere Funktion zu übergeben, habe ich gleich wieder neue Daten im Speicher liegen. Und jetzt kommt yield ins Spiel!
[...]

Category: PHP / HTML / CSS / JS

Arduino Yún Bridge nutzen für TCP Kommunikation über eigenen Port (YunServer / YunClient)

Mit einem Arduino über Netzwerk zu kommunizieren ist generell nichts Neues. Auch der Yun mit WLAN und Ethernet macht da an sich keine Ausnahme. Die bekannte Ethernet Library steht wie gewohnt auch auf dem Yun zur Verfügung. Zusätzlich dazu bietet der Yun aber mit YunServer und YunClient zwei neue Klassen, welche für Netzwerkkommunikation eingesetzt werden können. Beide gehören zur mit dem Yun eingeführten Bridge Library.

Und das sollte man auch durchaus in Betracht ziehen, denn die beiden Klassen sind bereits auf dem Yun vorhanden und belegen daher in einem Sketch keinen zusätzlichen Speicher. Bei größeren Sketches kommt man irgendwann an die Grenzen des verfügbaren Platzes, da sollte man sparen wo man kann.
[...]

Category: Arduino

Datum und Zeit via NTP bei Systemstart auf Arduino Yún aktualisieren

Der Arduino Yun besitzt von Haus aus die Möglichkeit die aktuelle Uhrzeit und das Datum via NTP abzugleichen. Das funktioniert eigentlich auch ganz gut. Nur leider läuft das Update nur sehr unregelmäßig.

Wenn man den Yun eine gewisse Zeit von der Stromversorgung trennt verliert er das Datum und die Zeit. Beim Start wird nicht immer direkt die aktuelle Zeit angefragt. Mit einem einfachen Befehl in einem Startskript kann man den Yun aber dazu bewegen, dieses möglichst schnell nach dem Start zu erledigen.
[...]

Category: Arduino

Arduino Yún mountet eure Ordner von SD Karte automatisch

Ein eher kleines, aber sehr nützliches Feature bringt der Arduino Yun von Haus aus mit. Bestimmte Ordnerstrukturen auf der SD Karte werden automatisch im System von Linino gemountet. Ohne weiteren Konfigurationsaufwand bekommt man so sehr schnell Zugriff an den wichtigsten Stellen. Bis jetzt weiß ich von zwei Ordnern die automatisch erkannt werden:

SD Ordner           gemountet unter
/arduino            /mnt/sd bzw. /mnt/sda1
/arduino/www        /www/sd

[...]

Category: Arduino