Tech, Code, Gadgets, BBQ & More

PHP: yield is here!

Und gibt uns so viel mehr zurück ...

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!

Mit der neuen Rückgabeart kann prinzipiell return ersetzt werden, yield gibt dann sequenziell Daten zurück. In Schleifen verwendet können so einfach, und vor allem ohne den Speicher zu belasten, Daten zurückgegeben und weiter verarbeiten.

read more ...
Share:

Arduino Webserver

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

Ich muss es eingestehen: ich bin kein großer Freund von Python. Es ist zwar auf dem Yún 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 Yún zum Laufen zu bringen. Und das sogar ohne jeden Neustart. ;)

read more ...
Share:

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.

read more ...
Share:

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 für meinen CatFeeder 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.

read more ...
Share:

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! ;)

read more ...
Share:

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.

$('img').lazy({
  onFinishedAll: function() {
    console.log('we're finished here!');
  }
});
read more ...
Share:

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. :)

read more ...
Share:

Arduino Yún Bridge nutzen für TCP Kommunikation

über eigenen Port mit YunServer und YunClient

Mit einem Arduino über Netzwerk zu kommunizieren ist generell nichts Neues. Auch der Yún mit WLAN und Ethernet macht da an sich keine Ausnahme. Die bekannte Ethernet Library steht wie gewohnt auch auf dem Yún 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 Yún eingeführten Bridge Library.

Und das sollte man auch durchaus in Betracht ziehen, denn die beiden Klassen sind bereits auf dem Yún 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.

Für die Verwendung von YunServer und YunClient gibt es grundlegend zwei Möglichkeiten. Einmal die vorkonfigurierte Lösung über Port 5555 und der REST Api, sowie zum anderen die etwas komplexere Möglichkeit der direkten TCP Verbindung, welche auch über einen eigenen Port erfolgen kann. Im Folgenden möchte ich beide Ansätze kurz vorstellen und erläutern. Gerade bei der TCP Variante bin ich selbst auf einige Probleme gestoßen, bis diese wie gewünscht funktionierte.

read more ...
Share:

Datum und Zeit via NTP auf Arduino Yún aktualisieren

inkl. Aktualisierung bei jedem Systemstart

Der Arduino Yún 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 Yún 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.

Hierzu muss nur mit einem Editor wie z.B. vi die Datei /etc/rc.local bearbeitet werden. Fügt man die folgende Zeile dort ein, wird bei jedem Systemstart die aktuelle Zeit vom angegebenen NTP Server abgefragt. So hat man auch direkt nach dem Start immer korrekte Zeiten und Daten zur Verfügung.

ntpd -qn -p 0.openwrt.pool.ntp.org
Share: