Autor: Daniel Kern (eisbehr)

Es geht innen weiter!

Obergeschoss, Dachboden, Fliesen, Heizung, Fensterbänke, ...

Da die Arbeiten am Außenbereich aus Sicht des Bauunternehmens fast abgeschlossen sind, geht es innen immer weiter voran. Mittlerweile wurde der Ausbau des Dachbodens abgeschlossen und schon alle Rigips-Platten dort und im Obergeschoss als Vorbereitung für den Maler verspachtelt. Passend dazu habe ich auf dem Dachboden schon ein Lukenschutzgeländer angebracht. Da ich den Dachboden selbst ausbauen möchte steht für mich als nächstes schleifen und streichen der Wände, sowie verlegen des Fußbodens an.

Inzwischen haben wir auch unsere Hausanschlüsse bekommen. Gas, Wasser, Strom und Telefon. Dank dem freundlichen Herren von den Stadtwerken auch genauso, wie ich es gerne wollte. Ich bin froh, dass nun alles in die kleine Nische gepasst hat.

read more ...
Share:

Die Terrasse steht!

Den Brückentag gut genutzt ...

Pünktlich vor dem verlängerten Wochenende kam die Lieferung mit der neuen Terrasse an. Zwei Wochen eher als geplant. Also habe ich die Zeit genutzt und diese direkt aufgebaut.

Weil ich mit meiner bisherigen Terrasse aus Aluminium super zufrieden war, habe ich einfach die gleiche Terrasse wieder genommen. Never change a running system. ;) Das System lässt sich sehr einfach aufbauen und ist fast Narrensicher. Aufnahme an die Wand schrauben, Regenrinne ausrichten, Träger dazwischen schrauben - fertig ist die Terrasse.

read more ...
Share:

Innenwände, Fußböden und Carport

Alle Wände sind verputzt und der Estrich liegt

Endlich wird es etwas ordentlicher im Bau! Wurde ja auch mal Zeit, das mehr Schmutz beseitigt, als neuer gemacht wird. ;)

In den letzten zwei Wochen wurden alle Innenwände verputzt, welche bei dem perfekten Wetter auch schon gut trocknen konnten. Außerdem wurde der Estrich vor dem langen Wochenende noch eingebracht. Dafür musste vorher natürlich noch die Isolierung sowie die Fußbodenheizungen überall verlegt werden. Auch die Bodenabläufe im Technikraum und HWR wurden dafür noch eingesetzt. Nun sieht alles doch gleich schon viel ordentlicher aus.

read more ...
Share:

Es ist viel passiert!

Eine Zusammenfassung

Nachdem der wirklich kalte Winter uns vier Wochen im Plan nach hinten geworfen hat, ging es nun wirklich sehr gut voran. Viele Firmen waren die letzten Wochen zeitgleich am Bau und haben eine Menge geschafft. Da es im Detail zu viel geworden wäre, um alles hier zu erklären, gibt es diesmal eine schnelle Zusammenfassung ...

read more ...
Share:

Das Dachgeschoss ist komplett gemauert

Und die Giebel sind geschlossen

Nach der Winterpause ging es im Dachgeschoss weiter. Bis zu diesem Zeitpunkt gab es in der oberen Etage noch keine Räume und Wände. Mittlerweile ist aber alles fertig und man kann sich die Räume endlich besser vorstellen. Der Platz scheint mehr als ausreichend und die Aufteilung gefällt uns glücklicherweise immer noch. ;)

Das Badezimmer haben wir spontan nochmal komplett umgebaut. So sitzen Dusche und Toilette nun an ganz anderen Stellen im Raum, was uns wesentlich besser gefällt und auch für mehr Platz im Raum sorgt. Dies war zum Glück alles ohne große Probleme möglich, da die Rohre und Anschlüsse günstig lagen.

read more ...
Share:

Custom content post procession for TYPO3

Compress or pretty print HTML output by your own

There are many HTML compression extensions for TYPO3 in the TER. Many of them aren't maintained anymore or just have a huge overhead, you will mostly not need for anything. So why not build a content compression by your own?

It's pretty easy to implement. Basically it just require the use of two Hooks from tslib/class.tslib_fe.php. The Hooks are called contentPostProc-all and contentPostProc-output. The first one handles normal pages with cached output, the second one does the same, just for uncached pages with COA or USER_INT objects. This Hooks will be bind to a class and function of your choice in ext_localconf.php of your extension.

read more ...
Share:

Zend Mail has problems with multiple BCC recipients

Reason and Workaround

In a project, we've discovered some strange behavior of Zend\Mail while trying to send a single message to multiple bcc recipients. If addressed multiple bcc (or even cc) recipients, only the first one would get the message delivered by the mail server. It took us quite a long time to figure it out and found a solution.

What Zend\Mail does

Well, to understand what Zend-Mail does in background let's assume a simple Message object, like this:

use Zend\Mail;

$mail = new Mail\Message();
$mail->setFrom('test@example.org', 'Sender\'s name');
$mail->addTo('daniel@example.com', 'Name of recipient');
$mail->setSubject('Test Subject');
$mail->setBody('This is the text of the email.');

$mail->setBcc([
    'bcc_recipient_one@example.com',
    'bcc_recipient_two@example.com',
    'bcc_recipient_three@example.com',
]);

$transport = new Mail\Transport\Sendmail();
$transport->send($mail);
read more ...
Share:

Homematic CCU spricht jetzt mit Philips Hue

Anleitung, erste Schritte und Nutzung mit TinyMatic/HomeDroid

Seit dem letzten Update am 09.01.2018 für die CCU 2 auf Version 2.31.23 unterstützt Homematic nun auch direkt Philips Hue. Bisher konnte man lediglich Osram Lightify direkt über die Zentrale steuern. Diese Lücke wurde nun endlich geschlossen und somit habe ich mir mal genauer angesehen, wie eQ-3 dies umgesetzt hat. Erwähnt sei an dieser Stelle noch, dass der Hersteller die Hue-Integration noch als beta angibt.

read more ...
Share:

Pünktlich zu Weihnachten: Das Dach ist drauf!

Und die Werkstatt nimmt Gestalt an ...

Genau passend vor Weihnachten wurde das Dach noch gerichtet! Nachdem es aufgrund von schlechtem Wetter eine Woche zu Verzug gekommen war, sind wir froh, dass es doch noch vorher geklappt hat. Bei immer noch viel Regen konnte das Gestell und der Friesengiebel aber glücklicherweise noch aufgestellt werden.

So lässt sich langsam wiedermal mehr erahnen, wie das Haus nachher aussehen wird. Außerdem können die inneren Wände und Böden hoffentlich schon etwas trocknen. Auch wenn leider noch nicht alle Außenwände im oberen Stock komplett fertig sind und somit dort noch mehr Regen reinkommen wird.

read more ...
Share:

Zwischendecke und Außenmauern sind fertig

Es geht mit Carport und Klinker weiter

Die Zwischendecke hatte gerade mal ein Wochenende Zeit zu trocken, schon geht im Dachgeschossen mit den Mauerarbeiten weiter. In diese Woche konnten wir das erste Mal über die Treppe in die obere Etage gehen. Es ist immer wieder ein tolles Gefühl, wenn man das erste Mal in seinem Haus steht und sich nach und nach immer mehr vorstellen kann, wie es wird.

Die äußeren Wände im oberen Geschoss wurden bereits gesetzt und die Säulen für den Friesengiebel und Auflagen für das Dachgestell wurden betoniert. Somit kann dort erstmal nicht weitergemacht werden, bis das Dach drauf ist. Dieses soll in einer Woche gerichtet werden, sodass es hoffentlich pünktlich zu Weihnachten steht. Daumen drücken!

read more ...
Share:

Erdgeschoss, Treppe, Klinker und Zwischendecke

Die Mauerarbeiten im Erdgeschoss nähern sich dem Ende

Nach einer sehr regnerischen Woche ging es endlich wieder mit großen Schritten weiter! Die Mauerarbeiten im Erdgeschoss sind im inneren soweit abgeschlossen. Alle Wände stehen und alle Öffnungen für Fenster und Türen sind vorhanden. Zwischenzeitlich wurde außen schon angefangen mit dem Klinker, welcher in der letzten Woche angeliefert wurde.

Am Mittwoch wurde die Filigrandecke aufgelegt, welche am Donnerstag bereits verschalt wurde. Der Elektriker und die Handwerker für die Wohnraumbelüftung waren auch direkt da und haben alle Kabel und Rohre in die Zwischendecke eingebracht, so dass diese noch am selben Tag Betoniert werden konnte. Ebenfalls in der letzten Woche wurde die Schalung für die Treppe eingesetzt, welche nun zusammen mit der Deckenplatte ausgegossen wurde.

read more ...
Share:

Die ersten Mauern werden gestellt

Man erkennt erste Umrisse und Fenster

Bisher läuft fast alles nach Plan weiter. Am Montag wurde die Bodenplatte komplett abgeklebt. Zum Glück spielte das Wetter mit, so dass gleich alles gemacht werden konnte, und nicht nur die Stellen wo gemauert wird. Am Dienstag ging es dann direkt mit den ersten Mauern los. Langsam kann man sich die ersten Sachen besser vorstellen und man bekommt ein Gefühl für die Größen. Bisher kennt man alles ja nur vom Papier.

Aber es muss ja auch mal was nicht klappen: Ende letzter Woche wurde mitgeteilt, dass der ausgesuchte Klinker nicht vor März 2018 lieferbar ist! Das war erstmal ein Schock, war der Klinker doch eigentlich schon lange vor dem Haus ausgesucht. Es blieb nichts Anderes übrig, als möglichst schnell einen Ersatz zu finden. Ein paar Alternativen die wir schon eher im Auge hatten waren auch alle nicht verfügbar. Hinzu kam das Problem, dass wir den Stein schön zu nächster Woche benötigen. Also nicht sonderlich viel Zeit.

read more ...
Share:

Erdarbeiten und Bodenplatte: Erledigt!

Endlich ist es eine Baustelle

Seit letzter Woche ist endlich eine richtige Baustelle auf unserem Grundstück zu erkennen!

Am Mittwoch haben wir die Grobabsteckung des Hauses und der Anbauten gemacht, so dass Donnerstagfrüh der Bagger anfangen konnte, den schwarzen Boden abzutragen. Hierbei hatten wir Glück, da nicht sehr tief ausgehoben werden musste. Es waren lediglich 80cm bis 1m Tiefe bis zum Baugrund. Das ist alles noch im Rahmen gewesen.

Am Freitag waren der Bagger und die LKWs fleißig dabei, dass Loch wieder mit schönem weißen Sand aufzufüllen. Damit waren am Freitag die Erdarbeiten auch schon beendet und wir hatten einen schönen Sandkasten.

read more ...
Share:

Der Bauantrag wurde genehmigt!

Es kann losgehen ...

Ich weiß, der Titel sagt es schon, aber ich möchte mich wiederholen: Der Bauantrag ist genehmigt! ;)

Nach ganz genau 14 Tagen haben wir die Freigabe vom Bauamt erhalten und können nun endlich anfangen. Wir sind wirklich froh, dass es jetzt so schnell ging mit dem Antrag. Und das obwohl wir sogar noch ein paar Informationen nachreichen mussten. Es gab zusätzlich keine weiteren Vorgaben, weshalb wir unser Häuschen genauso bauen können, wie wir es geplant haben.

Bereits nächsten Mittwoch geht es mit den Erdarbeiten los! Jetzt beginnt langsam der wirklich spannende Teil ...

read more ...
Share:

How to create an internal URI in TYPO3

Sometimes you want to generate TYPO3 internal URIs programmatically. Now you could try to create the URL manually on your own, or use the UriBuilder class. This handy tool is pretty neat to create any kind of internal URI. In a controller this class is available by $this->getControllerContext()->getUriBuilder(). If you want to use the UriBuilder somewhere else, you need to load an instance of the class by the ObjectManager.

$objectManager = 
  GeneralUtility::makeInstance(\TYPO3\CMS\Extbase\Object\ObjectManager\ObjectManager::class);
$uriBuilder =
  $objectManager->get(\TYPO3\CMS\Extbase\Mvc\Web\Routing\UriBuilder::class);

When you have access to an instance of the builder, it's pretty straight forward from now on. The class has a bunch of simple setters, to control the generation of the URI. Best practice is to reset all the options of the builder on start of every new URI creation.

read more ...
Share:

Der Bauantrag wurde gestellt

Und das Bauschild steht ...

Nun ging es doch ziemlich schnell. Nachdem wir unser Häuschen auf dem Papier soweit fertig hatten, wurde der Bauantrag erstellt und wirklich von allen Beteiligten sehr schnel in die Wege geleitet. Heute haben wir diesen dann zum Bauamt des Kreises gebracht. Nun sind wir gespannt, wie lange es wohl dauern wird und ob es was zu beanstanden geben wird. Warten wir ab ...

Mittlerweile hat unser Bauunternehmen auch schon mal ihr Bauschild auf unserem Grundstück positioniert. Werbung ist halt für alle wichtig. ;) Nun sieht es sogar schon etwas nach Baustelle aus.

read more ...
Share:

Overwrite the default layout in TYPO3

I'm pretty sure that many people search for this thing already. So did I. It took me quite a lot time to figure out, how to overwrite the default template in TYPO3 8.7. This layout comes with some annoying wrappings, like the new frames. So you may want to remove them too. When you know how, it's really easy to do. Just add a small part to your TypoScript setup.

lib {
  contentElement {
    layoutRootPaths {
      10 = EXT:page/Resources/Private/Layouts
    }
  }
}
read more ...
Share:

Wir haben ein Grundstück gekauft!

Ab geht's aufs Land ...

Vor gut sechseinhalb Jahren habe ich mein jetziges Haus gekauft und komplett renoviert. Damals habe ich fast alles in Eigenleistung und mit der Hilfe von Familie und Freunden gemacht, was insgesamt gut eineinhalb Jahre gedauert hat. Es gefällt uns immer noch sehr gut, nur wird es uns auf Dauer zu klein hier werden. Also haben wir langsam einfach mal nach Alternativen Ausschau gehalten. Nicht explizit gesucht, sondern einfach nur ein wenig die Augen offengehalten.

Meine (baldige) Frau kommt aus einem kleinen Nachbardorf. Und genau dort haben wir mitbekommen, dass es noch freie Baugrundstücke gab. Von den noch vorhandenen sechs Grundstücken waren zwei schon reserviert und von den verbleibenden hat uns nur eines sehr gut gefallen. Also haben wir uns kurz beratschlagt und waren uns recht schnell einig: das hätten wir gerne! So haben wir das Grundstück bei der Stadt reserviert. Das konnte man sehr unkompliziert und kostenlos für drei Monate lang machen. Diese Zeit wollten wir erstmal nutzen, um zu sehen, ob und wie wir dort überhaupt ein Haus bauen könnten.

read more ...
Share:

Ausführliches Review zur Schneidbox

Buche, Nussbaum & Kunststoff

Ich möchte euch ein kleines Review zur Schneidbox schreiben. Ich hoffe es gefällt euch. Viel Spaß!

Einleitung

Vielleicht hat es der ein oder andere mitbekommen gehabt, dass ich vor einiger Zeit hier im Forum zu meinen neuen Messern ein entsprechendes Schneidbrett gesucht habe. Bei diversen Kochkursen habe ich Schneidbretter, ähnlich der Cleenbo und Continenta, gesehen und war direkt davon angetan, dass es hier ein Fach für Abfälle gibt. Sowas wollte ich auch!

Allerdings bekommen diese Schneidunterlagen oft schlechte Bewertungen bei Amazon, da sich diese verziehen. Oftmals konnte die Schublade nicht mal mehr verwendet werden, weil so stark verzogen. Das wollte ich in keinem Fall! Mir waren schon vor einiger Zeit die Schneidbretter von Cuttworxs aufgefallen, welche mir gut gefallen haben. Aber mal ehrlich, der Preis ist wirklich utopisch in meinen Augen. Klar, Entwicklung, Material kosten Geld und dran verdienen muss man auch. Allerdings finde ich dennoch, diese Teile sind überteuert und dann in der Handhabung nicht mal sehr praktisch (z.B. der untergestellte GN-Behälter).

read more ...
Share:

How to fully revert the most recent git commit

without using rebase

Sometimes, when I was too stupid to change the git configuration and pushed a commit with the wrong credentials again, I need to revert the most recent commit completely. And every time I have to do this, I need to search for the correct command.

So, for a short note: with the command below the last commit will be erased completely. Unlike a rebase, the commit can't be found in any branch from now on. More information can be found in this great post on Stack Overflow.

git reset --hard HEAD~1

Just great for all kind of mistakes. ;)

Share:

Counter Node für Node-RED

node-red-contrib-counter

Es gibt wirklich unzählige Nodes als Erweiterung für Node-Red. Was es bisher aber nicht gab, war ein einfacher Zähler für Nachrichten-Pakete. Und genau sowas habe ich für mein Projekt benötigt. Also was blieb mir anderes über, als kurzer Hand eine solche Node selber zu schreiben?! ;)

Die Node ist mittlerweile öffentlich auf GitHub, npm und über die offizielle Node-Sammlung verfügbar und kann somit wie jede andere Node installiert werden.

npm install node-red-contrib-counter
read more ...
Share:

Why is the 'load' event not beeing executed after updating to jQuery 3?

The problem can be occur when using/switching to jQuery 3. It's because all ready states in the new jQuery 3 are now fully asynchron. This means, that there is no given order for your code to be executed.

Because of this, it could happen, that load is been triggered **before** your ready state has been executed. When your ready function now finally gets triggered, your load listener is too late and will not be executed.

read more ...
Share:

CatFeeder Projket beendet!

Ich habe hier ja schon einige Male von meinem Projekt zum Katzenfütterungsautomaten berichtet. Leider ist es in der Zwischenzeit so gekommen, dass ich keine Katzen mehr habe, womit der Automat natürlich überflüssig geworden ist. Mittlerweile war die gesamte Steuerung mittels Arduino komplett fertig und die Platine mit allen Funktionen gelötet. Es musste eigentlich nur noch im Gehäuse verbaut werden. Dazu kommt es jetzt leider nicht mehr.

Meine mechanischen Arbeiten werden mit Sicherheit nochmal andernorts als Futterautomat weiterleben. Katzenbesitzer mit diesem Problem gibt es ja genug. ;)

Für interessierte Personen stelle ich meinen Quelltext des Arduinos auf GitHub bereit. Der Code beinhaltet alle Funktionen, welche ich in meinem Automaten haben wollte. Unter anderem einen Willkommens-Bildschirm, Befehle über Netzwerknachrichten, Melodie bei Fütterung, Steuerung über zwei Knopfe, Display, usw.

read more ...
Share:

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:

Arduino Yún mountet 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
read more ...
Share:

Automatisch Bilder mit Webcam an Arduino Yún aufnehmen

Nachdem ich mein Problem mit dem Startskript behoben hatte konnte ich auch den eigentlichen Zweck endlich umsetzen. Mit dem Start des Yún sollte auch eine Webcam direkt starten Bilder aufzunehmen und diese auf der SD Karte speichern. Das Ganze soll durchgehend passieren, alle drei Sekunden ein neues Bild.

Nach etwas Suche im Internet fand ich verschiedene Lösungen die mehr oder weniger performant waren. Die beste Idee kam meiner Meinung nach von dem Blogger Luca, der selber ein gutes Tutorial zu dem Thema verfasst hat. Bei mir traten aber ein paar Eigenheiten auf, weshalb ich sein Tutorial gerne etwas erweitern möchte.

read more ...
Share:

Skript beim Start von Arduino Yún ausführen

funktioniert mit allen Linino Linux Distributionen

Für ein Projekt beschäftige ich mich aktuell mit dem Arduino Yún. Anders als die anderen Arduinos kommt das Yún mit der Linux-Distribution Linino daher. Diese bietet mit LuCi gleich eine passende Verwaltungsoberfläche für den Browser basierend auf OpenWRT.

Eines der ersten Dinge die ich für mein Vorhaben brauchte war es, ein Skript immer direkt nach dem Systemstart laufen zu lassen. Bloß was ist der korrekte Weg mit dem Mini-Linux und dem Yún? Nun, ich weiß es nicht. Die für mich am praktikabelsten scheinende Lösung möchte ich aber hier für mich und alle interessierten festhalten.

Da es über die Weboberfläche einen Editor für crontab gibt hatte ich mich anfangs entschiedenen dies zu nutzen, um mein Skript nach dem Start/Reboot auszuführen. Aber das Yún bzw. Linino unterstützt das @reboot Attribut von Crontab nicht. Also ist dies leider keine Option, auch wenn man damit einfach seine Skripte verwalten könnte. Aber es gibt andere Wege, vielleicht nicht ganz so praktisch, führen aber zum Ziel.

read more ...
Share:

Lazy 0.1.15 erschienen

Seit heute liegt auf GitHub die Version 0.1.15 von jQuery.Lazy(); bereit. Die Idee bzw. der Tipp eines Nutzers, welcher mich zu dem Update bewegte, war gar nicht mal schlecht. Ein Punkt der mir vorher nicht in den Kopf kam: Was ist mit Bildern in Containern?

Gute Frage!

Normalerweise werden Bildern bei Lazy während des Scroll-Events geladen. Das betrifft immer die gesamte Seite, da das Plugin window verwendet, um auf Aktionen zu warten. Bilder die aber in einem Tag mit z.B. overflow: auto; lagern werden dann auch geladen, obwohl gar nicht nötig.

$('img').lazy({
  appendScroll: $('div#container');
});

Hier kommt die neue Konfiguration appendScroll von Lazy zum Einsatz. Wird hier ein Element angegeben so ist der Event-Listener nur noch darauf gerichtet. So lassen sich nicht nur Bilder speziell in einem Container laden lassen, sondern auch mehrere Lazy-Instanzen auf verschiedene Scroll-Events legen. Theoretisch gibt es hiermit viele Anwendungsmöglichkeiten, bin gespannt wann ich eine für mich finde. :)

Share: