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 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 eine Logitech QuickCam, an einem Raspberry Pi mit #jessie und #fswebcam zum laufen gebracht?

In diesem Beitrag hatte ich schon beschrieben, wie ich eine alte Logitech QuickCam am rPi zum laufen bringen wollte.

Habe nun die gleiche „Logitech QuickCam“ nun mal an einem neuen und aktuellen „jessie“ System ausprobiert.

Es musste da das fswebcam nicht manuell installiert werden, da „jessie“ schon die aktuellste Version enthält.

Aber, gleicher Fehler.

Dann einmal
sudo raspi-config
aufgerufen und dort die camera angeschaltet unter Punkt 5.

Dann, oh Wunder, wurde ein Foto erstellt 🙂

Das Foto noch auf den Mac kopieren mit:
scp pi@{Raspberry-Pi-Adresse}:/home/pi/test.jpg .
vom Mac aus. Und das test.jpg bewundern:
1. Test Foto mit fswebcam
Was habe ich da fotografiert, das ist auch die Frage des Monats. „Wie wird eine Logitech QuickCam, an einem Raspberry Pi mit #jessie und #fswebcam zum laufen gebracht?“ weiterlesen

Wie kann der Raspberry Pi auf die neue Debian Version Jessie upgedated werden?

Aktuell ist die Linux Wheezy Version. Wer aber neue Funktionen ausprobieren will, kann den Raspberry Pi auch auf Jessie updaten. Wenn auch noch nicht alles so stabil sein soll, bekommt man doch einfach die neuesten Versionen. Z.b. PHP 5.5.12. Diese Version wird aber noch nicht zeitnah mit Sicherheitsaktualisierungen versorgt und hat den Status Testing.

Es braucht nur die folgende Datei angepasst zu werden:
sudo nano /etc/apt/sources.list

Wo „wheezy“ steht auf „jessie“ ändern und speichern. Dann den update Vorgang starten mit:

sudo apt-get update && apt-get dist-upgrade && apt-get autoremove

Es kommen dann während der Installation einige Fragen die beantwortet werden müssen, ob Service usw. restartet werden sollen. Dann nach ca. eine Stunde kann mit

sudo apt-get autoclean

die Reste entfernt werden und das System neu gestartet werden:

sudo shutdown -r now

Dann evl. noch checken ob alles ok ist mit:
sudo apt-get check

So hat man jetzt auch die aktuellste PHP Version, testen mit
php -v
Erzeugt nun:

PHP 5.5.12-1 (cli) (built: May 11 2014 09:41:44)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
with Zend OPcache v7.0.4-dev, Copyright (c) 1999-2014, by Zend Technologies

Wie kann auf einem Raspberry Pi alle mDNS/DNS-SD Services mit avahi-browse gelistet werden?

Es gibt eine avahi-browse, mit dem kann auf einem Raspberry Pi alle Services im lokalen Netz angezeigt werden. Über Avahi gibt ein Rechner seine Präsenz und seine angebotenen Dienste im lokalen Netzwerk bekannt. Dazu muss Avahi nicht konfiguriert werden, es funktioniert “Out-of-the-box”. Und keine Angst, Avahi ignoriert sämtlichen Traffic, der nicht aus dem eigenen LAN kommt.

Dazu die avahi-utils installieren mit:

sudo apt-get install avahi-utils

Dann kann mit

avahi-browse -at

die Liste aller im LAN registrierten Services auf der Konsole ausgegeben werden.
Will man nur die Domänen anzeigen, geht das mit:

avahi-browse -Dt

Eine ganz ausführliche Liste mit aufgelösten IP usw. gibt es mit

avahi-browse -art

Weitere Parameter zu dem avahi-browse können mit

man avahi-browse

ausgegeben werden. Hier eine Mindmap zu dem Thema:

Avahi
Avahi

Wie kann eine Apple Freigabe mit Netatalk und Bonjour (Zeroconf) für den Finder auf dem Raspberry Pi mit AFP installiert werden?

Siehe auch neueren Eintrag.

Um mit Apple-Rechner (Mac OS X, Yosemite 10.10.2) per Freigaben mit dem Finder auf dem Raspberry Pi zugreifen zu können, kann Netatalk verwendet werden. So würde eine Freigabe z.B. aussehen:

Bildschirmfoto 2014-05-07 um 20.23.33
Was ist nötig?

Das System aktualisieren und avahi-daemon und netatalk installieren:

Dann in der Datei:

Am Ende anfügen bzw. das # am Anfang entfernen:

Dann in der Datei:

vor der Zeile „End of File“ folgenden Eintrag ergänzen um die Public Freigabe zu erzeugen, sonst ist nur das Home-Verzeichnis des Users freigegeben:

Nun noch die Datei

mit folgenden Inhalt anlegen:

Der Eintrag in der Zeile mit model= legt das Icon fest. Möglich Werte sind da: Mac (default), AirPort, AppleTV1,1, iMac, MacBook, MacBookAir, MacBookPro, Macmini, MacPro, PowerBook, PowerMac und Xserve.

Beide Services noch restarten:

Nach ein paar Sekunden kann auf die Verzeichnisse „normal“ Zugegriffen werden.
Die Freigabe für „Apple Time Machine“ kommt dann in einem anderen Blogeintrag.

Soll der avahi beim Neustart des Pi automatisch starten? Dann noch ein:

Optional, mal testweise schauen ob alles nach einen reboot läuft

Viel Spaß

Wie kann ein Jabber Client auf Raspberry PI unter Fhem eingerichtet werden?

Account auf jabber.de anmelden.

Evl. noch einen Jabber Client installieren um den Account zu testen. Für Mac z.B. adium.im verwenden. Dann auf der Kommandozeile im rPi ein paar Module installieren:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install libnet-jabber-perl libnet-xmpp-perl libxml-stream-perl libauthen-sasl-perl libnet-ssleay-perl libnet-jabber-bot-perl libdigest-sha-perl

In der fhem.cfg folgende Zeile eintragen:
(Achtung, den Username in der define Zeile ohne @jabber.de angeben)

define Jabber_Client Jabber jabber.de 5222 JABBERUSER PASSWORT 1 0
attr Jabber_Client OnlineStatus available
attr Jabber_Client PollTimer 2
attr Jabber_Client RecvWhitelist JABBERUSER@jabber.de
attr Jabber_Client ResourceName FHEM
attr Jabber_Client userReadings 1
attr Jabber_Client room Jabber

Details zu den Parametern sind in der Fhem commandref zu finden.

Speichern und restart von FHEM. Im Raum Jabber schauen:

Jabber
Jabber

Dann in der Kommandozeile von Fhem z.B.:

set Jabber_Client msg JABBERUSER@jabber.de Hallo Fhem Welt!

Habe ich noch was vergessen? Weiter Tips?

BPMN 2.0 validieren und Fehler beheben

Das folgende Diagramm sollte eher die Funktion der CUPS Drucklösung auf dem Raspberry Pi darstellen.
tw-druck
Ist aber kein gültiges bzw. valides BPMN 2.0 Diagramm. Wenn das Diagramm validiert wird, gibt es folgende 8 Fehlermeldungen und 4 Warnungen. Wenn schon BPMN 2.0 Standard verwendet werden soll, dann sollte es auch valide sein.
Bildschirmfoto 2014-04-24 um 22.05.07
Deshalb hier der 1. Versuch der valide ist:
Bildschirmfoto 2014-04-24 um 22.29.53
Bei Gelegenheit kommt noch eine Version mit Swimlane. Oder habt Ihr einen anderen Vorschlag?

Die TOP 5: Wie werden auf dem Raspberry Pi alle angelegten Nutzer angezeigt?

Evl. will man ja mal schauen, ob nicht ein unbekannter einen Nutzer angelegt hat 😉
Um alle im System angelegten Nutzer anzuzeigen gibt es viele Möglichkeiten.
Die Nutzer werden in der Datei /etc/passwd abgelegt.

Jede angezeigte Zeile hat dieses Format:

Name:Passwort:User-ID:Group-ID:Kommentar:Verzeichnis:Shell

Es gibt viele Seiten, die alles genau beschreiben, hier eine kleine Auswahl:

Aber jetzt zu den TOP 5 Befehlen, die die Nutzer ausgeben (alle mit cat /etc/passwd), aber nur die User:

cut -d: -f1 /etc/passwd
at /etc/passwd | cut -d: -f1
sed 's/:.*//' /etc/passwd
cat /etc/passwd | awk -F : '{print $1}'
awk -F: '{print $1}' /etc/passwd

Kennt ihr auch noch einen? 😉

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 kann auf dem Raspberry Pi der SSH Zugang per RSA Key eingerichtet werden?

Wer keine Lust hat immer das Passwort einzugeben, und wer auf der sicheren Seite stehen will, kann sich mit dem RSA Key anmelden. Dazu wie hier ausführlich beschrieben auf den Raspberry Pi per SSH anmelden (evl. für alle anderen User auch wiederholen) und in das .ssh Verzeichnis anlegen und dahin wechseln mit:

Wer noch RSA Keys benötigt, die können mit

im .ssh Verzeichnis erstellt werden.

Auf dem Raspberry Pi die Datei

anlegen oder ergänzen mit dem (USER)/.ssh/id_rsa.pub des Quell Rechners.

In der

sicherstellen, das diese Einträge auf yes bzw. no stehen und alle einkommentiert sind:

SSH neu starten mit

Konsole offen lassen, und von einer neuen Konsole versuchen, ob der Login nun ohne Passwort geht. Sonst in der anderen Konsole den Fehler suchen.

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

Wie wird wswebcam auf dem Raspberry Pi neu compiliert und installiert?

Mit sudo apt-get install fswebcam wird wie man mit fswebcam --version feststellen kann die Version von 2011 von fswebcam installiert:
fswebcam 20110717

Da meine alte Logitech Cam nicht läuft, habe ich erst einmal auf die neueste Version upgedated. Also die Quellen holen und neu compilieren mit:

Es wird folgender Error ausgegeben:
configure: error: GD graphics library not found

Also noch die libgd neu installieren mit:
sudo apt-get install libgd2-xpm-dev

Dann nochmal

ausführen.
Ok, Ausgabe nun:...
hecking for getpagesize... yes
checking for working mmap... yes
checking for gdImageCreateTrueColor in -lgd... yes
checking for gdImageStringFT in -lgd... yes
checking for gdImageJpeg in -lgd... yes
checking for gdImagePngEx in -lgd... yes

Buffer type ........... 16 bit
PNG support ........... yes
JPEG support .......... yes
Freetype 2.x support .. yes
V4L1 support .......... yes
V4L2 support .......... yes

configure: creating ./config.status
config.status: creating Makefile
config.status: creating config.h

Dann ein make zum compilieren und make install.
Dann checken ob die neue Version installiert wurde, mit
fswebcam --version Ausgabe:
fswebcam 20140113

Nun noch mit rm -rf fswebcam/ das Verzeichnis löschen.

Ok, die Cam wird erkannt, lsusb ergibt:
Bus 001 Device 004: ID 046d:0840 Logitech, Inc. QuickCam Express

Aber es kommt mit fswebcam test.jpg zu folgenden Fehler und es wird kein Foto erstellt:
Bildschirmfoto 2014-03-27 um 21.20.38
--- Opening /dev/video0...
Trying source module v4l2...
/dev/video0 opened.
No input was specified, using the first.
Adjusting resolution from 384x288 to 360x296.
Error starting stream.
VIDIOC_STREAMON: Broken pipe
Unable to use mmap. Using read instead.
--- Capturing frame...
Timed out waiting for frame!
Speicherzugriffsfehler

Da muss ich dann mal ander mal schauen, was das nun wieder ist.
Oder habt IHR eine Idee?

Fix, siehe diesen neuen Blogeintrag. Das müsste auch hier laufen, oder?

Wie kann auf einem Raspberry Pi die neueste Java 1.8 Version von Oracle installiert werden?

Zuerst das System des Raspberry Pi updaten und neu starten mit:

Schauen, welche Version jetzt installiert ist mit java -version:

Entweder über den den Packetmanager:

oder per Hand, dann so:

Dann das JDK 1.8 von der Oracle Seite downloaden. Die Seite wurde nach hier verschoben. Es wird die Linux ARM v6/v7 Hard Float ABI Version mit 83 MB benötigt.
Bildschirmfoto 2014-03-27 um 18.08.58

In das Download Verzeichnis wechseln und mit scp die Datei auf den rPi kopieren z.B.:

Dann in den rPi wechseln und und das Archive in das /opt Verzeichnis entpacken, das dauert ein paar Minuten:

Nun Java aktivieren und das Archive löschen mit:

Bildschirmfoto 2014-03-27 um 20.33.14
sudo update-alternatives --config java
# Auswahl 1 für Version 1.8 eingeben

Bildschirmfoto 2014-03-27 um 20.32.41

Und checken ob es geklappt hat mit java -version ergibt nun:

Java 1.8.0 ist nun erfolgreich installiert.

Wie kann Webmin auf einem Raspberry Pi auf die neueste Version (1.680.1) aktualisiert werden?

Den laufenden Webmin aufrufen mit https://{IP-Adresse}:10000/

Aktuelle Version von Webmin feststellen über die Webmin Download-Seite.
Dann über das Menü: Webmin-Webmin-Konfiguration->Webmin aktualisieren
Bildschirmfoto 2014-03-14 um 17.19.24
In den Webmin aktualisieren Dialog die Aktuelle URL eingeben:
http://prdownloads.sourceforge.net/webadmin/webmin_1.680_all.deb
Bildschirmfoto 2014-03-14 um 17.18.52
Dann auf Webmin aktualisieren klicken und ca. 10 min warten:
Bildschirmfoto 2014-03-14 um 17.18.24

Webmin ist echt cool! Oder?

Wie wird ein VdS-zertifizerter Funk-Rauchmelder #HM-SEC-SD von #HomeMatic in #Fhem auf einem #Raspberry Pi eingebunden?

Habe von meinen netten Kollegen einen Gutschein erhalten 🙂 Dafür habe ich mir ua. diesen Funk-Rauchmelder HM-SEC-SD gekauft, hier die Ansicht von hinten, mit eingelegten Batterien:

20140311-174018.jpg

So, mit zwei Schrauben hängt er nun im Server-Raum an der Decke …
20140311-174036.jpg

Jetzt noch nach dieser Anleitung in Fhem anmelden. Obwohl ich bisher nur einen Rauchmelder haben, ist er mit einem virtueller Aktor als Teamlead verbunden (Variante 2). So kann über set Rauchmelder_Team alarmOn der Alarm getestet werden:
Bildschirmfoto 2014-03-11 um 17.39.16
Aus gehts mit set Rauchmelder_Team alarmOff:
Bildschirmfoto 2014-03-11 um 17.38.58
Zuvor aber anlernen und peeren:

set HMLAN_1 hmPairForSec 600
define TeamDev CUL_HM 111111
set TeamDev virtual 1
set Rauchmelder_Team peerChan 0 az_Brandmelder single set

Bildschirmfoto 2014-03-11 um 17.37.00

Cool, jetzt kann der VdS-zertifizerte Funk-Rauchmelder
Bildschirmfoto 2014-03-11 um 18.15.30 von überall angeschaltet werden.

Aber erst noch eine Benachrichtigung bei Brandalarm versenden per Pushover. Dazu ua. in der fhem.cfg folgenden Code einfügen und den Token und User ersetzen:


# Benachrichtigung bei Brandmelder an
#

define pushBrandmelderAn notify az_Brandmelder:smoke-Alarm.* {\
system ("curl -s -F 'token=xxxxxxxxx' -F 'user=xxxxxxxxxx' -F 'message=Brandmelder Alarm' -F 'title=Fhem: Brandmelder ist an' -F 'priority=1' -F 'sound=1' https://api.pushover.net/1/messages.json");;\
}
attr pushBrandmelderAn group Brandmelder
attr pushBrandmelderAn room Arbeitszimmer

Kann dann so als Alarmmelder dienen.

Wie kann das blinken der LED am CUL abgeschaltet und damit Strom gespart werden?

Wer einen CUL am Raspberry Pi hat wo Fhem läuft, den nervt evl. das blinken der LED.
Das kann aber mit dem folgenden Befehl abgeschaltet werden:

set myCUL led 00

Also mit zweimal 00 und dann auf set klicken:
Bildschirmfoto 2014-03-04 um 20.52.41

Man kann die LED auch wieder an oder auf blinken schalten mit:

aus 00
an 01
blinken 02

So kann man auch Strom sparen, immerhin 20 mA ;-). Das macht im Jahr wieviel?

Wie kann ich den die LEDs am rPi ausschalten?

Wie kann die neue SYSMON Funktion ShowValuesText auf den Fhem Server mit Raspberry Pi für Pushover und E-Mail genutzt werden?

Das coole Tool SYSMON im Fhem Server kann nun auch seit ein paar Tagen seine Informationen als Text mit der Funktion SYSMON_ShowValuesText wiedergeben. Diese Infos können dann wie hier als HTML Tabelle auch per E-Mail oder Pushover versendet werden:

Bildschirmfoto 2014-03-04 um 18.59.03

Ich habe es in meiner täglichen Pushover Benachrichtigung eingefügt, so bekomme ich immer um 12 Uhr diese Meldung direkt auf mein Handy bzw. iPad:
Bildschirmfoto 2014-03-04 um 18.57.50

Hier der entsprechende Code, für die fhem.cfg:

#
# Fhem: Um 12 Uhr täglich den rPi Systemstatus versenden
#
define pushSystmonStatus at *12:00:00 {\
my $sysinfo=SYSMON_ShowValuesText('sysmon', ('date:Datum', 'cpu_temp:CPU Temperatur: °C', 'uptime_text:System up time:', 'fhemuptime_text:FHEM up time', 'ram:RAM', 'idletime_text:idle time', 'stat_cpu_text:CPU'));;\
system ("curl -s -F 'token=-dein Token-' -F 'user=-dein User' -F 'message=$sysinfo' -F 'title=Fhem Systemstatus' http://api.pushover.net/1/messages.json");;\
}

Wenn man alle Parameter haben will, kann man auch einfach nur sysmon verwenden:
my $sysinfo=SYSMON_ShowValuesText('sysmon')
Für die Pushover Benachrichtigung wird aber nicht alles angezeigt, da die max. Anzahl an Zeichen bei 512 liegt. Aber für E-Mail oder andere Zwecke gehts.

Noch weitere Ideen?

Mit Mac OS X Maverick einen CUL CC1101 868Mhz von Busware für FS20 für den Raspberry Pi mit culfw 1.55 flashen und in Fhem einbinden

Der CUL-V3-OEM CC1101 für 868 Mhz von Busware mit fester lambda/4 Mikroantenne wird ohne Firmware geliefert. CUL V3 – ATMega32U4 Prozessor, 2,5 kB RAM, 32 kB Flashmemory, 1 kByte EEPROM, Herstellungs Video):
20140303-205015.jpg

Zuerst muss also der CUL mit einer aktuellen Firmware geflasht werden, so wie
hier für Mac OS X beschrieben. Also die aktuelle culfw 1.55 Firmware oder neuer laden und in ein Verzeichnis entpacken.

Dann brauchen wir noch das Programm zum flashen der Firmware, welches wir mit
sudo port install dfu-programmer
auf der Konsole installieren können.

Testen ob der Programmer richtig installiert wurde geht mit
$ dfu-programmer
Ausgabe: „Mit Mac OS X Maverick einen CUL CC1101 868Mhz von Busware für FS20 für den Raspberry Pi mit culfw 1.55 flashen und in Fhem einbinden“ weiterlesen

Wie wird der JeeLink an einen Raspberry PI mit Fhem installiert bzw. eingebunden?

1. JeeLink in rPi USB stecken.
2. Checken ob er erkannt wurde mit lsusb in der Konsole.
Ausgabe:
...
Bus 001 Device 004: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC
...

3. Weitere Infos in der Boot-Log mit dmesg ausgeben.
Ausgabe:
...
[ 9.069977] usb 1-1.2: Detected FT232RL
[ 9.075480] usb 1-1.2: Number of endpoints 2
[ 9.109559] usb 1-1.2: Endpoint 1 MaxPacketSize 64
[ 9.115965] usb 1-1.2: Endpoint 2 MaxPacketSize 64
[ 9.156771] usb 1-1.2: Setting MaxPacketSize 64
[ 9.168775] usb 1-1.2: FTDI USB Serial Device converter now attached to ttyUSB0
...

An der Ausgabe kann der verbundenen Port erkannt werden ( hier /dev/ttyUSB0 ).

4. Den JeeLink in der fhem.cfg eintragen mit dem ermittelten Port:

define myJeeLink JeeLink /dev/ttyUSB0

In Fhem gibt es für den JeeLink eine Modul-Beschreibung.

Nachdem der Fhem-Server restartet wurde, ist der JeeLink vorhanden:
Bildschirmfoto 2014-02-24 um 19.26.30
Details:
Bildschirmfoto 2014-02-24 um 19.25.45
Und die Events werden ausgegben. Hier nur das allgemeine rauschen von irgendwelchen Sensoren die auf der 868 MHzFrequenz senden:
Bildschirmfoto 2014-02-24 um 19.36.49

Wie wird ein Fensterkontakt HM-SEC-SC-2 von Homematic mit einem Heizungsthermostat HM-CC-RT-DN mit Fhem auf Raspberry Pi gekoppelt

Wie hier sehr gut beschrieben vorgehen.

1. Den Fensterschalter mit dem Heizungsventil HM-CC-RT-DN peeren. Das läuft über Kanal 03 WindowRec mit:
set peerChan 0 single
z.B.:
set az_Fenster_Schalter peerChan 0 az_Heizungsthermostat_WindowRec single

dann und das ist Wichtig, am Fenster-Schalter den Kontakt mit dem Kugelschreiber drücken, sonst wird es nicht ausgeführt.

Kontrolle unter Attributes, bei der peerIds muss die ID vom Schalter stehen:
Bildschirmfoto 2014-02-22 um 17.50.01

2. Wenn das Fenster aufgeht, soll die Temperatur autom. abgesengt werden. Dazu wird der im Heizungsthermostat integrierte Schalter über Kanal 4 ClimRT_tr ausgeschaltet mit:
set regSet winOpnMode off
z.B.:
set az_Heizungsthermostat_Klima regSet winOpnMode off

Kontrolle in den Readings unter R-winOpnMode, muss dann auf off gesetzt sein.

3. Dann soll noch die Temperatur auf 5 Grad (mögliche Werte von 5-30 Grad) eingestellt werden (Kanal 3), die autom. beim öffnen des Fensters eingestellt werden soll mit
set regSet winOpnTemp 5
z.B.:
set az_Heizungsthermostat_WindowRec regSet winOpnTemp 5 az_Fenster_Schalter

Für den älteren Thermostat HM-CC-TC ist die Syntax etwas anders (6-30 Grad, anderer Variablenname)
set regSet tempWinOpen 6
z.B.
set wz_Wandthermostat_WindowRec regSet tempWinOpen 6 wz_Terrassentuer_Schalter

Kontrolle:
Bildschirmfoto 2014-02-22 um 17.58.35

4. Dann noch ein save und rereadcfg.

Wenn alles ok ist, wird nun beim öffnen des Fensters auf 5 Grad geregelt und wenn das Fenster wieder geschlossen wird, auf die eingangs eingestellte Temperatur zurück gestellt.
Diese Regelung kann man gut am folgenden Diagramm erkennen. Das Ventil (blau) wird jeweils geschlossen wenn das Fenster geöffnet wird. Die Ziel Temperatur (grün) geht auf 5 Grad:
Bildschirmfoto 2014-02-22 um 18.32.17

Projekt: Raspberry Pi mit Schalter HM-LC-Sw1PBU-FM (in „Brotdose“ eingebaut) über Fhem Server für Druckerschaltung integriert

Hatte noch eine unterputz Homematik Schalter HM-LC-Sw1PBU-FM rumliegen, da er nicht in mein Schalterprogramm passt. Wollte ihn nun einer sinnvollen Verwendung zuführen. Damit der Laserdrucker nicht immer angeschaltet ist, wird der nun über diesen Schalter, der in einer zweckentfremdeten wasserdichten „Brotdose“ installiert wurde angesteuert. Hier ein paar Fotos:

20140208-195248.jpg

20140208-195259.jpg

20140208-195309.jpg

20140208-195321.jpg

Hier nun der Schaltplan:
Schaltplan

Drückt man den Schalter, geht der Drucker an und schaltet sich nach 10 min wieder automatisch aus. Das anschalten geht auch über die Fhem Gui.

Folgender Code muss in die fhem.cfg eingefügt werden:

define az_drucker_kurz_an notify az_drucker_schalter:on* define az_drucker_aus at +00:10:00 set az_drucker_schalter off
attr az_drucker_kurz_an group Drucker
attr az_drucker_kurz_an room Arbeitszimmer

define FileLog_az_drucker_schalter FileLog ./log/az_drucker_schalter-%Y.log az_drucker_schalter
attr FileLog_az_drucker_schalter group Drucker
attr FileLog_az_drucker_schalter logtype text
attr FileLog_az_drucker_schalter room Arbeitszimmer

In Fhem sieht es dann so aus:
Bildschirmfoto 2014-02-08 um 20.04.42

Später wird das noch automatisiert, das der Drucker automatisch angeht, wenn ein Druck ausgelöst wird und sich dann wieder autom. ausschaltet. Dazu habe ich jetzt schon mal CUPS und AirPrint auf dem Raspberry Pi laufen. Das Script und die Beschreibung kommt dann bald hier…

Wie werden alle installierten Packages auf dem Raspberry Pi angezeigt, gespeichert und gezählt?

Manchmal wird eine Liste aller installierten Packages benötigt. Für ein Backup oder so. Es gibt da wie so oft mehrere Möglichkeiten.

Auf dem Raspberry Pi können solche Listen mit dem Packagemanager dpkg erstellt werden.

Also mit

dpkg --get-selections | grep -v deinstall

werden alle Packages ausgebeben, z.B.

...
cups install
cups-bsd install
cups-client install
cups-common install
cups-filters install
cups-pdf install
cups-ppdc install
...

um mit

dpkg --get-selections | grep -v deinstall > installierte-package.txt

wird die Liste in die Datei installierte-packag.txt gespeichert.

Oder wenn die lange Liste eingeschränkt werden soll, z.B. alle Packages mit cups im Dateiname:

dpkg --get-selections | grep cups
ergibt diese Liste:

...
bluez-cups install
cups install
cups-bsd install
cups-client install
cups-common install
cups-filters install
cups-pdf install
cups-ppdc install
ghostscript-cups install
libcups2:armhf install
libcupscgi1:armhf install
libcupsdriver1:armhf install
libcupsfilters1:armhf install
libcupsimage2:armhf install
libcupsmime1:armhf install
libcup dc1:armhf install
printer-driver-hpcups install
python-cups install
...

Soll das install nicht erscheinen, dann mit dem Stream-Editor sed z.B.

dpkg --get-selections | sed 's:install$::' > installierte-package-nur-name.txt

Wer eine noch ausführlicher Liste mit Beschreibung benötigt, kann diese mit

dpkg --list erzeugen. Z.b.:

...
ii cups 1.5.3-5+deb7u1 armhf Common UNIX Printing System(tm) - server
ii cups-bsd 1.5.3-5+deb7u1 armhf Common UNIX Printing System(tm) - BSD commands
ii cups-client 1.5.3-5+deb7u1 armhf Common UNIX Printing System(tm) - client programs (SysV
ii cups-common 1.5.3-5+deb7u1 all Common UNIX Printing System(tm) - common files
ii cups-filters 1.0.18-2.1 armhf OpenPrinting CUPS Filters
ii cups-pdf 2.6.1-6 armhf PDF writer backend for CUPS
ii cups-ppdc 1.5.3-5+deb7u1 armhf Common UNIX Printing System(tm) - PPD manipulation util
ii curl 7.26.0-1+wheezy8 armhf command line tool for transferring data with URL syntax
...

Die ersten beiden Zeichen in jeder Zeile geben den Paketstatus an ( ii bedeutet installiert ).

Wer also nur die installierten haben möchte, muss

dpkg -l | grep '^ii'

verwenden. Wenn noch mehr Kontrolle über die Liste braucht, kann auch dpkg-query verwenden:

dpkg-query -W -f '${status} ${package} ${version} \n' | sed -n 's/install ok installed //p'
z.B.:

...
cups 1.5.3-5+deb7u1
cups-bsd 1.5.3-5+deb7u1
cups-client 1.5.3-5+deb7u1
cups-common 1.5.3-5+deb7u1
cups-filters 1.0.18-2.1
cups-pdf 2.6.1-6
cups-ppdc 1.5.3-5+deb7u1
...

Wenn ein Debian System mit gleichen Package und Versionsnummern erstellt werden soll, kann man eine Liste mit

aptitude -q -F "%?p=%?V %M" --disable-columns search \~i

in folgendem Format erzeugen:

Package Name=Version und A (wenn automatisch installiert)
Z.b.:
...
cups=1.5.3-5+deb7u1
cups-bsd=1.5.3-5+deb7u1 A
cups-client=1.5.3-5+deb7u1 A
cups-common=1.5.3-5+deb7u1 A
cups-filters=1.0.18-2.1 A
cups-pdf=2.6.1-6
cups-ppdc=1.5.3-5+deb7u1 A
...

Die Liste kann dann wie in http://www.debian-administration.org/article/669/ beschrieben, wieder geladen werden mit:
(ungetestet)

$ cat restore-package-versions
#!/bin/sh
list=$1
shift
aptitude -q -R --schedule-only install $(awk < $list '{print $1}') aptitude -q -R --schedule-only markauto $(awk < $list '$2=="A" {split($1,A,"=");print A[1]}')

Wer nur die Anzahl der installierten Package ermitteln möchte, kann die Ausgabe mit grep zählen (-c count):

dpkg -l | grep '^ii' -c

bei mir: 910

Wie wird ein Bluetooth Dongle an einem Raspberry Pi in Fhem integriert?

Hatte noch ein Bluetooth Dongel von Belkin liegen.
20140204-205131.jpg
Der kann wie folgt an dem rPi angeschlossen werden.

Erst mal das System aktualisieren und das bluetooth Pakage mit ein paar Tools installieren:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get autoremove
sudo apt-get install bluetooth bluez-utils blueman

Dann den Raspberry Pi runter fahren und den USB-Bluetooth Adapter einstecken (siehe Foto oben).
Nach dem Hochfahren können alle USB Geräte gelistet werden mit lsusb. In meinem Fall:

Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
Bus 001 Device 004: ID 050d:0012 Belkin Components F8T012 Bluetooth Adapter
Bus 001 Device 005: ID 1f75:0916

Ob das Gerät läuft kann mit /etc/init.d/bluetooth status getestet werden, Ausgabe wenn alles ok ist:
[ ok ] bluetooth is running.

Jetzt können wir nach Geräten in Reichweite suchen mit hcitool scan. Bei mir ist nur ein Telefon gefunden worden
Scanning ...
XX:2F:80:3F:14:XX SL910
obwohl es mehr gib. Also etwas gewartet und Befehl wiederholt
Scanning ...
XX:2F:80:3F:14:XX SL910
XX:51:C9:EF:B5:XX iMac
XX:D1:CB:E9:33:XX iPhone 5
ok, jetzt ist alles vorhanden.

So jetzt haben wir mit dem hcitool scan die IP Adressen der erreichbaren Bluetooth Geräte ermittelt. Jetzt können wir die IP Anpingen um zu sehen ob das Gerät erreichbar ist mit
sudo l2ping -c 1 XX:D1:CB:E9:33:XX
wenn das Gerät erreichbar ist kommt:
Ping: XX:D1:CB:E9:33:XX from XX:00:3A:69:11:XX (data size 44) ...
44 bytes from XX:D1:CB:E9:33:XX id 0 time 6.09ms
1 sent, 1 received, 0% loss

wenn am Gerät Bluetooth ausgeschaltet ist oder das Gerät nicht mehr in Reichweite ist kommt als Ping Ergebnis
Can't connect: Host is down

Die Bluetooth IP kann auch z.B. im iPhone unter Einstellungen-Allgemein-Info-Bluetooth abgelesen werden.

Dann habe ich mal die Reichweite getestet. Geht nur ein paar Meter. In der Küche mit einer Wand geht es schon nicht mehr. Und in der Stube geht es auch nicht in jeder Ecke.

So, jetzt noch in Fhem integrieren mit:
define iPhone5_Bluetooth PRESENCE local-bluetooth XX:D1:CB:E9:33:XX 10 60
(10 = check interval, alle 10s nach Gerät suchen mit ping ,
60 = present check interval, alle 60s nach Gerät suchen wenn vorhanden)

Nach einem reread wird es auch wie erwartet angezeigt:

Bildschirmfoto 2014-02-04 um 20.55.56

Unter state wir die Erreichbarkeit angezeigt mit present und wenn es nicht in Reichweite ist mit absent.

Welcher Bluetooth Dongel hat die Beste Reichweite und ist günstig? Wie setzt ihr Bluethooth ein?

Wie können eigene Menüeinträge im Fhem-Server auf einen Raspberry Pi und andere Plattformen erstellt werden?

Wenn man in der Fhem-Web-Gui eigene Menüeinträge auf der linken Seite erzeugen will, wie hier z.B. gezeigt
Bildschirmfoto 2014-02-04 um 19.50.15
brauch man nur in der fhem.cfg folgende Zeile erstellen (alles in einer Zeile):

Dann einmal die Konfigurantion neu einlesen mit rereadcfg und schon sind die definierten Menüpunkte vorhanden.

Welche Menüpunkte habt ihr erstellt?

Index aller veröffentlichten Beiträge zum Raspberry Pi

Hier eine Übersicht der veröffentlichten Beiträge zum Raspberry Pi. Sortiert nach den Neuesten zu erst:

Welches Thema fehlt noch?

20140203-220742.jpg

Wie wird der Speicher des Raspberry Pi für die Nutzung ohne Monitor (mit SSH) optimiert?

Der Raspberry Pi (Model B) hat 512 MB RAM die sowohl die CPU als auch die GPU benutzen können. Default wird der RAM Speicher zwischen CPU und GPU mit 448 MB zu 64 MB aufgeteilt. Das kann noch optimiert werden wenn z.B. kein Monitor verwendet wird und nur mit SSH gearbeitet wird.

Nach Aufruf von
sudo raspi-config
zum Menüpunkt 8 Advanced Options gehen und Select wählen.

Bildschirmfoto 2014-01-30 um 16.50.31
Dann unter A3 Memory Split und Select
Bildschirmfoto 2014-01-30 um 19.07.25
Dann im Textfeld eingeben, wieviele MB vom Speicher der Grafikkarte zugewiesen werden sollen. Der minimale Wert von 16 erlaubt der CPU 496 MB Speicher zu benutzen.

Bildschirmfoto 2014-01-30 um 16.49.57

Dann noch einen reeboot
Bildschirmfoto 2014-01-30 um 16.51.04

So hat der rPi ca. 50 MB mehr zur Verfügung wie das SYSMON Plugin von Fhem zeigt:
Bildschirmfoto 2014-01-30 um 17.13.05und nachher
Bildschirmfoto 2014-01-30 um 17.20.47
Den Anstieg des RAMs ist auch im Diagramm gut sichtbar
Bildschirmfoto 2014-01-30 um 17.33.54
Wenn die Einstellung ohne raspi-config gemacht werden soll, kann auch die /boot/config.txt Datei auf gpu_mem=16 gesetzt werden. Nach reeboot stehen die neuen Einstellungen bereit.

Kennt ihr noch weitere Optimierungen?

Wie kann ein laufender Raspberry Pi ein backup seiner eigenen SD-Karte anfertigen?

Wenn an dem rPi ein USB-Stick angeschlossen ist kann ein backup der SD-Karte auf den USB-Stick angefertigt werden mit:
sudo dd if=/dev/mmcblk0 of=/media/usb1/backup/rp-sicherung.img bs=1MB

Das ganze dauert bei mir, mit einem ext4 formatierten 32GB-Stick (USB 3.0) ca. 12 min:
Bildschirmfoto 2014-01-29 um 21.44.40

Das kann auch durch ein script automatisch ausgeführt werden. Das werde ich bei Gelegenheit mal ausprobieren. Oder habt ihr eine andere bzw. bessere Lösung bzw. script? Dann bitte URL oder Script hier posten.

Wie kann ein USB-Stick ext4 formatiert und am Raspberry Pi automatisch angeschlossen (gemounted) werden?

Der rPi hat zwei USB Ports und an jedem kann ein USB-Stick angeschlossen werden. Wie das gemacht werden kann, steht in der ausführlichen Anleitung.

Es geht aber auch mit usbmount, disk-utility und webmin. Also erst einmal ein paar Tools installieren:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install ntfs-3g hfsutils hfsprogs usbmount gnome-disk-utility

In /var/log/messages schauen wo der USB-Stick eingebunden wird. Normal /dev/sda1.
Dann den USB Stick mit ext4 formatieren.

mkfs -t ext4 /dev/sda1

In Webmin den mount anlegen unter:
Bildschirmfoto 2014-01-29 um 20.45.25
Und den mount wie folgt bearbeiten:
Bildschirmfoto 2014-01-29 um 20.44.29

Dann wir beim speichern in /etc/fstab der folgenden Eintrag erstellt:
Bildschirmfoto 2014-01-29 um 20.47.52

So das auch beim nächsten Neustart der USB-Stick automatisch gemountet wird.

Will man den USB-Stick entfernen:
sudo umount /media/usb1

Oder will man die UUID anzeigen:
sudo blkid /dev/sda1

Rechte setzen mit:
sudo chown pi:pi -R /media/usb1
sudo chmod a+w -R /media/usb1

Wie können Benachrichtigungen (notifications) von einem Fhem-Server unter Raspberry Pi an iOS (iPhone, iPad) und Android mit Pushover versendet werden?

Wie können Benachrichtigungen von einem Fhem-Server unter Raspberry Pi und auch anderen Programmiersprachen (Bash, Perl, PHP, Web…) an ein Handy versendet werden. Z.B. will man benachrichtigt werden wenn die Tür geöffnet wird oder wenn der Speicherplatz auf dem Rechner voll ist. Oder wenn die Temperatur unter 0 Grad ist oder oder…

Das geht mit Pushover. Es wird die kostenplichtige App (ein paar Euro) einmalig benötigt, und dann kann man diese REST-API kostenlos nutzen:
Pushover-REST-API

In Fhem in der fhem.cfg kann dann ein Eintrag erstellt werden, der z.B. täglich um 18 Uhr eine Nachricht versenden, wenn die Batterie von einem Gerät (hier Pulse von Withings) kleiner als 50 Prozent der Accu-Ladung ist. Versendete Nachrichten kommen innerhalb von wenigen Sekunden auf den Mobilen Geräten an. Es könnte also auch leicht alle 10 Sekunden abgefragt werden.

Es muss auf der Pushover-Seite nach der Anmeldung eine Application angelegt werden. Von der Seite erhält man dann auch den API-Token und auf der Hauptseite den User-Key. Die müssen hier ersetzt werden:


define pushPulseAccuStand at *18:00:00 {\
my $temp=ReadingsVal("withings_pulse_geraet", "batteryLevel", "0");;\
if($temp < 50){\ system ("curl -s -F 'token=--API-TOKEN' -F 'user=--USER-KEY---' -F 'message=Accu von Pulse beträgt: $temp.' -F 'title=Fhem: Accu Status zu Pulse' http://api.pushover.net/1/messages.json");;}\ }

Es gibt nun auch ein Fhem Modul, was die Nutzung mir dem Pushover Service vereinfacht.
Es muss nun kein curl mehr verwendet werden. Es reicht ein zwei Zeiler.
Erst das Device definieren und dann die Befehle absetzen. Z.B. täglich um 12 Uhr eine Nachricht senden "Pulse laden":


define Pushover1 Pushover TOKEN KEY
define at_Push at *12:00 set Pushover1 msg 'Titel' 'Pulse laden' '' 0 ''

Oder täglich um 12 Uhr Accu Warnung wenn kleiner als 70% Ladung:

define pushPulseAccuStandPulse at *12:00:00 {\
my $accu=ReadingsVal("withings_pulse_geraet", "batteryLevel", "0");;\
if($accu < 70){\ set Pushover1 msg 'Titel' 'Pulse laden, da nur noch $accu Prozent.' '' 0 ''\ }\ }

Habt ihr noch weitere Anwendungsgebiete? Dann bitte als Kommentar.

Wie können die Daten von einer Withings Waage und Pulse mit einem Fhem-Server auf einem Raspberry Pi ausgelesen werden?

Dafür gibt es ein fertiges Modul in Fhem. Es müssen nur die zwei Zeilen mit den device, userid und publickey aus der Web-Oberfläche von Withings (alt)

define withings withings [device]
define withings> withings [userid] [publickey]

in der fhem.cfg ergänzt werden und ein restart des Fhem-Servers durchgeführt werden.

Dann kamm es bei mir zu folgender Fehlermeldung:

Can't locate JSON.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl . ./FHEM) at ./FHEM/32_withings.pm line 9, <> line 3.
BEGIN failed--compilation aborted at ./FHEM/32_withings.pm line 9, <> line 3.

An der Fehlermeldung kann man erkennen das JSON für Perl auf den Rasperry Pi nicht installiert war.
In der Modulbeschreibung steht auch das „JSON, LWP::Simple and Digest::MD5 have to be installed on the FHEM host“. Also noch ein paar Module neu installieren mit

sudo apt-get install libjson-perl libdigest-md5-file-perl liblwp-protocol-https-perl liblwp-protocol-http-socketunix-perl

auf der Konsole. Nach einem Restart, super es wird mein Gewicht angezeigt 🙁

Withings Daten in Fhem
Withings Daten in Fhem

Wie bekomme ich diese Gewichts-Daten nun in ein schönes Diagramm? Hat schon jemand eine passende gplot Datei? Dann bitte hier posten.

Wie wird auf dem Raspberry Pi der Fhem-Server in 15 min. installiert?

Der Fhem-Server läuft bei mir unter OpenWrt. Nun möchte ich in auf einem Raspberry Pi neu installieren. Vorbedingung ist ein laufender rPi unter Debian wheezy.

Zu erste Perl und einig libs installieren. Dann das Debian Package (8,8 MB) von der Fhem Seite runterladen und installieren. Zu guter letzt die Berechtigungen setzen.

Nach eingabe der URL http://[ip-vom-rpi]:8083 wird man mit der GUI des Fhem-Servers begrüßt:Bildschirmfoto 2014-01-17 um 14.36.50

Dann noch ein in dem Browser-Eingabe von Fhem oben, ein update und restart eingeben um den Fhem-Server auf dem neuesten Stand zu bringen.

Fhem kann auf der Konsole mit folgenden Befehlen gestartet oder gestopt werden. Auch der jeweilige Status kann abgefragt werden.

Wie kann auf einem Raspberry Pi ein Sicherheits und Spam-Schutz als IDS „fail2ban“ installiert werden?

Das ist auf der Konsole des rPi nach der Aktualisierung des Systems mit einem Befehl getan:

Weitere Infos zu fail2ban gibt es im MANUAL oder auf der Seite von Sergej Müller.
fail2ban

Hier noch eine Mindmaps, mit den Abhängigkeiten von fail2ban auf Debian von links nach rechts:

fail2ban

Oder noch eine zentrierte Mindmap:
fail2ban.circo

Hast Du noch weitere Infos zu diesem Thema? Welche der drei Mindmaps gefällt Dir am Besten?

Wie kann ein aus dem Internet geladenes *.deb Archive auf einem Raspberry Pi installiert bzw. gelöscht werden?

Manchmal muss man ein deb-Archive auf dem rPi aus dem Internet laden und lokal einspielen, da das deb Archive nicht im Repository vorhanden ist.

Das geht einfach mit dpkg (Debian Package) und nicht mit apt-get da dies nur Pakete aus dem Repository landen kann, das in der Datei /etc/apt/sources.list aufgelistet ist. In der Regel deb http://mirrordirector.raspbian.org/raspbian/ wheezy main contrib non-free rpi.

z.B. wenn das lokale Archive auto-pdf-1.0.deb installiert werden soll:

sudo dpkg -i auto-pdf-1.0.deb
-i = install = installieren
Bildschirmfoto 2014-01-07 um 19.23.37

und schauen ob es installiert wurde mit:

sudo dpkg -l | grep 'autopdf'
Bildschirmfoto 2014-01-07 um 19.25.06 oder
sudo dpkg -l | grep 'auto-*'

und alles wieder löschen mit:
sudo dpkg -r autopdf
-r = remove = löschen
Bildschirmfoto 2014-01-07 um 19.26.00

Auch noch hilfreich für Infos und anzeige des Inhalts des Archivs.

dpkg --info auto-pdf-1.0.deb
dpkg --contents auto-pdf-1.0.deb

Cheat Sheet und man-Page

Was kann getan werden, wenn die NTP-Zeitsynchronisation (Atomzeit) auf dem Raspberry Pi mit ntpdate not found fehlschlägt?

Wenn in der default Konfiguration die Zeitzone mit NTP automatisch abgeglichen werden soll, kommt es beim aufrufen von Webmin (https://IP:10000/)
Bildschirmfoto 2014-01-04 um 18.50.48

beim setzen des NTP-Servers (Atomzeit Physikalisch-Technische Bundesanstalt (PTB), Braunschweig, Germany , Hostname: ptbtime2.ptb.de ) zum Fehler: ntpdate: not found.
Bildschirmfoto 2014-01-04 um 18.49.49

Es muss das fehlende ntpdate Paket installiert werden. Das geht über die Konsole wie folgt:

sudo apt-get update
sudo apt-get install ntpdate

Wie lege ich auf einem Raspberry Pi den default Drucker für lpr (line print) fest?

Wenn man eine Datei von der Konsole mit lpr ausdrucken will kommt evl. diese Fehlermeldung:

pi@rPi ~ $ lpr beispiel-anhang.txt
lpr: Error - no default destination available.

Dann kann man mit lpstat -s alle im System bekannten Drucker listen lassen:

i@rPi ~ $ lpstat -s
no system default destination
device for HP_Color_LaserJet_2600n: dnssd://HP%20Color%20LaserJet%202600n._pdl-datastream._tcp.local/
device for PDF_Drucker: cups-pdf:/

Wie kann nun der default Drucker gesetzt werden? Mit z.B.

pi@rPi ~ $ lpoptions -d PDF_Drucker

Ein wiederholtes checken mit lpstat ergibt nun den gesetzten default Drucker.

pi@rPi ~ $ lpstat -s
system default destination: PDF_Drucker
device for HP_Color_LaserJet_2600n: dnssd://HP%20Color%20LaserJet%202600n._pdl-datastream._tcp.local/
device for PDF_Drucker: cups-pdf:/

Nun läuft auch das Drucken mit

lpr beispiel-anhang.txt

Wie können von einem Raspberry Pi Dateien in die Dropbox per Kommandozeile hochgeladen bez. gelöscht werden?

Es können leicht Daten vom Raspberry Pi von und nach Dropbox geschoben werden. So hat man seine Daten überall gleich.

Es gibt da ein super Script auf Github von Andrea Fabrizi

Es kann wie folgt installiert werden:

Dann auf Dropbox (mit vorhandenen Account und angemeldet)
https://www2.dropbox.com/developers/apps
gehen und eine App anlegen mit „Create App“ -> „Dropbox API app“ –> „Files and datstores“ –> Wichtig nur Zugriff auf das App Verzeichnis erlauben und einen „App Name“ eingeben.

Dann die App key und App secrect in das Script kopieren. Bei der Frage „Permission type, App folder or Full Dropbox [a/f]:“ a
Dann noch einmal: y

Die dann erscheinende URL in einem Browser kopieren und bestätigen. Dann auf Enter und das Script ist mit „Setup completed!“ erfolgreich beendet.

Ein kurzer Test mit im Dropbox-Uploader Verzeichnis

So dann noch mal testen ob das hochladen läuft, wir laden mal die Readme Datei hoch und anschließend ein list:
Bildschirmfoto 2013-12-29 um 20.48.41

Super, es klappt.

Nun noch mal die Version ausgeben mit:

Ausgabe:

Dropbox Uploader v0.14

Weitere Befehlt unter Usage.

Wie kann Webmin auf einem Raspberry Pi installiert werden?

Für die Fernwartung des rPi eignet sich Webmin. Damit kann fast alles über den Browser eingestellt werden.

Evl. gibte es auch schon eine neuere Version von Webmin.

Nach einigen Minuten warten, steht nach einen Aufruf im Browser von
https://Server_IP:10000
der Statusmonitor von Webmin bereit, nachdem die Anmeldung mit root mit Passwort eingegeben wurde:
Bildschirmfoto 2013-12-28 um 17.19.27

Welche Einstellung findet ihr nützlich?

Wie können E-Mails vom Raspberry Pi (rPi) inklusive Anhang mit mutt (nSMPT) versendet werden?

E-Mails vom Raspberry Pi aus versende geht wie schon für den WR703N beschrieben. Ist halt auch Linux.

Also hier noch einmal kurz zusammengefasst, die Installation für den Raspberry Pi mit zusätzlichem Beispiel für das versenden einer E-Mail via mutt inkl. Dateianhang. Vorraussetzung ist eine Raspberry 2014-09-09-wheezy-raspbian.zip installation.

Dann das System updaten und einige Tools installieren mit

Es sind dann folgende Versionen nach ein paar Minuten installiert:

Dann die drei Dateien wie in beschrieben anpassen:

Wenn alles konfiguriert ist, können E-Mails mit Anhang über mutt wie folgt versendet werden:

Nach Enter öffnet sich ein Eingabefeld für die Empfänger E-Mail (to). Bestätigen mit Enter oder anpassen. Dann kommt das Betreff (subject). Weiter mit Enter oder anpassen. Dann öffnet sich der default Editor (nano 2.2.6 oder vi) dort kann der Text der E-Mail eingegeben werden. Speichern (ctrl und O) und Beenden (ctrl und X). Es öffnet sich das mutt Fenster und y zum versenden der E-Mail mit Anhang drücken.

Schon wird die E-Mail versendet.

Oder ohne den mutt Dialog

versendet die E-Mail sofort nach Enter.

So lief es zumindestens auf einen Raspbeery Pi mit einem älteren Debian. Bei dieser aktuellen Version bekomme ich immer diesen Fehler mit mutt:

*** glibc detected *** sendmail: munmap_chunk(): invalid pointer: 0x0141153f ***

Da habe ich auch noch keine Lösung für gefunden. [UPDATE 1.11.2014] Habe den Fehler jetzt gefunden. In der Datei /etc/ssmtp/smtp.conf hatte ich unter rewriteDomain den Username hinzugefügt (rewriteDomain=username@wenzlaff.de) richtig ist aber nur der Domain Name z.B. rewriteDomain=wenzlaff.de. Damit läuft es nun super. [/UPDATE]

Habe es deshalb wie hier beschrieben mit einem nSMTP Client versucht. D.h. erstellen von /etc/msmtprc und (optional) .msmtprc.

Damit läuft das versenden von E-Mails erst einmal.

Hier die Config-Dateien für Strato:

Eine globale /etc/msmtprc Datei, wird gelesen wenn keine im Userverzeichnis vorhanden ist.

Die .msmtprc überschreibt die globale /etc/msmtprc Datei wenn vorhanden (optional).

Wenn die .msmtprc vorhanden ist, muss sie dem User gehören und darf nur für den User schreib und lesbar sein. Ein ls-la muss so aussehen

-rw------- 1 pi pi 479 Oct 13 22:53 .msmtprc

Also evl. noch anpassen:

Testen des E-Mail versand mit:

Ergebnis Auszug:

Habt ihr noch andere Alternativen oder ein Lösung warum mutt nich läuft? Dann hier als Kommentar posten.

Wie können die installierten Versionen der Packages/Programme auf einen Raspberry Pi angezeigt werden?

Manchmal will man wissen, welche Version von einem Programm bzw. Package auf den Raspberry Pi installiert ist und ob es eine (und welche) neue Version von einem Package oder Programm gibt.

Die Anzeige der Versionsnummern ist default nicht vorhanden, läßt sich aber mit

schnell nach installieren.

apt-get install apt-show-versions

Das

gibt dann eine Anleitung und alle Parameter des Programms aus:

apt-show-versions -help
apt-show-versions -help

Ein apt-show-versions gibt dann eine Liste aller Package mit Versionsnummern aus, hier ein kleiner Ausschnitt:
apt-show-versions
apt-show-versions

Will man wissen ob es neue Versionen gibt, hilft ein apt-show-versions -u
apt-show-versions -u
apt-show-versions -u

Weitere Parameter wie regex ua. siehe in der obigen Onlinehilfe.

Wer möchte kann hier weitere Befehle posten!