Wie kann die aktuellste Node.js v0.10.29 auf einem Raspberry Pi (Version Jessie) installiert werden?

Wer die neue Node.js v0.10.29 braucht, muss sie selbst compilieren, oder etwas warten bis die binaries hier auch vorhanden sind.

Dazu erst mal das System aktualisieren.

sudo apt-get update && sudo apt-get upgrade

Dann noch die neueste Firmware installieren mit:

sudo rpi-update
Ergebnis:
Bildschirmfoto 2014-06-21 um 18.37.49

Ein reboot ist noch nötig:

sudo reboot

Jetzt kann es losgehen mit der Installation der nötigen Pakete (ca. 84 MB):

sudo apt-get install git-core build-essential python libssl-dev nano screen

Nun das Node.js Repo nach /opt clonen und die aktuellste Version auschecken:

cd /opt
sudo git clone https://github.com/joyent/node.git
cd node

Ergebnis:
Bildschirmfoto 2014-06-21 um 18.52.15
Nun die gewünschte Version auschecken mit:

sudo git checkout v0.10.29

Ergebnis:Bildschirmfoto 2014-06-21 um 18.52.04

Nun starten wir das Tool screen mit:

screen

damit beim beenden der SSH Session, der Prozess weiter läuft.

Und nun compilieren wir wie in https://github.com/joyent/node beschrieben mit:

sudo ./configure
sudo make
sudo make install

Das dauert dann so ca. 2-4 Stunden.

Wir können das Terminal Fenster schließen und mit

screen -r

wieder jederzeit die Session aufnehmen.

Nun noch den Pfad in der ~/.profile Datei ergänzen mit:


nano ~/.profile
export PATH=$PATH:/opt/node

Checken ob node installiert wurde mit

node --version

Ergebnis:

Bildschirmfoto 2014-06-22 um 08.50.32

Oder das Testportfolio mit 601 Test ausführen (Laufzeit bei mir 22 Minuten) mit:

sudo make test

Bildschirmfoto 2014-06-22 um 14.26.05

Ein Fehler, das ist nicht so schlimmm 😉 Rest läuft ja.

Dann evl. noch die Dokumentation erstellen, mit

sudo make doc

nach ein paar Minuten kann z.B. mit

man doc/node.1

die Doku gelesen werden:
Bildschirmfoto 2014-06-22 um 14.31.55

Oder ein kleines Hallo Welt Beispiel. Die node Konsole aufrufen mit node und console.log("Hallo Welt") eingeben:

Bildschirmfoto 2014-06-22 um 14.38.04

Nun viel Spaß mit Node.js.

Wie kann grunt via npm und node.js auf OSX 10.9 Mavericks mit Port installiert werden?

Wer den Taskrunner Grunt installieren will, um vieles zu automatisieren, muss nur node.js und npm installieren. Also hier eine Anleitung in 3 Schritten:

Node.js

Wer eine Serverseitige Plattform zum Betrieb von Netzwerkanwendungen wie Webserver benötigt, ist bei Node.js richtig. Mit Node.js kann man mit ein paar Zeilen JavaScript einen Webserver schreiben.

Es gibt mehrere Methoden http://nodejs.org/ zu installieren. Über download oder auch über Port.

Die Installation über Port, ist in ein paar Minuten erledigt, einfach

sudo port install nodejs

auf der Konsole eingeben.

Dann …Bildschirmfoto 2014-06-17 um 19.37.33… nach ein paar Sekunden.

Checken ob node läuft, mit Eingabe eines kleinen JavaScript Testprogramms mit node auf der Konsole:
Bildschirmfoto 2014-06-17 um 19.40.38

Hier ein Überblick zu Node.js in einer Mindmap:Node.js

NPM

Dann installieren wir noch den Paketmanager npm mit

sudo port install npm

damit wir Zugriff auf derzeit 78 819 Pakete haben.

Checken ob alles richtig installiert wurde geht mit:

npm -version

bei mir wird nun die Version 1.4.14 ausgegeben.

Oder mit npm search grunt-cli nach grunt-cli suchen. Der erste Aufruf dauert etwas, da noch ein Index erstellt wird. Dann wird aber ungefähr so was ausgegeben:
Bildschirmfoto 2014-06-17 um 20.14.21

Grunt

Jetzt noch Grunt installieren.
Das können wir mit dem npm wie folgt ausführen:


sudo npm install -g grunt-cli
sudo npm install -g grunt-init
sudo npm install grunt --save-dev
sudo npm install easyimage
sudo npm upgrade

Ergebnis:
Bildschirmfoto 2014-06-17 um 20.18.05
Und wieder checken ob grunt läuft mit:

grunt -version

Ausgabe:
grunt-cli v0.1.13

Wie wird die Wetterstation Square Plus TFA 35.1121.IT in Fhem auf Raspberry Pi eingebunden?

Die Wetterstation Square Plus TFA 35.1121.IT besteht aus einem Hauptgerät (Betriebsanleitung):
20140614-230405-83045899.jpgund einem Aussensensor für Temperatur und Luftfeuchte, so sieht er von vorne aus:
20140614-230404-83044067.jpg und so von hinten:20140614-230404-83044958.jpg

Diese Wetterstation tauscht die Daten von dem Aussensensor zum Innensensor nach dem La Crosse Protokoll auf 868 MHz aus. Diese Daten können auch von einem JeeLink empfangen werden und in Fhem dargestellt werden.

Wie hier schon ausführlich beschrieben, denn LaCrosselTPlusReader10.ino Sketch auf den JeeLink laden.
La Crosse Sketch

Die Fhem Referenz gibt Infos zu LaCrosse.

[LOGFILE]
attr myJeeLink room CUL

Automatisch wird dann folgendes erkannt. Dazu vom Aussensensor die Batterien entfernen und in Fhem, für 120 Sekunden den Empfang anschalten mit klick auf set
Bildschirmfoto 2014-06-14 um 23.16.17 und dann die Batterien wieder einsetzen. Wenn alles erfolgreich gelaufen ist, sind folgende Einträge in der fhem.cfg Datei zu finden:

# Aussensensor Temp und Feuchte Sensor über JeeLink
define LaCrosse_08 LaCrosse 08
attr LaCrosse_08 IODev myJeeLink
attr LaCrosse_08 room Terrasse
define FileLog_LaCrosse_08 FileLog ./log/LaCrosse_08-%Y.log LaCrosse_08
attr FileLog_LaCrosse_08 logtype text
attr FileLog_LaCrosse_08 room Terrasse

In Fhem:
Bildschirmfoto 2014-06-14 um 23.01.38

Bildschirmfoto 2014-06-14 um 23.01.53

Ein passendes Diagramm, das schön den Verlauf der Temperatur und der Luftfeuchte zeigt, könnte so aussehen:
Bildschirmfoto 2014-06-17 um 18.17.11

Leider werden die Daten dieser Innenstation nicht versendet und können somit auch nicht von Fhem empfangen werden. Das währe das Optimum, so hätte man dann alle Werte auch in Fhem. Das währe dann die Eierlegende Wollmilchsau.

Wie wird ein Arduino Nano mit Firmata geflasht, mit dem iMac und dem Firmata-Testprogramm getestet und in Fhem auf dem Raspberry Pi eingebunden?

Als ich diesen Beitrag gelesen hatte, hatte ich Lust, auch mal was mit Firmata zu machen. Mit dem Firmata Protokoll kann man einfach auf alle Ein und Ausgänge zugreifen ohne ein eigenes Protokoll zu entwickeln.

Also einen Arduino Nano aus der Bastelkiste geholt und ihn mit dem Firmata Standard Sketch geflasht. Das wird ja ganz gut in dieser Anleitung beschrieben.

Arduino flashen

Also über die Arduino IDE den Standard Firmata flashen:
Firmata flashen

Quicktest

„Wie wird ein Arduino Nano mit Firmata geflasht, mit dem iMac und dem Firmata-Testprogramm getestet und in Fhem auf dem Raspberry Pi eingebunden?“ weiterlesen

Wie kann der JeeLink (=JeeNode) mit neuen Sketch für Fhem auf den Raspberry Pi geflasht werden?

Im JeeLink ist der Demo Version 5 Sketch wie schon mal hier beschrieben.

Wie hier beschrieben, kann der JeeLink mit neuen Sketchen für PCA301, Lacrosse, Energy Count 3000, JeeLabs RoomNode und anderen geflasht werden.

Dazu die 36_LaCrosse-LaCrosseITPlusReader.zip
und die master.zip laden.

Beide in ein Verzeichnis ohne Sonderzeichen auspacken. Also das Verzeichnis jeelib-master in jeelibmaster umbenennen. Sonst kommt es zu Fehlern. Hier mal die Verzeichnisstruktur: „Wie kann der JeeLink (=JeeNode) mit neuen Sketch für Fhem auf den Raspberry Pi geflasht werden?“ weiterlesen

Wie wird ein openLDAP-Server, phpLDAPadmin und LDAP-Client auf einem Raspberry Pi installiert?

Wollte schon immer einen eigenen LDAP-Server haben. Da es heute regnet, habe ich mir einen mal auf dem Raspberry Pi eingerichtet. Hier gibt es eine gute Anleitung (auf englisch) zum installieren eines Ldap Servers. Analog dazu habe ich mal eine Anleitung zum openLDAP in deutsch angelegt. Erste mal eine Mindmap zum Thema:
Ldap
Kurz ist folgende nötig (BPMN 2.0):
ldap
„Wie wird ein openLDAP-Server, phpLDAPadmin und LDAP-Client auf einem Raspberry Pi installiert?“ weiterlesen

Wie können Dateien automatisch über ein Dropbox Verzeichnis zu PDF umwandeln werden mit CUPS auf dem Raspberry Pi inklusive AirPrint?

Folgende 24/7 Drucklösung wird hier beschrieben.

Es können alle Dateien die in einem Dropbox Verzeichnis kopiert werden, automatisch in PDF-Dateien umgewandelt werden. Diese PDF Dateien werden in ein weiteres Dropbox Verzeichnis bereitgestellt. So ist über Dropbox ein platformübergreifender Zugriff möglich. Einfach die zu druckenden Dateien in das Verzeichnis kopieren. Der Drucker muss dazu nicht an sein.

Auch können mit dieser Lösung über iPhone, iPad… Dokumente über AirPrint gedruckt werden auch wenn der Drucker nicht AirPrint-Fähig ist. Das läuft über den CUPS-Server.

Der Drucker muss nicht immer an sein, da der Druckvorgang im Spooler des Raspberry Pi landet. Wenn der Drucker angeschaltet wird, werden die Dokumente gedruckt. Es ist rund um die Uhr ein Drucker erreichbar.

Es werden also PDF Dateien erzeugt und es wird der angeschlossene Drucker über CUPS „normal“ verwendet. Das heißt es kann von jedem Gerät, auch iPhone und iPad gedruckt werden!

Was ist dafür zu tun?
Zuerst mal ein Überblick.:
Bildschirmfoto 2014-04-24 um 22.05.07
Eine valide BMPN 2.0 Version ist hier zu finden.
„Wie können Dateien automatisch über ein Dropbox Verzeichnis zu PDF umwandeln werden mit CUPS auf dem Raspberry Pi inklusive AirPrint?“ weiterlesen

Wie kann per Karotz eine Sprachausgabe (Klingelbenachrichtigung) über Fhem und Raspberry Pi mit PushingBox realisiert werden?

Seit langem habe ich einen Karotz und schon einige Beiträge darüber hier veröffentlicht.

Karotz kann blinken!
Karotz kann Hausautomatisation!
Nun wollte ich ihn mal in Fhem für die Hausautomatisation einsetzen.

Habe nun eine generelle Lösung über die kostenlose PushingBox realisiert.

Es können jegliche Textausgaben auf den Karotz gemacht werden. Bei mir läuft eine Ansage, wenn es an der Haustür klingelt. Es könnte auch jede Stunde die Temperatur von Karotz angesagt werden oder … (weitere Ideen als Kommentar).

Was ist also nötig?

1. Die kostenlose App PushingBox auf den Karotz über die Karotz Seite installieren. Es ist diese App, die auch über die Suchefunktion im englischen Store gefunden werden kann. Klickt man dann auf die installierte App, findet man dort die Install id die wird für weiter installation benötigt.
Bildschirmfoto 2014-04-17 um 19.38.19
Bildschirmfoto 2014-04-17 um 19.36.42

2. Einen kostenlosen Account bei PushingBox mit dem Google-Account einrichten.

3. Im Menü auf My Services klicken und auf Add a Service Button klicken:
Bildschirmfoto 2014-04-17 um 20.55.28
Dann den Karotz Service auswählen mit klick auf den Button „Select this Service“.
Bildschirmfoto 2014-04-17 um 20.56.15

4. Im folgenden Dialog den „Namen der Karotz configuration“ eingeben, der kann frei gewählt werden und der InstallID eintragen. Die kann wie unter 1. beschrieben ermittelt werden. Die Sprache auswählen, damit Karotz auch deutsch spricht einstellen und klick auf „Submit“.
Bildschirmfoto 2014-04-17 um 17.43.04

5. Dann unter „My Scenarios“ über den Button „Add an Action“ hinzufügen. Bei dem Parameter folgenden Text eingeben: $nachricht$
Der Service Name ist frei wählbar. Nach dem speichern erscheint in der Tabelle die DeviceId die später noch verwendet wird.Bildschirmfoto 2014-04-17 um 21.16.15
Jetzt einmal auf den „Test“ Button klicken. Karotz muss nun „Nachricht“ sagen. Wenn das alles läuft, kann es an die Einrichtung in Fhem gehen.

6. In der 99_Utils.pm (oder besser eine neue anlegen 99_myUtils.pm analog zu 99_Utils.pm) folgende Funktion ergänzen und abspeichern. Neueste Version kann auch von GitHub geladen werden.

#
# Sendet eine Nachricht an Karotz.
#
# Aufruf z.B.: {Set_Karotz_Nachricht('Device ID','Hallo herzlich Willkommen zu Hause')}
#
sub
Set_Karotz_Nachricht
{
my ($devid, $text) = @_;

Log 5, ">>> Set_Karotz_Nachricht: $text";
Log 5, ">>> ---------------------------------------------------------------------------------";

system("curl -d \"devid=$devid&nachricht=$text\" http://api.pushingbox.com/pushingbox");

return "OK, sende die Nachricht:\"$text\" an Karotz.";
}

7. Fhem restarten und in der Kommandline die Funktion testen mit (?? durch DeviceID ersetzen):
{Set_Karotz_Nachricht(‚v??????????‘,’Hallo herzlich Willkommen zu Hause‘)}
und return. Schon spricht Karotz!

8. Jetzt kann diese Zeile in die gewünschten Abläufe in Fhem integriert werden.
Z.b. wenn es klingelt:
define klingenOffPush notify fl_klingel_1:on* {\
Set_Karotz_Nachricht('v???????','Hallo, es hat an der Haustür geklingelt.');;\
}

wird nun die Meldung: „Hallo, es hat an der Haustür geklingelt.“ von Karotz ausgegeben.

Hast Du noch weitere Anwendungsfälle, dann hinterlasse einen Kommentar?

Wie wird eine Pushover Benachrichtigung auf dem Raspberry Pi bei Zugriff per SSH versendet um Einbrüche zu erkennen?

Damit ich benachrichtigt werde, wenn die NSA oder jemand anders per SSH auf meinen Server einbricht, kann dieses Script dienen, welches eine Pushover Nachricht an das Handy oder iPad sendet wenn jeman sich per SSH auf den Raspberry Pi einloggt. Als Basis diente diese sehr ausführliche Seite die sowas mit Pushbullet realisiert hat.

Diese pushover-ssh.sh Datei „Wie wird eine Pushover Benachrichtigung auf dem Raspberry Pi bei Zugriff per SSH versendet um Einbrüche zu erkennen?“ weiterlesen

Klingel-Signal-Erkennung FS20 KSE an Sprechanlage für Pushover Benachrichtigung an iPhone auf dem Raspberry Pi via Fhem und CUL erstellen

Wollte schon immer auf meinem Handy benachrichtigt werden, wenn jemand an der Haustür klingelt. Bekomme nun immer eine Pushover-Benachrichtigung an alle iPhones und iPads. So kann man in den Keller oder in den Garten mit Handy gehen, und man erfährt, wenn der Postbote oder Besuch klingelt und der Raspberry Pi hat auch etwas zu tun.

Mit dem FS20 KSE geht das in nur 15 Minuten. Also die (alte) Sprechanlage 20140412-162749.jpg geöffnet. Von innen sieht sie so aus, voller Hightech: 20140412-162802.jpg

20140412-162817.jpg

Nun die zwei Drähte von der KSE an die passenden Kontakte geschraubt (parallel zum Summer), der andere Kanal bleibt leer. Spannungversorgung ist nicht nötig.20140412-162833.jpg
Alles wieder zuschrauben. In der fhem.cfg noch folgende Einträge machen und restarten:

# XXXX durch Hauscode ersetzen
define fl_klingel_1 FS20 XXXX 00
attr fl_klingel_1 IODev myCUL
attr fl_klingel_1 room Flur
attr fl_klingel_1 group Klingel

define FileLog_fl_klingel_1 FileLog ./log/fl_klingel_1-%Y.log fl_klingel_1
attr FileLog_fl_klingel_1 logtype text
attr FileLog_fl_klingel_1 room Flur
attr FileLog_fl_klingel_1 group Klingel

# XXXX durch Hauscode ersetzen
define fl_klingel_2 FS20 XXXX 01
attr fl_klingel_2 IODev myCUL
attr fl_klingel_2 room Flur
attr fl_klingel_2 group Klingel

define FileLog_fl_klingel_2 FileLog ./log/fl_klingel_2-%Y.log fl_klingel_2
attr FileLog_fl_klingel_2 logtype text
attr FileLog_fl_klingel_2 room Flur
attr FileLog_fl_klingel_2 group Klingel
#
# Benachrichtigung wenn es an der Haustür klingelt
# Folgende log Einträge werden geschrieben:
#
# 2014-04-12 12:09:21 FS20 fl_klingel_1 on
# 2014-04-12 12:09:21 FS20 fl_klingel_2 on
# 2014-04-12 12:09:22 FS20 fl_klingel_1 off
# 2014-04-12 12:09:22 FS20 fl_klingel_2 off

# -token- und -user- durch passende token und user ersetzen
define klingenOnPush notify fl_klingel_1:on* {\
my $zeit=EventZeit();;\
system ("curl -s -F 'token=-token-' -F 'user=-user-' -F 'message=Es klingelt an der Haustür um $zeit' -F 'title=Haustür: Klingel an' https://api.pushover.net/1/messages.json");;\
}
attr klingenOnPush group Klingel
attr klingenOnPush room Flur

# -token- und -user- durch passende token und user ersetzen
define klingenOffPush notify fl_klingel_1:off* {\
my $zeit=EventZeit();;\
system ("curl -s -F 'token=-token-' -F 'user=-user-' -F 'message=Es klingelt an der Haustür um $zeit' -F 'title=Haustür: Klingel aus' -F 'sound=siren' https://api.pushover.net/1/messages.json");;\
}
attr klingenOffPush group Klingel
attr klingenOffPush room Flur

Nach einem Restart sieht es in Fhem so aus:
Bildschirmfoto 2014-04-12 um 16.54.17

Für die Empfänger-Seite wird noch ein CUL USB-Stick benötigt
20140415-174204.jpgder wie folgt für den Empfang in Fhem eingebunden werden muss.

Wenn nun jemand an der Tür klingelt, wird innerhalb von ein paar Sekunden die Pushover-Benachrichtigung an das Handy versendet. Eine wenn der Klingeltaster gedrückt wird und eine wenn der Klingelschalter losgelassen wird. So sieht es auf dem iPhone aus:20140412-170739.jpgCool.

Jetzt fehlt noch der Rückkanal, das wenn jemand klingelt, der Summer betätigt werden kann. Dazu fehlt mir aber der drahtlose Empfänger mit Relais. Was könnte ich da nehmen?
20140415-174218.jpg

Java Rätsel des Monats

Wenn wir diese Java Klasse compilieren und ausführen:

Welche Lösung bzw. Aussage ist richtig?

1. Es wird immer folgende Ausgabe gemacht, egal was in der wieSiehtDieMethodeAus()
ergänzt wird:
Hallo Welt!
Hallo Welt!
Hallo Welt!

2. Es wird „nichts“ ausgegeben.

3. Es wird Hallo Welt! ausgegeben

4. Es kann durch Anpassung, nur in der Methode wieSiehtDieMethodeAus() folgende Ausgabe erzeugt werden?
Was in Java alles geht!
Was in Java alles geht!
Was in Java alles geht!

Dein Vorschlag in Form von 1,2,3 oder 4 bitte posten. Nur Mut!
Hier nun die Lösung:
„Java Rätsel des Monats“ weiterlesen