Hier nun die 2. Version im Gegensatz zu Version 1.
Ist die nun deutlicher?
CDI Mindmap
H2 Datenbank #Mindmap
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:
Kurz ist folgende nötig (BPMN 2.0):
„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.:
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.
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.
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:
Dann den Karotz Service auswählen mit klick auf den Button „Select this Service“.
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“.
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.
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 geöffnet. Von innen sieht sie so aus, voller Hightech:
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.
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:
Für die Empfänger-Seite wird noch ein CUL USB-Stick benötigt
der 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:Cool.
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?
Java Rätsel des Monats
Wenn wir diese Java Klasse compilieren und ausführen:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
public class RaetselDesMonats { private static final String HALLO_WELT = "Hallo Welt!"; public static void main(String[] args) throws Exception { wieSiehtDieMethodeAus(); String welt = "Hallo Welt!"; System.out.println(welt); System.out.println("Hallo Welt!"); System.out.println(HALLO_WELT); } private static void wieSiehtDieMethodeAus() throws Exception { // nur hier Anpassungen möglich } } |
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
Für Eclipse gibt es 45 Sprachen dank Babel Language Packs
Eclipse kann auch in 45 Sprachen und auch auf deutsch umgestellt werden. Es gibt da ein Projekt Babel Language Packs. Habe es mal testweise auf deutsch umgestellt. Ist in deutsch zu 89 % übersetzt.
Nach restart einmal schauen, und dann gleich wieder zurück auf englisch 😉
JavaFX TOP 11 Neuerungen ggü. Swing Mindmap
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:
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:
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?
Wie wird der USB 9097 unter OpenWrt auf einem WR-703N mit owfs installiert?
Der USB-Stick USB9097 mit zwei One-Wire Klinkenstecker Anschlüssen (3,5mm – 5v – Data – GND).

Der USB-Stick ist ein kostengünstiger Busmaster (DS2480B) mit USB-Serial-Adapter (CH341) für USB Bus (2.0) mit Konverter Chip CH341 im syncronen seriellen (SCL, SDA) Modus.
Er wird vollständig von OWFS unterstützt (… aber als serieller Busmaster S9097U-Type mit USB Port!).
Was muss getan werden um einen One-Wire Temperatursensor DS18B20 anzuschließen und die Temperatur auszugeben?
Folgende Package installieren und reboot.
opkg update
opkg install kmod-usb-serial-ch341 kmod-usb-serial
opkg install owfs owhttpd owshell owserver
OWFS wird dann in der Version 2.8p13-1 installiert, es gibt aber schon 2.9.p1 wer die haben will, muss das Package selbst compilieren und installieren.
Ein Verzeichnis erstellen:
mkdir /mnt/1wire
USB-Stick anstecken und Kernel-Meldungen checken mit dmesg ob er erkannt wurde:
dmesg
Ausgabe ua:
...
[ 36.330000] USB Serial support registered for ch341-uart
[ 36.330000] ch341 1-1.2:1.0: ch341-uart converter detected
[ 36.350000] usb 1-1.2: ch341-uart converter now attached to ttyUSB0
...
Oder mit lsusb
Ausgabe ua:
...
Bus 001 Device 005: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter
...
Jetzt können wir den USB-Stick an das erstellte Verzeichnis binden mit:
owfs -d /dev/ttyUSB0 -m /mnt/1wire/
Jetzt werden alle Eigenschaften und Daten als Dateisystem unter dem gemounteten Verzeichnis abgebildet.
Wenn wir dann in das /mnt/1wire Verzeichnis gehen, können wir uns von dort mit cat die Temperatur ausgeben lassen.
cd /mnt/1wire
ls
Ausgabe der Verzeichnisse:
28.A29D8A040000 bus.0 simultaneous structure uncached
alarm settings statistics system
Die Verzeichnis Nr. die mit 28…. startet ist das Verzeichnis des Temperatur Sensors.
cat 28.A29D8A040000/temperature
Ausgabe nach ca. 1 Sekunde mit 12-Bit Genauigkeit in Grad Celsius:
24.375
Oder der Type des Sensors
cat 28.A29D8A040000/type
Ausgabe:
DS18B20
Oder die einmalige ID:
cat r_address
Ausgabe z.B.
2B0000048A9DA228
Oder…
Habt ihr noch Fragen oder Anregungen?
Wie wird ein Bluetooth Dongle an einem Raspberry Pi in Fhem integriert?
Hatte noch ein Bluetooth Dongel von Belkin liegen.
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 ...
obwohl es mehr gib. Also etwas gewartet und Befehl wiederholt
XX:2F:80:3F:14:XX SL910
Scanning ...
ok, jetzt ist alles vorhanden.
XX:2F:80:3F:14:XX SL910
XX:51:C9:EF:B5:XX iMac
XX:D1:CB:E9:33:XX iPhone 5
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:
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?
Top 20 Programmiersprachen 2014 #Mindmap
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:
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 🙁
Wie bekomme ich diese Gewichts-Daten nun in ein schönes Diagramm? Hat schon jemand eine passende gplot Datei? Dann bitte hier posten.