news.php.net: php.db
 
http://news.php.net/group. ...
Re: CHAR field with charset UTF8 and COLLATION UNICODE_CI_AI or UTF8PHP is loading white spaces

RE: Re: CHAR field with charset UTF8 and COLLATION UNICODE_CI_AI or UTF8 PHP is loading white spaces

Re: CHAR field with charset UTF8 and COLLATION UNICODE_CI_AI orUTF8PHP is loading white spaces

Re: CHAR field with charset UTF8 and COLLATION UNICODE_CI_AI orUTF8PHP is loading white spaces

Re: Re: CHAR field with charset UTF8 and COLLATIONUNICODE_CI_AI or UTF8PHP is loading white spaces

Re: Re: CHAR field with charset UTF8 and COLLATIONUNICODE_CI_AI or UTF8PHP is loading white spaces

Re: Re: CHAR field with charset UTF8 and COLLATIONUNICODE_CI_AI or UTF8PHP is loading white spaces

Re: Re: CHAR field with charset UTF8 and COLLATIONUNICODE_CI_AI or UTF8PHP is loading white spaces

Re: Re: CHAR field with charset UTF8 and COLLATIONUNICODE_CI_AI or UTF8PHP is loading white spaces

RE: some interesting facts

Re: I've found it at last!

MySQL connection

Re: MySQL connection

Re: MySQL connection

Re: MySQL connection

Re: MySQL connection

?Re: I've found the stuff you were looking for

Weird error... (after server crash @ISP)

Re: Weird error... (after server crash @ISP)

[SOLVED] Re: Weird error... (after server crash @ISP)


fase4 RDF Error: Cannot open cache/11c9836576286eb47a81072374825dea

Exception at Line: 973
PHP Summit 2013 – 12 Trainer mit 18 Workshops zu allen wichtigen PHP-Themen
International PHP Conference: Agile, JavaScript und Responsive Design
PHP Summit Frühling 2013 in München
PHP Summit 2012 – 18 interaktive Workshops mit allen wichtigen PHP-Themen
thePHP Curriculum bietet neuartige interdisziplinäre Ausbildung
International PHP Conference 2012
PHP 5.4.0 final
PHP Summit &JavaScript Days 2012
PHP 5.4 RC1 released
PHP Summit – 18 Power Workshops

fase4 RDF Error: XML error: Mismatched tag at line 40

Exception in function parse_RDF().

 
raspberry.tips
raspberry.tips - Raspberry Pi Projekte und Tutorials

Aus Kostengründen ist die Hardware-gestützte Dekodierung von von MPEG2 und VC1 kodierten Videos auf allen Raspberry Pi Modellen nur nach dem Kauf und dem Freischalten einer zusätzlichen Lizenz möglich. Gerade im Media Center Betrieb ist diese von Vorteil da wir die CPU nicht mit der zusätzlichen Arbeit zum dekodieren von Videos belasten möchten. Die Kosten …

Raspberry Pi MPEG2 Lizenz Hack / Patch
raspberry.tips

raspberry.tips
raspberry.tips - Raspberry Pi Projekte und Tutorials

Aus Kostengründen ist die Hardware-gestützte Dekodierung von von MPEG2 und VC1 kodierten Videos auf allen Raspberry Pi Modellen nur nach dem Kauf und dem Freischalten einer zusätzlichen Lizenz möglich. Gerade im Media Center Betrieb ist diese von Vorteil da wir die CPU nicht mit der zusätzlichen Arbeit zum dekodieren von Videos belasten möchten.

Die Kosten von ca. 3€ für beide Lizenzen in Abhängigkeit zum Wechselkurs sind eigentlich zu vernachlässigen. Ich persönlich habe, wie ihr euch sicherlich vorstellen könnt, unzählige Raspberry Pis und irgendwann die Übersicht verloren für welche Hardware ich die Lizenzen gekauft und auch tatsächlich aktiviert hatte. Da der Raspberry Pi Shop auch auf mehrere Nachfragen nicht beantworten konnte wie ich eine Lizenz denn zu einer Serien Nummer zuordnen kann (in der Bestellbestätigung ist die zugehörige Seriennummer nicht enthalten und auch in der in der Historie im Shop nicht einsehbar) bin ich durch Zufall auf folgenden Hack gestoßen mit welchem sich die Lizenzprüfung austricksen lässt.

Tatsächlich besitze ich für jeden meiner Pis eine passende Lizenz, kann diese aber nicht mehr zuordnen und habe Sie in Abhängigkeit zum Einsatz auch nicht immer aktiviert (mit aktuellen Raspbian Betriebssystemen ist die Aktivierung permanent und nur einmal notwendig).

Der MPEG2 Lizenz Hack / Patch

Bei der Aktivierung der Lizenz schreibt der Raspberry Pi den Lizenzstatus in einen einmalig beschreibbaren Speicher, von dort wird der Status bei jedem Start abgefragt und die Hardware-gestützte Dekodierung entsprechend freigeschalten. An dieser Stelle setzt der Trick an, die Datei „start.elf“ initialisiert während des Starts das Grafiksystem. Durch einen „Patch“ der Datei überspringt das Programm die Lizenzprüfung und meldet immer eine vorhandene Lizenz zurück.

Auf einer aktuellen Raspbian Installation mit aktueller Firmware kann der Patch wie folgt aufgebracht werden.

sudo su
 
 cd /boot
 cp start.elf start.elf_backup && \
 perl -pne 's/\x47\xE9362H\x3C\x18/\x47\xE9362H\x3C\x1F/g' < start.elf_backup > start.elf

Details zum ursprünglich von u/fuck_the_mpeg_la veröffentlichten Patch gibt es auf GitHub.

Bitte kauft euch für ein paar Euro die Lizenzen. Der Patch ist Abhängig zur Firmware und kann den ordentlichen Start eures RasPi verhindern oder im schlimmsten Fall das Board zertören. Erstellt euch sicherheitshalber eine Sicherung.

Raspberry Pi MPEG2 Lizenz Hack / Patch
raspberry.tips

" target="_blank" >
raspberry.tips
raspberry.tips - Raspberry Pi Projekte und Tutorials

Im Frühjahr 2018 wurde der neue Raspberry Pi 3B+ veröffentlicht, wie erwartet gibt es kein komplett neuen „Raspberry Pi 4“ sondern eine etwas Leistungsfähigere Variante des bekannte Pi3 ohne größere Funktionsänderungen oder Erweiterungen. Damit dürfte dann auch das Maximum aus der bisher verwendeten Plattform herausgeholt worden sein und wir sind gespannt wann wir ein weiteres …

Details zum neuen Raspberry Pi 3B+
raspberry.tips

raspberry.tips
raspberry.tips - Raspberry Pi Projekte und Tutorials

Im Frühjahr 2018 wurde der neue Raspberry Pi 3B+ veröffentlicht, wie erwartet gibt es kein komplett neuen „Raspberry Pi 4“ sondern eine etwas Leistungsfähigere Variante des bekannte Pi3 ohne größere Funktionsänderungen oder Erweiterungen. Damit dürfte dann auch das Maximum aus der bisher verwendeten Plattform herausgeholt worden sein und wir sind gespannt wann wir ein weiteres Modell erwarten können.

Der Pi 3B+ wartet mit Mehrleistung und einigen Detailverbesserungen auf, wie gewohnt kann fast alles Zubehör und Software weiter verwendet werden. Der offizielle Preis ist im Vergleich zum Vorgänger Raspi 3B gleich geblieben sodass sich bei einer Neuanschaffung auf jeden Fall das RasPi Modell 3B+ empfiehlt.

 

Details zum neuen Raspberry Pi 3B+

  • Ein neuer WLAN Chip (CYW43455) und eine neue Flachantenne sorgen nun für eine höhere Leistungsfähigkeit (bis zu 100MBit statt bisher maximal 47MBit). Der WLAN Chip ist nun Dual-Band fähig und unterstützt neben 2,4GHz WLAN auch modernes 5GHz WLAN. Ebenfalls ist nun Bluetooth in der Version 4.2 mit dem Chip möglich was schnellere Zugriffe und einen sparsameren Betrieb bedeutet.
  • Das SoC bzw. die CPU hat ein Update erhalten (BCM2837B0) und taktet nun mit 1,4GHz anstatt bisher 1,2GHz, durch das Metallgehäuse des Chips wird die Wärmeabfuhr verbessert und euer RasPi kann länger auf der vollen Taktfrequenz laufen bevor die CPU wegen zu hoher Wärmeentwicklung heruntertakten muss.
  • Der neue Power Management Chip unterstützt das neue SoC und besitzt ebenfalls eine bessere Wärmeabfuhr bzw. Wärmeentwicklung um ein besseres Lastverhalten zu ermöglichen. Die Leistungsaufnahme des Modell B+ ist mit Ethernet und 1-2 USB Eingabegeräten nun um ca. 1W auf ca. 3,5W gestiegen. Um so wichtiger ist ein Leistungsstarkes Netzteil.
  • Ebenfalls ist ein neuer USB-Chip auf dem RasPi 3B+, dieser ermöglicht endlich eine gesteigerte Übertragungsgeschwindigkeit für den am USB-Chip angeschlossenen LAN-Port. Bisher ca 40Mbit und jetzt bis ca. 300MBit.
  • Power over Ethernet (PoE) kann den Raspberry Pi nun anstelle des Netzteils mit Strom versorgen, allerdings ist hierfür ein extra HAT Board und ein PoE fähiger Switch. Der HAT kostet ca. 20€.

Es sollte zumindest das Raspbian Image Version 2018-03-13 eingesetzt werden.

Fazit

Sehr schade das es noch immer kein komplett neues Board mit aktuellem SoC gibt, aus meiner Sicht spräche nichts dagegen die Modellreihe um eine weitere jüngere zu erweitern. Der Bastler kann dann wählen ob er lieber ein älteres Board mit hoher Kompatibilität wählt oder eben ein aktuelles Board das zwar Leistungsfähiger ist dafür aber einige Anpassungen und ein neues Ökosystem benötigt. Daher folgende Empfehlung

  • Bei einer Neuanschaffung unbedingt das Modell 3B+ kaufen. Es kostet nicht mehr, ist dafür etwas schneller.
  • Wer bereits einen 3B besitzt benötigt nur in Sonderfällen ein Update (z.B. PoE oder hohe Bandbreitenanforderung) da der Leistungsunterschied im Alltagsbetrieb ehr nicht zu spüren ist.

Details zum neuen Raspberry Pi 3B+
raspberry.tips

" target="_blank" >
raspberry.tips
raspberry.tips - Raspberry Pi Projekte und Tutorials

Die Raspberry Pi Foundation bietet ab sofort die Möglichkeit seine Raspberry Pi´s über das Netzwerk, ganz ohne SD-Karte, mit einem Betriebssystem zu versorgen. Diese Idee finde ich, vor allem dann wenn man immer wieder mit unterschiedlichen Images kurzzeitig Projekte auf seinem Pi laufen lassen möchte, echt super. Heute zeige ich euch wie Ihr mit dem …

PiServer – Raspberry Pi ohne SD-Karte über das Netzwerk starten
raspberry.tips

raspberry.tips
raspberry.tips - Raspberry Pi Projekte und Tutorials

Die Raspberry Pi Foundation bietet ab sofort die Möglichkeit seine Raspberry Pi´s über das Netzwerk, ganz ohne SD-Karte, mit einem Betriebssystem zu versorgen. Diese Idee finde ich, vor allem dann wenn man immer wieder mit unterschiedlichen Images kurzzeitig Projekte auf seinem Pi laufen lassen möchte, echt super.

Heute zeige ich euch wie Ihr mit dem PiServer eure Raspberry Pis im Heimnetzwerk booten und betreiben könnt.

Video eines Netzwerkboots aus meinem Setup

Das Booten dauert etwas über eine Minute, dafür das ich für kurze Tests keine SD-Karte bespielen muss ist das für mich perfekt.

Hardware

Wichtig! Das booten ohne SD-Karte funktioniert nur für Kabelnetzwerke, nicht über WLAN. Daher muss sowohl euer Desktop als auch eure Raspberry Pi´s via Kabel am Netz hängen. Ich habe bei mir eine FritzBox an welche ich die Pi´s über einen extra Netzwerk-Switch ans Heimnetz angeschlossen habe.

PiServer als Virtual Box System installieren

Um den PiServer ausführen zu können benötigen wir das Betriebssystem „Raspberry Pi Desktop auf Debian Stretch Basis“ und einen Desktop Rechner. PiServer kann nicht direkt auf einem Raspberry Pi ausgeführt werden da der PiServer bzw. das Betriebssystem nur auf einem Prozessor mit x86 Architektur läuft, also einem gewöhnlichen Desktop System.

Da ich keinen extra Rechner als PiServer abstellen möchte verwende ich ein virtuelles System auf meinem Windows 10 Desktop Rechner. Die Software Oracle VirtualBox ermöglicht es uns das für den PiServer notwendige Raspberry Pi Desktop Betriebssystem als „Virtuelles System“ auf unserem Desktop auszuführen.

Virtuelle Maschine erstellen

  • Ladet euch Oracle VM VirtualBox auf euren Windows Rechner und installiert die Software.
  • Nach dem ersten Start von VirtualBox klickt ihr auf neu um ein neues virtuelles System zu erzeugen

Oracle VM VirtualBox Manager

  • Wähl als Name PiServer, den Typ Linx und als Version Debian (32Bit) für euren virtuellen Rechner

Virtuelle Maschine erzeugen

  • Da ich ausreichend Arbeitsspeicher auf meinem Desktop habe zweige ich 2048MB (2GB) davon für meinen virtuellen Raspbian Desktop ab, falls ihr wenig Arbeitsspeicher hab verwendet 1024MB

Virtuelle Maschine erzeugen

  • Dann erzeugen wir eine neue virtuelle Festplatte für unseren Rechner vom Typ VDI

Virtuelle Maschine erzeugen Festplatte   Virtuelle Festplatte erzeugen

  • Es reicht vollkommen aus wenn wir den Speicher für die virtuelle festplatte dynamisch zuordnen und als maximale Größe 20GB angeben

Virtuelle Festplatte Dynamisch   Virtuelle Festplatte größe

Nachdem eurer virtuelles System erstellt wurde müssen wir die ISO Datei, welche die Installationsdateien für das Raspberry Pi Desktop Betriebssystem enthält, als CD an unseren virtuellen Server anhängen und die Installation starten

VirtualBox System editieren

  • Unter Massenspeicher wählt ihr das CD-Laufwerk und hängt die eben runtergeladene ISO über Datei für optisches Medium wählen ein

VirtualBox ISO Mounten

  • Stellt die Netzwerkkarte über Netzwerk auf Netzwerkbrücke

Raspbian Desktop auf der Virtuelle Maschine installieren

  • Dann startet ihr euren virtuellen Rechner durch einen Klick auf Starten

Oracle VM VirtualBox Manager - VM starten

  • Die Installation wird nun automatisch von der eingelegten CD (ISO Datei) gestartet, wählt Install im ersten Menü
    • Wichtig! Ist eure Maus im Fenster der VM gefangen könnt ihr mit der rechten STRG Taste auf eurer Tastatur aus dem Fenster springen

Raspberry Pi Desktop installieren

  • Folgt dem Installation-Dialog, ich wähle Englisch als Sprache und habe demnach auch eine Englische Tastatur Eingabe.

Raspberry Pi Desktop Sprache wählen

  • Dann fragt euch das Setup nach der Ziel Festplatte für die Installation. Da wir nur eine virtuelle Festplatte angelegt haben akzeptiere ich alle Standardeinstellungen die mir durch das Setup vorgeschlagen werden,

Raspberry Pi Desktop Disk Formatieren   Raspberry Pi Desktop Disk Formatieren

Raspberry Pi Desktop Disk Formatieren   Raspberry Pi Desktop Disk Formatieren

Raspberry Pi Desktop Disk Formatieren

  • Da wir nur ein Festplatte haben lege ich auch den Boot Loader, welcher für das Starten des Betriebssystems verantwortlich ist, auf die vorgeschlagene virtuelle Festplatte

Raspberry Pi Desktop Bootloader

  • Nach etwas Wartezeit ist die Installation abgeschlossen und euer System startet nach bestätigen des Dialogs neu.

Raspberry Pi Desktop Installation beendet

  • Wartet den ersten start des Desktops ab bevor ihr weiter macht

Gast Erweiterung installieren

Um sicherzustellen das der Raspbian Desktop korrekt funktioniert sind einige Treiber notwendig die Virtual Box für uns mitbringt ohne die Treiber (Gast Erweiterung) ist die Leistung des Systems schlecht und die Funktion eingeschränkt.

  • Wählt im Fenster eurer virtuellen Maschine unter Geräte > Gasterweiterungen einlegen (Es wird wieder eine ISO Datei in das virtuelle CD Laufwerk eingelegt)

Virtuelle Maschine Gast erweiterung installieren

  • Beendet den Dialog mit CANCLE und öffnet ein Terminal

ISO Meldung Gast Erweiterung   Raspberry Pi Desktop Terminal öffnen

  • Führt zur Installation der Treiber der VirtualBox (Guest Additions) und zum Update eures Systems folgende Befehle im Terminal aus.
    • Falls ihr in Englisch installiert habt könnt ihr vorher über das Start Menu > Preferences > Raspberry Pi Configuration > Localisation > Set Keyboard die Eingabesprache ändern
sudo sh /media/cdrom/VBoxLinuxAdditions.run
 sudo apt-get update && sudo apt-get upgrade
 sudo reboot

Netzwerk Boot am Raspberry Pi einrichten

Um euren Raspberry Pi ohne SD-Karte über das Netzwerk starten zu können muss einmalig der Netzwerk Boot pro Raspberry Pi aktiviert werden. Ich starte hierzu jeden Raspberry Pi einmalig mit einer Raspbian Light SD-Karte und gebe folgende Kommandos ein. Für Details zum flashen der SD-Karte mit dem aktuellen Raspbian Image könnt ihr meinen Einsteiger Guide verwenden.

Als erstes aktualisieren wir das System um sicherzustellen das der Netzwerk Boot funktioniert,

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

Dann editieren wir die Datei config.txt mit Nano

sudo nano /boot/config.txt

Fügt folgende Zeile am Ende der Datei ein

program_usb_boot_mode=1

Speichert mit STRG + X, Y und ENTER

Nach einem Neustart ist die Funktion aktiviert.

sudo reboot

Ihr könnt euren Pi ausschalten und die SD-Karte entfernen, wir benötigen diesen erst später wieder.

PiServer installieren

Das aktuelle Image des Raspberry Pi Desktop hat zwar schon eine PiServer Version integriert, diese hat aber einen Fehler und kann nicht verwendet werden. Kurzer Hand kompilieren und installieren wir PiServer aus dem Quellcode, das dauert nur wenige Minuten.

Als erstes Installieren wir aus einem Terminal alle notwendigen Pakete um den Code kompilieren zu können.

Terminal

Gebt folgenden Befehl ein

sudo apt-get install devscripts debhelper cmake libldap2-dev libgtkmm-3.0-dev libarchive-dev libcurl4-openssl-dev intltool gksu git binfmt-support qemu-user-static

Dann laden wir uns den PiServer Code aus dem Repository

git clone --depth 1 https://github.com/raspberrypi/piserver.git

Wir wechsel in das Verzeichnis und compilieren den Code

cd piserver
 debuild -uc -us

Nach dem Erstellen des Installers führen wir diesen aus. Eventuell ist die Version / Datei eine andere prüft den Datei-Namen ggf. vorher mit ls /home/pi

cd ..
 sudo dpkg -i piserver_0.1_i386.deb

Nun können wir unseren PiServer, welcher das Raspbian Betriebssysteme an die Raspberry Pi´s über das Netz verteilt, einrichten.

  • Startet den PiServer dann über das Start Menu > Preferences > PiServer

Raspberry Pi Dekstop PiServer Starten

  • Den ersten Dialog mit Next bestätigen

PiServer einrichten

  • Steck dann euren Raspberry Pi an den Strom und das Ethernet an, nach kurzer Zeit taucht dieser im Dialog auf. Bestätigt dann mit Next

PiServer einrichten

  • Die Benutzer zur Anmeldung an den Pi´s verwalten wir mit PiServer und belassen daher den Standard

2018-02-04 22_15_58-PiServer [wird ausgeführt] - Oracle VM VirtualBox

  • Erstellt dann einen Benutzer / Passwort mit welchem ihr euch nach dem Booten an den Pi´s anmelden könnt

PiServer Benutzer anlegen

  • Wählt das Betriebssystem aus das ihr auf eurem Raspberry Pi verwenden möchtet, ich benutze Raspbian Lite. Ihr könnt später auch noch ein anderes Image hinzufügen.

PiServer Betriebssystem auswählen

  • Der Download dauert ein paar Minuten, beendet die Installation dann mit Finish

   

  • Nach dem Start des PiServer (Über Start > Preferences > PiServer) könnt ihr euren Raspberry Pi noch mal an den Strom stecken und über das Netzwerk booten und euch mit dem angelegten Benutzer / Passwort anmelden.

PiServer

Viel Spaß!

PiServer – Raspberry Pi ohne SD-Karte über das Netzwerk starten
raspberry.tips

http://raspberry.tips/raspberrypi-tutorials/piserver-raspberry-pi-ohne-sd-karte-ueber-das-netzwerk-starten/feed2" target="_blank" >
raspberry.tips
raspberry.tips - Raspberry Pi Projekte und Tutorials

Schon länger spiele ich mit dem Gedanken den Stromverbrauch im Haus etwas genauer unter die Lupe zu nehmen. Neben den Messungen an einzelnen Steckdosen, welche bisher immer mal wieder mit einem Zwischenstecker erledigt habe, wollte ich auch mal den gesamten Verbrauch zu Gesicht bekommen da sich viele Verbraucher nicht mit einem Zwischenstecker messen lassen (Heiz-pumpe, …

Smartmeter Stromzähler mit dem Raspberry Pi auslesen und Stromverbrauch aufzeichnen
raspberry.tips

raspberry.tips
raspberry.tips - Raspberry Pi Projekte und Tutorials

Schon länger spiele ich mit dem Gedanken den Stromverbrauch im Haus etwas genauer unter die Lupe zu nehmen. Neben den Messungen an einzelnen Steckdosen, welche bisher immer mal wieder mit einem Zwischenstecker erledigt habe, wollte ich auch mal den gesamten Verbrauch zu Gesicht bekommen da sich viele Verbraucher nicht mit einem Zwischenstecker messen lassen (Heiz-pumpe, Außenlicht etc).

Allerdings gab es am Markt für mein Homematic System nur die Möglichkeit den Verbrauch an einem klassischen Ferrari-Stromzähler zu messen oder das ganze via recht teurer SD-Zähler LED an den neueren Stromzählern abzubilden (wobei die Unterstützung für die SML nur selten gegeben ist). Durch Zufall entdeckte ich das die meisten neuen Digitalen Zähler eine optische Datenschnittstelle haben und darüber Verbrauchswerte via Smart Messaging Language (SML) ausgeben. Das Protokoll wurde in verschiedenen Foren schon diskutiert und gut beschrieben, die Ausgabe erfolgt via Infrarot LED am Zähler und lässt sich somit einfach anhand eines Raspberry Pi abgreifen.

Stromzähler S0

Ich habe von den Stadtwerken einen Ehz-01Dvar Wirkverbrauchszähler von ABN Braun eingebaut bekommen. Ab 2017 sind die intelligenten Stromzähler pflicht und die meisten Modelle haben, so wie meiner, eine optische Datenschnittstelle D0 (Infrarot LED) nach DIN EN 62056-21 die uns die Werte im SML-Format liefert. Wenn ihr euch unsicher seit ob die Datenschnittstelle eures Zählers im Standard aktiv ist könnt ihr mit eurem Smartphone ein paar Photos knipsen, auf den Bildern solltet ihr das Infrarot-Licht zu Gesicht bekommen da der digitale Chip eures Smartphone auch IR-Licht sieht. Ich habe einige Bilder machen müssen bis ich durch Zufall den richtigen Moment erwischt habe. Schaut am Besten zusätzlich in das Datenblatt eures Zählers und fragt, falls eine Freischaltung notwendig ist, bei eurem Betreiber an. Meist erhaltet ihr dann unter Angabe eurer Zählernummer eine Anleitung und einen PIN via Post.

Manche Zähler haben auch noch/nur eine S0-Schnittstelle (Bei mir die Infrarot LED ganz links oben), diese übermittelt pro verbrauchter Kilowatt Stunde eine bestimmte Anzahl an Impulsen (blinken). Im Prinzip kann mit der selben Schaltung der Verbrauch auch dort abgefragt werden, die Übermittlung via SML ist aber die moderner Variante und bietet mehrer Möglichkeiten und Informationen.

Hardware

Raspberry Pi

Schaltung

Da ich in meinem Stromkasten im Keller keinen WLAN Empfang habe verwende ich einen Raspberry pi 3 mit Ethernet Kabel und PowerLine Adapter, Powerline erhalte ich direkt im Sicherungskasten über eine Hutschienen Schuko Steckdose. Als Alternative kann auch ein WLAN PowerLine Extender an der nächsten vorhandenen Steckdose neben eurem Stromkasten verwendet werden oder das Kabel der Photodiode mit Klingeldraht o.ä. um einen Meter verlängert und der Pi außerhalb des Stromkastens platziert werden (war für mich keine Option).

Verkabelung der Schaltung

Der Aufbau unserer Schaltung ist sehr simpel, wir haben ja nur den Phototransistor und den Widerstand welche wir mit unserem Raspberry Pi verbinden müssen. Das mini Steckbrett benutze ich der Einfachheit halber, das Steckbrett kann mittels doppelseitigen Klebeband einfach im Sicherungskasten festgeklebt werden und ist somit flexibel, wir haben keinen Zug auf den Kabeln der Photodiode. Fritzing File

schaltung smart meter raspberry pi

Wichtig! Der Phototransistor hat einen Emitter und einen Kollektor. Achtet darauf diese richtig anzuschließen, mit Sicht auf die Diode ist der Emitter links und der Kollektor rechts.

Rot: 3,3V – PIN1
Schwarz: GND – PIN6
Blau: RXD – PIN10
Grün: Kollektor
Geld: Emitter
R1: 1k Ohm zwischen Rot und dem Kollektor bzw. RXD

Raspberry Pi für den SML Datenempfang einrichten

Ich verwende als Image das aktuelle Raspbian Stretch und habe meinen Raspberry Pi anhand meines Einsteiger Guides eingerichtet. Alles weitere könnt ihr via SSH oder direkt an der Konsole oder mit einer VNC Verbindung über das Terminal auf dem Desktop erledigen.

Raspberry Pi am Smart Meter anbringen

Bringt euren Raspberry Pi in eurem Sicherungskasten an, der Phototransistor wird mit etwas doppelseitigem Klebeband direkt über die Sende IR-LED geklebt, nach Möglichkeit so das von außen kein Licht mehr eindringt. Schaut in der Bedienungsanleitung eures Zählers welches die Sende LED ist, meist aber die Rechte, die Linke ist für das Empfangen.

Stromzähler-SML-Raspberry Pi

Bei mir schaut das Setup so aus (noch zum testen, wird dann ordentlich verkabelt).

raspberry pi smartmeter

Hardware Serial Port aktivieren

Wie ihr sicherlich bemerkt habt verwenden wir den RXD Pin der UART  Schnittstelle unseres Raspberry Pi 3 um die Impulse unseres Phototransistors auszulesen. In alten Raspbian bzw. Raspberry Pi Versionen war die UART Schnittstelle (Hardware Serial Port,  TXD Pin8 und RXD Pin10) über das Gerät /dev/ttyAMA0 auszulesen, in neueren Versionen hängt daran allerdings der Bluetooth Chip und wir können uns der Schnittstelle nicht mehr so einfach bedienen.

Um den UART Hardware Serial Port wieder nutzen zu können sind einige Anpassungen notwendig, hierbei müssen wir allerdings auf Bluetooth verzichten.  Als erstes müssen wir das Consolen Feature deaktivieren um zu verhindern das der Kernel den Serial Port verwendet. Hierfür verwenden wir das Tool raspi-config

sudo raspi-config

Dort wählt ihr:

  • 5 Interfacing options
  • P6 Serial

Die erste Frage beantwortet ihr mit NO, das deaktiviert die Serial Konsole des Kernel

disable serial console

Die zweite Frage beantwortet ihr mit YES um den Hardware Serial Port zu aktivieren

uart enabled

  • Bestätigt mit OK und dann Finish um raspi-config zu beenden

Dann deaktivieren wir Bluetooth um die Hardware Serial Port wieder als Hardware Serial unter /dev/ttyAMA0  benutzen zu können. Wir editieren hierzu die Datei config.txt mit dem Editor nano.

sudo nano /boot/config.txt
 

Fügt ans ende der Datei folgende Zeile an

dtoverlay=pi3-disable-bt

Speichert die Datei mit STRG+X, Y und ENTER.

Zum Schluss deaktivieren wir noch den Systemdienst des Bluetooth Modems um zu verhindern das sich der Dienst immer wieder des Geräts bedient.

sudo systemctl disable hciuart

Nach einem Reboot können wir den Hardware Serial Port wieder wie früher benutzen.

sudo reboot

Minicom installieren und Photodiode testen

Als Tool um die Serielle Kommunikation zu testen verwenden wir Minicom, dieses installieren wir noch.

sudo apt-get -y install minicom

Wir müssen Minicom noch auf die korrekte Baudrate (9600), 8Bit und keine Parität einstellen, startet minicom

sudo minicom -s

  • Wählt „Serial port setup
  • Drückt dann A für „Serial Device
  • Gebt folgendes Gerät via Tastatur ein /dev/ttyAMA0 bestätigt mit Enter

minicom serial device

  • Drückt dann E für „Bps/Par/Bits
  • Wir drücken dann nacheinander folgende Buchstaben um „9600 8N1“ zu wählen und bestätigen mit Enter
    • C
    • L
    • V
    • W

serial setup

  • Wählt dann „Save setup as dfl“ und beendet den Dialog mit „exit

Dann solltet ihr innerhalb von minicom auch schon Daten zu sehen bekommen (komische Zeichen, dann passt alles), falls nicht stimmt die Schaltung nicht, UART ist nicht ordentlich aktiviert, euer Zähler sendet nichts oder die Photodiode klebt nicht ordentlich über der Sende IR LED (mir ist diese mehrfach verrutscht). Minicom kann dann jeder Zeit mit CTRL+A, Q und ENTER beendet werden.

Wenn Daten empfangen wurden stellen wir die Werte noch fest ein um auch mit anderen Programmen ordentlich auf die Serielle Schnittstelle zugreifen zu können

sudo stty -F /dev/ttyAMA0 1:0:8bd:0:3:1c:7f:15:4:5:1:0:11:13:1a:0:12:f:17:16:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0
 

SML Telegramm vom Smart Meter am Raspberry Pi lesen und verarbeiten

Um die Daten zu verarbeiten kann im Prinzip jede Programmiersprache verwendet werden die auf den Serial Port zugreifen und die Daten verarbeiten kann. Da das SML Protokoll allerdings sehr sehr komplex ist verzichte ich nach langen versuchen auf eine selbst programmierte Lösung und verwende die Software von volkszähler.org

Die Software besteht aus zwei Komponenten:

  1. Der VZLogger -> Liest die Daten via Serial und versendet diese an ein konfigurierbares Ziel
  2. Die Volkszähler Middleware & Frontend -> Die Middleware nimmt die Daten entgegen und speichert Sie in einer MySQL Datenbank, das Frontend ist für die Ausgabe verantwortlich.

Installiert euch die beiden Software-Bestandteile auf eurem Raspberry Pi wie im Wiki beschrieben über das Build Script (VZLogger) und das Install Script (Middleware). Achtet darauf das für den VZLogger Autostart aktiviert wurde.

VZLogger auf dem Raspberry Pi einrichten

Der VZLogger benötigt eine Konfigurationsdatei die beschreibt aus welcher Quelle, welche Daten gelesen werden sollen und wohin diese versendet werden.

Wir erstellen uns als erstes eine dummy Konfiguration um herauszufinden welche SML Daten der VZLogger via Photodiode überhaupt erhält (ist von Zähler zu Zähler unterschiedlich).

Wir erstellen uns eine Konfigurationsdatei mit nano.

sudo nano /etc/vzlogger.conf

Fügt folgenden Inhalt ein

{
 "retry" : 0,                    /* sleep between failed requests (seconds) */
 "daemon": true,                 /* run as deamon*/
 "verbosity" : 15,               /* Loglevel between 0 (nothing) and 15 (higest) */
 "log" : "/var/log/vzlogger.log",/* logfile path */
 
 "local" : {
         "enabled" : false,      /* Enable / Disable local HTTP-Server for serving live readings */
         "port" : 8080,          /* TCP port for the local HTTP-Server */
         "index" : true,         /* Provide a index listing of available channels */
         "timeout" : 30,         /* timeout for long polling requests (seconds) */
         "buffer" : 600          /* Buffer reading for the local interface (seconds) */
 },
 
 "meters" : [{
         "enabled" : true,           /* disable or enable meter */
         "protocol" : "sml",         /* use 'vzlogger -h' for available protocols */
         "device" : "/dev/ttyAMA0",  /* Serial Port of Photodiod */
         }
 ]}
 

Speichert mit STRG+X, Y und ENTER.

Dann starten wir den VZLogger mit folgendem Befehl

sudo systemctl stop vzlogger
 sudo systemctl start vzlogger

Um nun herauszufinden welche Daten der Zähler liefert werfen wir einen Blick in das Logfile des VZ Logger.

tail -f /var/log/vzlogger.log

Nach etwas Zeit tauchen auf der Console folgende Informationen auf (ggf. bei euch mehr Readings oder andere) :

[Nov 05 16:31:44][mtr0] Got 4 new readings from meter:
 [Nov 05 16:31:44][mtr0] Reading: id=1-0:1.8.1*255/ObisIdentifier:1-0:1.8.1*255 value=6353884.00 ts=1509895904991
 [Nov 05 16:31:44][mtr0] Reading: id=1-0:1.8.2*255/ObisIdentifier:1-0:1.8.2*255 value=6.20 ts=1509895904991
 [Nov 05 16:31:44][mtr0] Reading: id=1-0:96.5.5*255/ObisIdentifier:1-0:96.5.5*255 value=3840.00 ts=1509895904991
 [Nov 05 16:31:44][mtr0] Reading: id=1-0:1.7.0*255/ObisIdentifier:1-0:1.7.0*255 value=2172.00 ts=1509895904991

Beendet tail mit STRG-C

Bei meinem Zähler erhalte ich wie oben zu sehen Vier Werte, aus der SML Nachricht werden anhand von  OBIS Kennzahlen Werte ausgelesen. Ich benötige lediglich folgende drei Werte / Kennzahlen.

  • ObisIdentifier:1-0:1.7.0 = Kennziffer 1.7.0 = Aktuelle Leistung in (WATT)
  • ObisIdentifier:1-0:1.8.1 = Kennziffer 1.8.1 = Bezug im Tarif 1 (Zählerstand)
  • ObisIdentifier:1-0:1.8.2 = Kennziffer 1.8.2 = Bezug im Tarif 2 (Zählerstand)

Eventuell müsst ihr nun Googeln und die für euch wichtigen Kennzahlen und deren Bedeutung notieren. Mit etwas glück gibts im Volkszähler WiKi zu eurem Zähler schon Infos welche Werte geliefert werden oder in der Bedienungsanleitung eures Zählers wird beschrieben welche Kennzahlen / Werte geliefert werden.

Volkszähler einrichten – Kanäle

Da wir nun Wissen welche Kennzahlen und Werte unser Zähler sendet legen wir auf der Weboberfläche die Kanäle an die unsere Daten vom VZLogger entgegen nehmen können. Bei mir sind es für die drei Kennzahlen demnach drei Kanäle.

Öffnet hierzu in eurem Browser die Volkszähler Webseite:

  • http://<ip-adresse>/ oder http://raspberrypi/

Klickt unten auf Kanal hinzufügen und fügt für eure OBIS Kennzahlen bzw. Werte die euer VZLogger liefert jeweils einen Kanal hinzu. Wichtig! Notiert euch nach dem Erstellen die UUID des jeweiligen Kanals (kann später durch klick auf Info angezeigt werden).

volkszähler weboberfläche

Ich habe drei Kanäle hinzugefügt (nicht benannte Werte bleiben wie voreingestellt):

  • Titel: Haus 1.7.0 (Aktuelle Leistung), Typ: El. Energie (Leistungswerte), Öffentlich: JA, Stil: STEPS
  • Titel: Haus 1.8.1 (Bezug Tarif 1), Typ: El. Energie (Zählerstände), Öffentlich: JA, Stil: STEPS, Auflösung: 1000
  • Titel: Haus 1.8.2 (Bezug Tarif 2), Typ: El. Energie (Zählerstände), Öffentlich: JA, Stil: STEPS, Auflösung: 1000

Hier ein Screenshot des ersten Kanal.

kanal erstellen

VZLogger fertig einrichten

Nun haben wir die UUIDS unser Kanäle aus der Oberfläche und können unserem VZLogger mitteilen an welchen Kanal er welchen Wert senden soll. Hierfür editieren wir wieder die Konfigurationsdatei mit Nano

sudo nano /etc/vzlogger.conf

Wir müssen nun für jeden Wert den wir übertragen haben möchten einen „Channel“ anlegen. Folgendes muss ein Channel beinhalten:

  • identifier = Die OBIS Kenziffer
  • middleware = Die middleware an welche versendet werden soll
  • uuid = Die UUID des Kanals welcher die Daten empfängt (haben wir uns eben notiert)

Das ist meine Fertige Konfigurationsdatei, UUIDs habe ich durch X ersetzt.

{
 "retry" : 0,
 "daemon": true,
 "verbosity" : 10,
 "log" : "/var/log/vzlogger.log",
 
 "local" : {
 "enabled" : false,
 "port" : 8080,
 "index" : true,
 "timeout" : 30,
 "buffer" : 600
 },
 
 "meters" : [{
          "enabled" : true,
          "protocol" : "sml",
          "device" : "/dev/ttyAMA0",
          "channels": [{
          "uuid" : "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",     /* UUID von dem angelegten Channel für 1.8.1 */
          "middleware" : "http://localhost/middleware.php",    /* Server Adresse der Middleware, läuft bei uns auf dem RasPi mit */
          "identifier" : "1-0:1.8.1",                          /* Die OBIS Kennzahl welche an den Channel gesendet wird - hier Bezug Tarif 1 */
          }, {
          "uuid" : "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
          "middleware" : "http://localhost/middleware.php",
          "identifier" : "1-0:1.8.2",                           /* Bezug Tarif 2 */
          }, {
          "uuid" : "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
          "middleware" : "http://localhost/middleware.php",
          "identifier" : "1-0:1.7.0",                           /* Aktuelle Leistung */
          }]
 }
 ]}
 

Speichert mit STRG+X, Y und ENTER.

Nach einem Neustart des VZLogger sollten in eurem Webinterface direkt alle angelegten Channels mit Daten befüllt werden

sudo systemctl stop vzlogger
 sudo systemctl start vzlogger

Schaut euch unbedingt noch die Konfiguration genauer an, ich benutze noch „aggmode“ und „aggtime“ Parameter um das Daten-Aufkommen etwas geringer zu halten! Im Default wird pro Channel alle zwei Sekunden ein DB Eintrag geschrieben, das sind einige MB pro Tag.

Viel Spaß!

 

Smartmeter Stromzähler mit dem Raspberry Pi auslesen und Stromverbrauch aufzeichnen
raspberry.tips

http://raspberry.tips/raspberrypi-tutorials/smartmeter-stromzaehler-mit-dem-raspberry-pi-auslesen-und-aufzeichnen/feed8" target="_blank" >
raspberry.tips
raspberry.tips - Raspberry Pi Projekte und Tutorials

Durch Zufall bin ich auf das IoT Entwickler-Board NodeMCU gestoßen der für IoT-Maker entwickelt wurde. Das kleine NodeMCU Board hat den großen Vorteil eine WLAN und eine USB Schnittstelle zum programmieren zu haben was die Entwicklung extrem beschleunigt, Grund genug für mich mir diesen kleinen Micro Controller etwas genauer anzusehen und direkt ein IoT Projekt …

Low-Cost WLAN Temperatursensoren mit NodeMCU ESP8266 im Selbstbau
raspberry.tips

raspberry.tips
raspberry.tips - Raspberry Pi Projekte und Tutorials

Durch Zufall bin ich auf das IoT Entwickler-Board NodeMCU gestoßen der für IoT-Maker entwickelt wurde. Das kleine NodeMCU Board hat den großen Vorteil eine WLAN und eine USB Schnittstelle zum programmieren zu haben was die Entwicklung extrem beschleunigt, Grund genug für mich mir diesen kleinen Micro Controller etwas genauer anzusehen und direkt ein IoT Projekt mit diesem umzusetzen. Ich Baue auf Basis eines Lolin NodeMCU V3 ESP8266 Board einen WLAN Temperatur- und Luftfeuchtigkeitsmesser mit einem DHT22 Sensor und Batteriebetrieb.

Warum der NodeMCU V3 ESP8266?

Vor einer ganzen Weile hatte ich Temperatursensoren auf Basis der RFM69CW 433MHz  Module und Atmel ATTiny ATTINY84A Micro Controller gebaut, der Aufwand für das Zusammenbauen und die Programmierung ist allerdings recht hoch und setzt hohe Hürden für Anfänger. Da einer meiner 433MHz Sensoren einem Wasserschaden zum Opfer gefallen ist hätte ich wieder PCBs bestellen müssen und habe mich daher für die unkomplizierte WLAN Alternative entschieden. Die NodeMCU Boards sind zwar Entwickler- und Prototypen-Boards die ehr nicht in ihrem vollen Umfang für eine finale Lösung geeignet sind, das stört mich bei dem Preis aber nicht weiter. Ein Problem ist allerdings der hohe Stromverbrauch den den „aufgeblasenen“ Entwicklerboards im Produktionseinsatz.

Wohin werden werden Messdaten gesendet?

Als Empfänger für meine bisherige 433MHz Lösung habe ich bereits einen Raspberry Pi mit einem 433MHz Empfänger am laufen der bisher über ein Script (emonhub) die Daten an meine Emoncms Installation weitergeleitet hat. Da wir die Daten direkt ins Internet senden können verzichte ich auf den zwischenschritt und versende die Daten im JSON-Format direkt an mein EmonCMS. Wer keinen eigenen Server betreiben möchte kann sich ein Konto auf https://emoncms.org/ anlegen oder nach Modifikation des Sketches einen anderen Cloud Service verwenden.

Hardware

Sensoren:

Mit ~13,00€ (ohne Versand) sind die Kosten für einen Sensor sehr sehr gering, in dieser Preisklasse bekommt man auf 433MHz Basis nicht viel, auf IP/WLAN Basis nichts (brauchbares).

Batterien

Um ein NodeMCU Projekt mit Batterien oder Akkus zu betreiben gibt es verschiedene Möglichkeiten, ich habe mich für zwei AA Alkaline Batterien entschieden, das ist definitiv nicht optimal, ich benötige aber keinen Spannungsregler (LDO) wie zum Beispiel bei 3,7V LiPo Zellen und kein spezielles Ladegerät wie z.B. für 14500 LiFePo4 Akkus. Hierbei kann es sein das bei 2x AA 1,5V Alkaline nicht jedes NodeMCU Board ordentlich funktioniert (3V). Eine sichere, günstige und einfache Lösung wäre daher 3x Alkaline 1,5V mit einem HT7333 LDO Spannungsregler, ich wollte mir unnötiges Löten aber sparen.

=> Update mit 2AA, DeepSleep und 5Minuten Intervall hat mein NodeMCU 11 Tage durchgehalten. Mit weiteren Modifikationen hält der NodeMCU sicherlich auf zwei AA noch um einiges länger.

Software einrichten – Arduino IDE

Zum Programmieren benutze ich die Arduino IDE auf meinem Windows 10 Rechner.

Nach der Installation müssen noch ein Einrichtungen erledigt werden.

Das Board muss zur Liste der unterstützen Geräte hinzugefügt werden um es programieren (flashen) zu können. Hierzu über das Menü Datei die Voreinstellungen öffnen und folgende URL unter „Zusätzliche Boardverwalter URLS“ eintragen.

http://arduino.esp8266.com/stable/package_esp8266com_index.json

arduino ide

Dann über Werkzeuge > Boardverwaltung das ESP8266 Paket suchen und Installieren

verwaltung arduino ide  esp8266

Dann wählt ihr über Werkzeuge folgende Einstellungen:

  • Board -> NodeMCU v9
  • CPU Frequenz -> 80MHz
  • Flash Size 4M
  • UploadSeed 115200
  • Port COM3 (kann ggf. auch COM1 oder 2 sein, probiert es aus falls mehrere zur Auswahl stehen)

nodemcu arduino ide settings

Wir benötigen auch noch die Libraries für den DHT22 Sensor um ihn einfach ansprechen zu können. Hierzu installieren wir über das Menu Sketch > Bibliothek einbinden > Bibliotheken verwalten

add librarie arduino ide

die Bibliothek „DHT sensor library“ von „Adafruit“ und installieren diese.

Sensor librarie

DHT22 Verkabeln

Als nächstes verkabeln wir unsere NodeMCU, das Setup ist recht einfach, ich benötige lediglich vier Female Jumperkabel, den DHT22 und einen 4,7kOhm wiederstand.

  • Ein Kumper Kabel zwischen D0 und RST um den DeepSleep zu ermöglichen – Blau
  • DHT22 Pin 1 ( VCC) auf 3,3V – Rot
  • DHT22 Pin2 (Data) auf D1 – Gelb
  • DHT22 Pin3 bleibt leer
  • DHT22 Pin4 (GND) auf GND – schwarz
  • Ein Widerstand 4,7kOhm zwischen DHT22 Pin1 und Pin 2

fritzing nodemcu v3 dht22

Ohne Breadboard nur mit Jumperkabel sieht das ganze bei mir so aus. Da der Node später in einem Gehäuse sitzt macht die lose Verkabelung keine Probleme.

NodeMCU Verkabelung

Wichtig!
Die Batterie schließen wir erst später an wenn alles getestet und programmiert wurde.

Programmieren – DHT22 Sketch für NodeMCU mit DeepSleep

Folgenden Code verwende ich um die Sensordaten an mein EmonCMS zu versenden. Um Ausführungszeit und somit Strom zu sparen verwendet das Sketch eine feste IP-Adresse und verzichtet auf jegliche Debug Ausgabe via Serial. Das Sketch läuft alle 5 Minuten und dazwischen ist die NodeMCU im den Tiefschlaf (deep sleep).

Die Daten für das Heim-WLAN, die IP-Adresse und Details eurer EmonCMS  Installation müssen entsprechend geändert werden. Achtet darauf das die NodeIDs einmalig sind und der korrekte API Key (Write API Key) verwendet wird.

Auf GitHUB gibts den Code auch noch mit Serial Ausgabe für eure Tests.

/**
    Send DHT22 Sensor Data to EmonCMS and go to deep sleep - Without Serial Debug Output
    Philipp Schweizer - http://raspberry.tips
    08.10.2017 - Inital Version
 */
 
 // Including the Libraries for WiFi Connection, HTTP Send and DHT22 Sensor
 #include <ESP8266WiFi.h>
 #include <WiFiClient.h>
 #include "DHT.h"
 
 // Replace with your network details
 const char* ssid = "fritzbox";
 const char* password = "xxxxx";
 //Provide IP Adresse, Gateway, Subnet and DNS matching your network
 IPAddress ip(192, 168, 178, 211); // I use fixed IP-Adress
 IPAddress gateway(192, 168, 178, 1); // set gateway to match your network
 IPAddress subnet(255, 255, 255, 0); // set subnet mask to match your
 IPAddress dns(192, 168, 178, 1); //DNS Server = Router IP
 
 // DHT Sensor settings
 #define DHTTYPE DHT22
 const int DHTPin = 5;
 DHT dht(DHTPin, DHTTYPE);
 
 //emoncoms settings, change node ID for every node
 const char* host = "emoncms.org";
 const char* nodeId   = "31";
 const char* privateKey = "xxx";
 const int httpPort = 80;
 
 //Seconds to deep sleep 300 = 5Min
 const int sleepTimeInSec = 300;
 
 //Variables to store values
 float h = 0;
 float t = 0;
 int vcc;
 ADC_MODE(ADC_VCC);
 
 // ==============================================
 // only runs once on boot then go deep sleep again
 // ==============================================
 void setup() {
   
   //Start sensor
   dht.begin();
 
   // Sensor readings may also be up to 2 seconds 'old', so we read twice
   h = dht.readHumidity();
   t = dht.readTemperature();
   delay(3000);
   h = dht.readHumidity();
   t = dht.readTemperature();
   vcc = ESP.getVcc();
 
   //Connect WiFi
   //Fix  https://github.com/esp8266/Arduino/issues/2186
   WiFi.config(ip, gateway, subnet, dns);
   delay(100);
   WiFi.persistent(false);
   WiFi.mode(WIFI_OFF);
   WiFi.mode(WIFI_STA);
   WiFi.begin(ssid, password);
   
   while (WiFi.status() != WL_CONNECTED) {
     delay(500);
   }
   
   //Send data to emoncms
   sendData();
 
   //go to deep sleep
   ESP.deepSleep(sleepTimeInSec * 1000000);
 }
 
 // ==============================================
 // Send Data to emoncms
 // ==============================================
 void sendData() {
 
   WiFiClient emonHTTPClient;
 
   //Connect by http
   const int httpPort = 80;
   if (!emonHTTPClient.connect(host, httpPort)) {
     return;
   }
 
   //Build the JSON for emoncms to send data
   String json = "{temperature:";
   json += t;
   json += ",humidity:";
   json += h;  
   json += ",vcc:";
   json += vcc;
   json += "}";
 
   //Build emoncms URL for sending data to
   String url = "/input/post.json?node=";
   url += nodeId;
   url += "&apikey=";
   url += privateKey;
   url += "&json=";
   url += json;
 
   // Send the HTTP Request to the emoncms server
   emonHTTPClient.print(String("GET ") + url + " HTTP/1.1\r\n" +
                   "Host: " + host + "\r\n" +
                   "Connection: close\r\n\r\n");
   delay(500);
 
   emonHTTPClient.stop();
 }
 
 void loop(void) {
 }   
 

Programmiert wird über die USB-Schnittstelle. Zum programmieren eures NodeMCU steckt ihr das Board vom Rechner ab, drückt den FLASH Button und steckt während dieser gedrückt ist das USB Kabel wieder an. Der Flash Butto befindet sich direkt oberhalb des MicroUSB Ports.

Danach drückt ihr den Upload Button in der Arduino IDE und wartet bis der Vorgang abgeschlossen ist.

arduino ide programmieren

Wenn alles funktioniert hat sollte direkt eine neue Node (31 im Default) in eurem EmonCMS auftauchen die ihr dann entsprechend einem Feed zuordnen und dann z.B. in einem Dashboard visualisieren könnt. Ich habe mit meiner privaten EmonCMS 9.3 Installation ein einfaches Diagramm erstellt. Da sich mit EmonCMS recht intuitiv verhält verzichte ich an dieser Stelle auf weitere Details zur Einrichtung. Als alternative zur online Variante könnt ihr auch ein EmonCMS auf eurem Raspberry Pi installieren in eurem Heimnetz installieren (am einfachsten ist EmonPI Image).

nodemcu emoncms temperatur und luftfeuchte

NodeMCU mit Batterie betreiben

Das NodeMCU V3 Board ist mit 3,0 – 3,6V Input spezifiziert.

Da ich den Temepratursensor natürlich unabhängig von einer Stromquelle betreiben möchte verwende ich einen 2x AA Batterie-Träger zur Stromversorgung. Um flexibel zu bleiben habe ich zwei Jumperkabel Female Buchsen an die Kabel gefummelt, alternativ könnt ihr den Batterie-träger auch direkt an die PINS löten oder die Buchsen anlöten und die Verbindungen mit etwas Schrumpfschlauch schützen.

Ich benutze die Pins 3,3V und G nahe des Reset Schalter, es können alle 3V / GND Pins benutzt werden.

Batterie nodemcu

NodeMCU Battery

Wichtig! Da wir den Spannungsregler umgehen möchten (benötigt zusätzlich Strom) wird die Batterie in meinem Fall direkt an 3Vund GND angeschlossen. Wer mit anderen Batterien arbeitet muss ggf. über VIN oder 5V und GND gehen, je nach Setup / Batterie. Der Code “ ESP.getVcc()“ gibt leider nicht den korrekten Wert wieder bis jetzt habe ich keine Möglichkeit gefunden ohne Multimeter den Batterie Status auszulesen. Die Spannung der Batterie nimmt sehr schnell ab und ich denke das die zwei AA Batterien innerhalb weniger Tage unter die Minimum geforderten 3V fallen.

Fazit

Mit AA oder AAA Batterien ist der WLAN Temperatur Sensor auf der NodeMCU aktuell keine Alternative für die 433MHz Variante da einfach der Stromverbrauch ohne größere Eingriffe (z.B. Auslöten des LDO und des USB UART Port) viel zu hoch ist. Ein Zusammenbau aus einzelnen Kompnenten (ESP-12 WLAN Modul und ESP8266 SoC) ist mir zu aufwändig. Wer allerdings entweder kurzzeitig oder Stationär eine Lösung sucht oder einfach nur Programmieren und Basteln möchte ist mit der NodeMCU Variante zwecks der Einfachheit gut beraten.

Low-Cost WLAN Temperatursensoren mit NodeMCU ESP8266 im Selbstbau
raspberry.tips

http://raspberry.tips/iot/low-cost-wlan-temperatursensoren-mit-nodemcu-esp8266-im-selbstbau/feed1" target="_blank" >
raspberry.tips
raspberry.tips - Raspberry Pi Projekte und Tutorials

Wenn euch der Speicherplatz auf eurer SD-Karte voll ist oder eine Datensicherung unnötig lange dauert könnt ihr etwas Speicher auf eurem Raspberry Pi aufräumen. Heute zeige ich euch kurz wie ihr speicher für das Raspbian Betriebssystem aufräumen könnt und Platz Fresser findet. Speicher-Fresser finden Als erstes wollen wir natürlich identifizieren welche Software oder Dateien Platz …

Speicher auf dem Raspberry Pi aufräumen
raspberry.tips

raspberry.tips
raspberry.tips - Raspberry Pi Projekte und Tutorials

Wenn euch der Speicherplatz auf eurer SD-Karte voll ist oder eine Datensicherung unnötig lange dauert könnt ihr etwas Speicher auf eurem Raspberry Pi aufräumen. Heute zeige ich euch kurz wie ihr speicher für das Raspbian Betriebssystem aufräumen könnt und Platz Fresser findet.

Speicher-Fresser finden

Als erstes wollen wir natürlich identifizieren welche Software oder Dateien Platz auf unserer SD-Karte verschwenden.

Installierte Pakete nach Größe anzeigen und löschen

Erste Anlaufstelle sind die Installierte Pakete, wir zeigen uns diese sortiert nach Größe an.

aptitude -O installsize -F'%p %I' search '~i'

Bei mir zum Beispiel finde ich an letzter Stelle folgende Pakete

scratch2  147 MB
 zulu-embedded-8  170 MB
 chromium-browser  175 MB

Da ich Scratch2 nicht verwende kann ich dieses mit folgendem Befehl entfernen

sudo apt-get purge scratch2 -y

Wichtig! Macht hier keinen Kahlschlag, prüft ob ihr die Pakete wirklich nicht benötigt (oft sind Abhängigkeiten vorhanden). Für unbenutzte Pakete siehe SD-Karte aufräumen.

Große Dateien und Verzeichnisse finden

Es könnte auch sein das einige große Dateien bzw Verzeichnisse euren Speicher verbrauchen, zum finden des Übeltäters verwende ich am liebsten eine grafische Oberfläche im Terminal oder einer SSH Sitzung.

Das Tool ncdu zeigt uns den Speicherverbrauch schön an. Wir starten mit beginn im Wurzelverzeichnis „/“.

ncdu -x /

grose dateien finden

Das Tool zeigt uns alle Verzeichnisse sortiert nach Größe an, mit den Pfeiltasten (hoch/ runter und rechts / links) können wir durch die Verzeichnisse navigieren und so große Verzeichnisse finden.

Ich habe, als Beispiel, nach /home/pi navigiert und finde dort eine Datei mit dem namen „test“ die mir 400MB belegt.

große datei finden

Da ich die Datei nicht benötige lösche ich diese

sudo rm -f /home/pi/test

Auch hier gilt: Vorsichtig! Wenn ihr eine Datei nicht zuordnen könnt löscht sie nicht einfach, generell gilt, die Systemverzeichnisse sind tabu zum manuellen löschen wenn ihr nicht genau wisst was ihr tut. Wenn ihr einen Speicherfresser gefunden habt, diesen aber nicht zuordnen könnt hilft ggf. das googlen nach der Datei / Verzeichnis um sich weiter zu informieren.

SD-Karte aufräumen

Oft läuft der Raspberry Pi mit dem großen Raspbian Image, es wird aber gar nicht alle Software benötigt. Das ist unser erster Ansatz um etwas Speicher auf der SD-Karte freizuräumen.

Wir entfernen Software die meistens nicht verwendet wird. Entfernt bitte nur die Pakete die ihr tatsächlich nicht benutzt.

sudo apt-get purge wolfram-engine libreoffice* minecraft-pi sonic-pi -y
 sudo apt-get clean
 sudo apt-get autoremove

Mit dem aufräumen ungenutzter Pakete sparen wir schon mal ca. 1GB an Speicher:

Wolfram ~650 MB
libreoffice ~250 MB
Sonstige ~ 100MB

Speicher auf dem Raspberry Pi aufräumen
raspberry.tips

" target="_blank" >
raspberry.tips
raspberry.tips - Raspberry Pi Projekte und Tutorials

Ich habe bereits sehr viele verschiedene HomeMatic und weitere Komponenten in meiner FHEM Installation via 868MHz CUL-Stick integriert. Da es wieder kälter wird steht die Programmierung der Heizungssteuerung an, diese wollte ich eigentlich im vorhandenen FHEM anpassen und erweitern. Nachdem ich über den Sommer nicht viel an meiner FHEM Installation gemacht habe war sämtliches Wissen …

OpenHAB als Alternative zu FHEM auf meinem Raspberry Pi
raspberry.tips

raspberry.tips
raspberry.tips - Raspberry Pi Projekte und Tutorials

Ich habe bereits sehr viele verschiedene HomeMatic und weitere Komponenten in meiner FHEM Installation via 868MHz CUL-Stick integriert. Da es wieder kälter wird steht die Programmierung der Heizungssteuerung an, diese wollte ich eigentlich im vorhandenen FHEM anpassen und erweitern. Nachdem ich über den Sommer nicht viel an meiner FHEM Installation gemacht habe war sämtliches Wissen wieder aus meinen Gedächtnis verschwunden und mir viel es noch immer schwer mich an die sehr komplexen Vorgänge in FHEM zu gewöhnen. Die perfekte Motivation mich endlich mal mit dem etwas komfortableren OpenHAB zu beschäftigen, FHEM ist was die Programmierung, das Backend und die Konfiguration angeht einfach nicht mehr zeitgemäß.

Heute möchte ich mir OpenHAB als alternative Lösung zu FHEM ansehen und eventuell vorhandene Geräte darauf umstellen.

Hardware

Folgendes habe ich an Hardware verwendet:

Zusätzlich empfohlen

Installation von OpenHAB auf den Raspberry Pi

Für die Grundeinrichtung des Raspberry Pi mit Raspbian benutze ich selbst immer meinen Einsteiger Guide, wenn auch mittlerweile aus dem Gedächtnis. Es kommt das aktuelle Raspbian Strecht Image zum Einsatz.

Für die Installation von OpenHAB gibt es zwei Varianten, es kann das vorkonfigurierte OpenHABian Image verwendet werden oder die Installation wird manuell auf Basis von Raspbian durchgeführt. Da ich möglichst selbst die Kontrolle über das System behalten und flexibel bleiben möchte habe ich mich für das manuelle Setup von OpenHAB auf Basis von Raspbian entschieden.

Als erstes installieren wir alle notwendige Software und Abhängigkeiten

sudo apt-get install dirmngr apt-transport-https screen mc vim git htop

Dann entferne ich das Oracle JAVA und den GNU Java Compiler von meinem System

sudo apt-get remove --purge oracle-java8-jdk openjdk-7-jre oracle-java7-jdk openjdk-8-jre gcj-jre

Ich verwende das OpenSource Java Build von Zulu. Zulu ist die empfohlene Java Variante. Installiert wird Zulu Java indem wir den Schlüssel des Repository und das Repository selbst hinzufügen, die Installation starten und dann rebooten.

sudo su
 apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 219BD9C9
 echo 'deb http://repos.azulsystems.com/debian stable main' > /etc/apt/sources.list.d/zulu.list
 
 apt-get update
 apt-get install zulu-embedded-8 -y
 
 sudo reboot

Nun können wir schon mit der Installation von OpenHAB beginnen, als erstes benötigen wir wieder das Repository und den Schlüssel

wget -qO - 'https://bintray.com/user/downloadSubjectPublicKey?username=openhab' | sudo apt-key add -
 echo 'deb https://dl.bintray.com/openhab/apt-repo2 stable main' | sudo tee /etc/apt/sources.list.d/openhab2.list
 
 sudo apt-get update

Dann installieren wir OpenHAB und wichtige Addons via Paket aus dem Repository

sudo apt-get install openhab2 openhab2-addons

Wir konfigurieren noch den Autostart für OpenHAB via systemd und starten den Dienst direkt

sudo systemctl start openhab2.service
 sudo systemctl status openhab2.service
 
 sudo systemctl daemon-reload
 sudo systemctl enable openhab2.service

Ruft die OpenHAB Webseite im Browser auf, entweder via IP-Adresse eures Raspberry Pi (ifconfig Befehl zeigt diese an) oder über den Rechnernamen. Wichtig! Der erste Start von OpenHAB kann sehr lange dauern (>10Minuten), wartet etwas ab falls ihr die Webseite nicht gleich erreichen könnt.

  • http://ip-adresse:8080 als zum Beispiel http://192.168.178.20 oder
  • http://raspberrypi:8080

Ihr müsst nun euer initiales Addon-Setup wählen, ich verwende erst mal Standard.

openhab webseite

Danach könnt ihr die bevorzugte Oberfläche auswählen in welcher sich OpenHAB präsentiert, ich benutze erst mal das Paper UI. Auf dem Paper UI lassen sich viele Dinge über die Webseite einstellen anstelle Konfigurationsdateien via Texteditor zu bearbeiten, via Basic UI ist das nicht möglich.

openhab ui auswählen

Da ich meine Homematic Komponenten mit meinem CUL Stick am Raspberry Pi steuern möchte ist noch eine weitere Installation und Einrichtung notwendig.

CUL Firmware Flashen

Unser CUL Stick benötigt die letzte CUL Firmware um mit OpenHAB bzw. Homegear kommunizieren zu können. Wir benötigen zum flashen via Raspberry Pi das Tool dfu-programmer

sudo apt-get install dfu-programmer

Dann laden wir uns die letzte Firmware von culfw.de runter, schaut bitte auf culfw.de ob die Version noch passt.

wget http://culfw.de/culfw-1.67.tar.gz

Wir entpacken die Datei mit tar und wechseln in das Verzeichnis

tar zxf culfw-1.67.tar.gz

Da ich einen CC1101-USB-Lite 868MHz besitze, was dem CUL V3 entspricht, wechsle ich in das Verzeichnis in welchem die entpackte Firmware liegt

cd culfw-1.67/Devices/CUL

Dann flashe ich die Firmware Datei für den CULv3 auf meinen Stick, verbindet ihn hierzu via USB. Wichtig! Während des Verbindens muss der Flash Button auf der Rückseite des Sticks gedrückt sein, sonst wird der Stick nicht erkannt und kann nicht programmiert werden (Programmier-Modus).

sudo make usbprogram_v3

Steckt nach erfolgreichem flashen euren Stick einmal ab und wieder an um den Progammier Modus zu beenden.

OpenHAB für Homematic einrichten – Homegear

Da meine Homematic Komponenten bisher nicht über die CCU des Herstellers angebunden waren sonder ein CUL USB Stick der Firma Busware verwendet wurde benötige ich eine spezielle Software als „Brücke“ zwischen OpenHAB dem CUL Stick und meinen HomeMatic Geräten.

Die Brücke wird mit der Software Homegear erstellt.

Wir installieren Homegear aus dem Repository, fügen vorher wieder die Keys hinzu.

sudo apt install apt-transport-https
 curl https://homegear.eu/packages/Release.key | sudo apt-key add -
 
 sudo sh -c 'echo "deb https://homegear.eu/packages/Debian/ stretch/" >> /etc/apt/sources.list.d/homegear.list'
 
 sudo apt update
 
 sudo apt install homegear homegear-nodes-core homegear-nodes-extra homegear-homematicbidcos homegear-homematicwired homegear-insteon homegear-max homegear-philipshue homegear-sonos homegear-kodi homegear-ipcam homegear-beckhoff homegear-knx homegear-enocean homegear-intertechno homegear-influxdb

Nach der Installation müssen wir in HomeGear noch unseren CUL Stick konfigurieren, wichtig der CUL Stick muss die letzte CUL Firmware haben. Folgendes fügen wir am Ende der Datei homematicbidcos.conf ein um unseren CUL stick mit Heamgear bekannt zu machen

sudo nano /etc/homegear/families/homematicbidcos.conf

Inhalt

[CUL]
 id = CUL868
 default = true
 deviceType = cul
 device = /dev/ttyACM0
 responseDelay = 95

Innerhalb der Konfiguration muss noch folgendes editiert werden

  • centralAddress
  • rfKey

Für die centralAddress entferne ich einfach die voranstehende Raute (#) und ändere den Hex-Wert ab um zu vermeiden das in meiner Nachbarschaft die gleichen Adressen vorhanden sind.

centralAddress = 0xFD0009

Den rfKey ändere ich auch ab, dieser wird für die verschlüsselte Kommunikation benutzt, der Key muss 32 Zeichen lang sein, es sind nur HEX Werte erlaubt 0-9 und A-F. Hier ein Beispiel:

rfKey = 012345678901234567890123456789AB

Wichtig!
Notiert euch den Key an einem sicheren Ort, falls der Key verloren geht sind eure HomeMatic Devices Wertlos

Speichert mit STRG+X, Y und Enter.

Homematic Geräte mit OpenHAB / Homegear Pairen

Wir können nun unsere HomeMatic Komponenten mit OpenHAB bzw. Homegear verbinden, ich paire/peere jetzt erst mal nur ein Gerät um die weitere Einrichtung zu beschreiben, später können über den selben Weg weitere Geräte gepaired werden. Bereits gepairte Geräte sollten erst vom alten System abgelernt werden, alternativ ist ein Werksreset ggf. hilfreich (insofern kein AES verwendet wurde).

Wir starten dazu Homegear

sudo homegear -r

Innerhalb der Kommandozeile von Homegear wählen mir nun BidCos zum Konfigurieren aus. Gebt folgenden Befehl ein

families select 0

Dann aktiviert den Pairing Modus

pairing on

homegear pairing aktivieren

Nun löst das Pairing an eurem HomeMatic Device aus (das ist bei jedem Gerät anders, lest dazu die Anleitung). Nach einigen Sekunden Wartezeit könnt ihr via peers list die verbundenen Geräte anzeigen.

peers list

homegear list peers

Es macht Sinn einem Gerät direkt nach dem Anlernen einen sprechenden Namen zu geben. Geht unter Angabe der ID des angelernten Geräts einen neuen Namen ein. Ich gebe dem Gerät mit der ID 1 den Namen „Rollladen-Buero-Philipp

peers setname 1 Rollladen-Buero-Philipp

Damit haben wir nun unsere Homematic Geräte mit dem Raspberry Pi verbunden, nun müssen wir noch eine Verbindung zwischen OpenHAB und Homegear herstellen.

Beendet Homegear mit STRG+C.

Homegear und OpenHAB verbinden

Wir müssen nun via OpenHAB Modul die Brücke zwischen OpenHAB, dem CUL Stick und unseren Geräten fertig bauen. Hierfür öffnet ihr die OpenHAB Webseite wieder in eurem Browser.

Wechselt in das Menu Add-Ons

OpenHAB addons

Wählt im unter Menu „Bindings„, Sucht nach Homematic und installiert das „Homematic Binding

Homematic openhab binding

Wartet etwas ab und wechselt dann in die Inbox, wählt dort über das + Zeichen euer Binding aus.

openhab inbox

Da vermutlich der CUL Stick nicht automatisch erkannt wird wählt ihr „Add Manualy“ aus

Innerhalb des Dialogs zum Hinzufügen eures über Homegear angebunden CUL müsst ihr nun noch localhost als Adresse eingeben und bestätigen.

Nach kurzer Wartezeit taucht unter Configuration > Things euer CUL als Homematic Bridge mit dem Status „online“ auf. Die Webseite muss ggf. mit F5 refreshed werden, der Status aktualisiert sich nicht.

homematic bridge

Das bereits gepairte Gerät taucht wenig später in der „Inbox“ auf und kann direkt verwendet werden. Klickt auf den Blauen Haken neben dem Namen und bestätigt den Dialog um das Gerät in OpenHAB verwenden zu können, führt das für beide Geräte durch.

homematic device in openhab

add as thing openhab

Nun möchten wir uns noch in der Oberfläche unter „Control“ die Geräte und Steuerungsmöglichkeiten anzeigen lassen. Hierzu gehen wir auf Configuration > Things dort klicken wir auf die beiden neuen Homematic Gerät und aktivieren die Knöpfe der Eigenschaften die wir unter „Control“ angezeigt haben wollen.

Zum Beispiel für meinen Rollladenaktor

rolladen

Die Homegear Extras:

gateway extras

Hiernach finden wir auf der Seite unter Control die Steuerbefehle für die Geräte und können mit der Steuerung beginnen.

control panel openhab

Die weitere Einrichtung und Umstellung meiner Geräte und Funktionen werde ich in den nächsten Wochen veröffentlichen, ich habe Gefallen an OpenHAB gefunden und werde darauf umsatteln.

 

OpenHAB als Alternative zu FHEM auf meinem Raspberry Pi
raspberry.tips

http://raspberry.tips/openhab/openhab-als-alternative-zu-fhem-auf-meinem-raspberry-pi/feed7" target="_blank" >
raspberry.tips
raspberry.tips - Raspberry Pi Projekte und Tutorials

Zwischenzeitlich habe ich alle Teile zusammengebaut und von Mirr.OS auf die Software MagicMirror² umgestellt. MagicMirror² hat wesentlich mehr AddOns und eine breitere Community. Als letzten Arbeitsschritt habe ich meinen Spiegel noch Konfiguriert und an die Wand gehangen. Beim Zusammensuchen der Kabel ist mir auch noch ein PIR-Sensor zur Bewegungserkennung in die Hände gefallen, diesen habe …

Raspberry Pi Magic Mirror selbst Bauen ? Projekt-Tagebuch ? Tag 5
raspberry.tips

raspberry.tips
raspberry.tips - Raspberry Pi Projekte und Tutorials

Zwischenzeitlich habe ich alle Teile zusammengebaut und von Mirr.OS auf die Software MagicMirror² umgestellt. MagicMirror² hat wesentlich mehr AddOns und eine breitere Community. Als letzten Arbeitsschritt habe ich meinen Spiegel noch Konfiguriert und an die Wand gehangen. Beim Zusammensuchen der Kabel ist mir auch noch ein PIR-Sensor zur Bewegungserkennung in die Hände gefallen, diesen habe ich an meinen Raspberry Pi angeschlossen und auf den Rahmen des Spiegels gesetzt, anhand des PIR Sensor wird der Bildschirm jetzt abgeschalten wenn sich niemand in der nähe befindet um Strom zu sparen.

Fertige Hardware des Magic Mirror

Folgendes habe ich nachträglich entgegen der Ideen aus dem Tagebuch noch geändert:

  • Die Tiefe des Rahmens war zu wenig, das Netzteil hätte einige Millimeter rausgeschaut uns mich daran gehindert den Rahmen aufzuhängen, ich habe als hinten drauf noch mal 10x10mm Quadrahtleisten geklebt um die Tiefe zu erhöhen.
  • Den Schlitz für die Zuleitung habe ich vergessen, diesen habe ich mit einer kleinen Säge und einem Stechbeitel noch eingefügt.

raspberry pi magic mirror fertig

Nachdem ich noch das Netzteil mit Euro-Stecker und 2.1A USB Anschluss eingebaut habe sieht die Verkabelung so aus.

raspberry pi magic mirror rückseite

Aufgehangen wurde der Spiegel an zwei langen Schrauben die ich mit 8er Dübeln (50mm) ordentlich befestigt habe. Es hätten auch zwei 6er mit langen Schrauben getan, ich gehe aber lieber auf Nummer sicher :) Etwas 10x10mm Kabelkanal (ist leider hässlich) führt den Strom zu.

raspberry pi magic mirror fertig montiert

Mit dem Ergebnis bin ich sehr zufrieden, nachträglich betrachtet hätte ich einen 17 oder 18 Zöller Display nehmen sollen, hatte aber leider keines übrig.

magic mirror2

Meine Magic Mirror Konfiguration

Folgende Module verwende ich:

Das Modul für die Wettervorhersage geht gerade nicht (die Daten sind nun kostenpflichtig) und das FHEM Modul habe ich nicht zum laufen bekommen, sonst würden diese ebenfalls auf der Liste stehen.

Meine MagicMirror² Konfigurationsdatei (nur der Modules Teil):

 modules: [
                 {
                         module: "alert",
                 },
                 {
                         module: "updatenotification",
                         position: "top_bar"
                 },
                 {
                         module: "clock",
                         position: "top_left"
                 },
                 {
                         module: "calendar",
                         header: "Kalender",
                         position: "top_left",
                         config: {
                                 calendars: [
                                         {
                                                 symbol: "calendar-check-o ",
                                                 url: "https://outlook.office365.com/xxxxxx"
                                                 maximumEntries: "10"
                                         },
                                 ]
                         }
                 },
                 {
                         module: "currentweather",
                         position: "top_right",
                         config: {
                                 location: "Bietigheim-Bissingen,Germany",
                                 locationID: "",  //ID from http://www.openweathermap.org/help/city_list.txt
                                 appid: "XX5998b5faxxxxxxxxxxxx"
                         }
                 },
                        module: "newsfeed",
                         position: "bottom_bar", // This can be any of the regions. Best results in center regions.
                         config: {
                                 feeds: [
                                         {
                                                 title: 'Tagesschau',
                                                 url: 'http://www.tagesschau.de/xml/rss2',
                                         },
                                         ]
                                 }
                 },
                 {
                         module: 'MMM-DWD-WarnWeather',
                         position: 'top_left',
                         header: 'Wetterwarnungen',
                         config: {
                                 region: 'Kreis Ludwigsburg',
                                 changeColor: true,
                                 interval: 10 * 60 * 1000, // every 10 minutes
                                 loadingText: 'Warnungen werden geladen...',
                                 noWarningText: 'Keine Warnungen'
                                 }
                 },
                 {
                         module: 'MMM-Wunderlist-Enhanced',
                         position: 'top_right',  // This can be any of the regions. Best results in left or right regions.
                         config: {
                                 // See 'Configuration options' for more information.
                                 accessToken: "XXe403ffb7cxxxxxxxxxxxxxxxx",  //example token
                                 clientID: "XX7dffxxxxxxxxxxx",   //example clientID
                                 lists: ["Einkaufsliste","ToDo"],
                                 maximumEntries: 10,
                                 order: "reversed"
                                 }
                 },
                 {
                          module: 'MMM-GoogleMapsTraffic',
                          position: 'top_right',
                          config: {
                                 key: 'XXzaSyD1QUiijVmxxxxxxxxx',
                                 lat: 48.948371,
                                 lng: 9.1336355,
                                 height: '300px',
                                 width: '450px'
                                 }
                 },
                 {
                          module: 'MMM-PIR-Sensor',
                          config: {
                                 sensorPIN: 22,
                                 powerSavingDelay: 320,
                                 }
                 },
         ]

Magic Mirror Bewegungssensor (PIR)

Verkabelung meines PIR-Sensor an den GPIOs des Raspberry Pi anhand von Jumper-Kabel (Female/Female). Regler des Sensors:

  • Time – auf ganz niedrig (Steuerung übernimmt das Modul)
  • Sensitivity – Ganz hoch

raspberry pi PIR Sensor

Artikel in der Magic Mirror Serie:

Raspberry Pi Magic Mirror selbst Bauen ? Projekt-Tagebuch ? Tag 5
raspberry.tips

http://raspberry.tips/projekte/raspberry-pi-magic-mirror-selbst-bauen-projekt-tagebuch-tag-5/feed8" target="_blank" >
raspberry.tips
raspberry.tips - Raspberry Pi Projekte und Tutorials

Nach einige Tagen ist der sehnsüchtig erwartete Display Controller aus China angekommen und ich konnte nun endlich die Komponenten zusammenbauen und meinen Raspberry Pi Magic Mirror in Betrieb nehmen. Ich hatte in meinem reichen Fundus neben einem unbenutzten Raspberry Pi 3 beinahe alles Material, einzig den Euro Mehrfachstecker für die Stromversorgung habe ich kaufen müssen. …

Raspberry Pi Magic Mirror selbst Bauen ? Projekt-Tagebuch ? Tag 4
raspberry.tips

raspberry.tips
raspberry.tips - Raspberry Pi Projekte und Tutorials

Nach einige Tagen ist der sehnsüchtig erwartete Display Controller aus China angekommen und ich konnte nun endlich die Komponenten zusammenbauen und meinen Raspberry Pi Magic Mirror in Betrieb nehmen.

Ich hatte in meinem reichen Fundus neben einem unbenutzten Raspberry Pi 3 beinahe alles Material, einzig den Euro Mehrfachstecker für die Stromversorgung habe ich kaufen müssen. Die Stromversorgung des Display hätte ich auch mit etwas Bastelarbeit und Lüsterklemmen noch günstiger erledigen können, hatte aus Sicherheitsgründen bei diesem Projekt aber absichtlich auf offene 230V Kontakte verzichtet!

Hinweis: Lasst euch nicht von der schlechten Bildqualität der Fotos abschrecken, in echt ist das Bild des Magic Mirror super.

Tag 4 – Magic Mirror – Anschluss Display Controller

Der Einfachheit halber habe ich, anstelle für jedes Platine eine Halterung zu bauen, die Komponenten mit doppelseitigem Klebeband hinten am Display befestigt. Bevor die elektronischen Komponenten angebracht werden solltet ihr euer Display fixieren, ich habe mir aus den Sägereste und Filz-Gleitern zwei Halter gebaut.

Display Halterung Magic Mirror

Der Anschluss des Display Controllers an das Panel erfolgt mit zwei Kabeln ein großes für das Video Signal und ein kleines für das Backlight. Der Backlight Connector für das Flachbandkabel hat wie vom RasPi gewohnt eine klemme zum herausziehen, das Kabel wird dann mit den Pins Richtung Platine eingesteckt und festgeklemmt.

Verbindung Display Controller

Befestigt habe ich die Platinen des Controllers mit etwas doppelseitigem Montageband.

Wichtig! Die Platinen dürfen auf keinen Fall den metallischen Rahmen oder sonstigen leitenden Teilen in Berührung kommen.

Testet vor der weiteren Verkabelung das Display indem ihr das Netzteil ansteckt. Bevor ich meinen Raspberry Pi fest anbringe teste erledige ich erst noch die im nächsten Kapitel beschriebene Grundeinrichtung. Um die externe Stromversorgung kümmere ich mich ebenfalls im nächsten Teil.

magic mirror fertig montiert mit raspberry pi

Tag 4 – Magic Mirror – Software Einrichten – Aleitung

Wir flashen das Raspberry Pi Mirr.OS Image via Etcher oder Win32Disk Imager auf unsere SD-Karte. Da mein Display im Querformat aufgehangen wird habe ich auf der SD-Karte mit meinem Windows Rechner die Datei config.txt angepasst. Folgendes habe ich geändert.

display_rotate = 0
 

  • HDMI Display: display_rotate = 1
  • LCD Display: lcd_rotate= 1

Werte zum drehen der Anzeige

  • 0 = normal
  • 1 = 90° drehen
  • 2 = 180° drehen
  • 3 = 270° drehen

Da das Image die Auflösung unseres Displays nicht ordentlich erkennt müssen wir unter Umständen weitere Video Optionen in der config.txt anpassen, bei mir waren es folgende (WXGA 1280×800 ). Im Hintergrund von Mirr.OS läuft auch nur ein angepasstes Raspbian, daher können wir uns bezüglich der Konfiguration an der Raspbian Dokumentation orientieren.

hdmi_group=2
 hdmi_mode=28
 hdmi_drive=2

Rahmenbedingte Anpassungen (verschieben des Bildes pro Seite) könnt ihr im Nachgang ebenfalls via config.txt erledigen, siehe Overscan.

Nach dem Anstecken des Display / RasPi an den Strom startet das Betriebssystem mirr.os mit folgendem Loading Screen. Fotos sind teilweise noch mit falscher Rotation erstellt worden.

mirr.os boot screen

Wartet etwas ab bis das System gestartet ist und euch folgender Bildschirm begrüßt, das dauert einige Sekunden.

mirr.os raspberry pi start screen screen

Nach dem verbinden meines Smartphones mit dem WLAN GlancerAP (das Passwort wird auf dem Start Screen angezeigt) rufe ich im Browser folgende Seite auf:

  • http://glancr.conf

Tätigt gewissenhaft alle angaben, eine korrekte E-Mail ist wichtig!

Nach erfolgreicher Konfiguration verschwindet das WLAN GlancrAP und das System verbindet sich mit eurem normalen Heimnetz (WLAN). Die Details werden euch via E-Mail zugesendet. Wenn etwas nicht stimmt taucht das WLAN zur Einrichtung wieder auf (wird auch auf dem Bildschrim angezeigt).

In der E-Mail erhaltet ihr einen Link zur Einrichtung. Das Webinterface kann jeder Zeit aufgerufen werden.

  • http://<ip raspberry pi>/config/
    • Zum Beispiel: http://192.168.178.30/config/

Das Customizing des Mirr.OS Magic Mirror zeige ich im nächsten Beitrag.

screen fertig

Update:
Zwischenzeitlich habe ich von Mirr.OS auf die Software MagicMirror² umgestellt, das System hat wesentlich mehr AddOns, ist OpenSource und hat eine breite Unterstützung in der Community.

Artikel in der Magic Mirror Serie:

Raspberry Pi Magic Mirror selbst Bauen ? Projekt-Tagebuch ? Tag 4
raspberry.tips

" target="_blank" >
raspberry.tips
raspberry.tips - Raspberry Pi Projekte und Tutorials

Die Presse ist voll von meist negativen Beispielen wie das Mining von Crypto Währung (zum Beispiel Bitcoin) durch kriminelle missbraucht wurde, beim Lesen eines solchen Artikels bin ich darauf Aufmerksam geworden dass das „minen“ von Crypto-Währung im Browser anstelle der lästigen Werbe-Banner für Webmaster eine Alternative sein kann. Das Prinzip ist recht einfach, der Benutzer …

Raspberry Tips – Test ohne Banner, dafür mit Background Crypto Mining im Browser
raspberry.tips

raspberry.tips
raspberry.tips - Raspberry Pi Projekte und Tutorials

Die Presse ist voll von meist negativen Beispielen wie das Mining von Crypto Währung (zum Beispiel Bitcoin) durch kriminelle missbraucht wurde, beim Lesen eines solchen Artikels bin ich darauf Aufmerksam geworden dass das „minen“ von Crypto-Währung im Browser anstelle der lästigen Werbe-Banner für Webmaster eine Alternative sein kann.

Das Prinzip ist recht einfach, der Benutzer einer Webseite schürft während des Aufenthalts auf einer Webseite mit seiner CPU etwas Crypto Währung für den Betreiber (simples Java Script), im Gegenzug werden keine Banner angezeigt. Da sich der Ressourcen Verbrauch der Java Script Miner einstellen lässt beeinflusst das Schürfen den Rechner des Benutzers im Normalfall nicht.

Ich persönlich finde die Idee klasse, anstelle auf nervige Banner zu schauen unterstütze ich die Webmaster lieber mit etwas meiner Rechenleistung. Daher habe ich zum Test alle Anzeigen, welche meist zur Finanzierung der Hosting-Kosten und der Projekte verwendet werden, zu Gunsten des Java Script Miners von Monero (XMR) via coin-hive.com deaktiviert.

Update 18.10.17
Der Anbieter hat nun eine Möglichkeit geschaffen nur unter Zustimmung der User zu Minen. Diesem Vorschlag passe ich mich an und habe den JS Code entsprechend aktualisiert.

Update 08.10.17
Nachdem es seitens des Anbieters nun die Möglichkeit gibt das Mining etwas transparenter zu gestallten, man kann nun einen interaktiven Miner in die Webseite einblenden und der User kann die Aktion jeder Zeit selbst stoppen, habe ich mich entschieden diese Variante noch mal zu Testen.

=> Wer nicht für mich minen möchte hält den Miner einfach in der Sidebar rechts an oder verändert den Speed und die Anzahl der Prozesse.

crypto miner info

Update 24.09.17:
Da Viren Scanner das Script als gefährlich einstufen (wurde zu oft missbraucht) habe ich dieses von der Webseite entfernt, bis auf weiteres verzichte ich auf Anzeigen und auf das Mining. Die Einnahmen des Minings waren zwar nicht mit klassischen Anzeigen zu vergleichen, die Hosting Kosten lassen sich damit aber gerade so decken, wäre also eine Alternative gewesen.

Jede Seite von Raspberry.Tips enthält folgenden Java Script Code der anstelle Werbung anzuzeigen etwas eurer CPU-Leistung zum XMR Mining für raspberry.tips verwendet. Die dazugehörige Oberfläche wird rechts in der Sidebar eingeblendet.

<script src="https://coinhive.com/lib/miner.min.js" async></script>
 <div class="coinhive-miner" 
 	style="width: 256px; height: 310px"
 	data-key="SITE_KEY"
 	data-autostart="false"
 	data-whitelabel="false"
 	data-background="#000000"
 	data-text="#eeeeee"
 	data-action="#00ff00"
 	data-graph="#555555"
 	data-threads="4"
 	data-throttle="0.1"
 	data-start="Start Now!">
 	<em>Please disable Adblock!</em>
 </div>

 

Im Verlauf des Experiments werde ich hier weiter berichten. Wer Raspberry Tips nicht via „Browser Mining“ unterstützen möchte kann JavaScript (coinhive.min.js) im Browser blockieren oder die Webseite einfach verlassen.

Wie ist eure Meinung hierzu? Gebt ihr gerne etwas (meist ungenutzte) Rechenleistung beim Surfen ab oder wollt ihr lieber Banner sehen?

Raspberry Tips – Test ohne Banner, dafür mit Background Crypto Mining im Browser
raspberry.tips

http://raspberry.tips/raspberripi-infos/raspberry-tips-test-ohne-banner-dafuer-mit-background-cypto-mining-im-browser/feed8" target="_blank" >
raspberry.tips
raspberry.tips - Raspberry Pi Projekte und Tutorials

In Vergangenheit habe ich bereits gezeigt wie der Raspberry Pi ganz ohne SD-Karte von einem USB-Stick booten kann, seit dem Raspbian Image 2017-04-10 kann ganz ohne Modifikation der Firmware und der Datei config.txt von USB Medien gebootet werden. Wichtig ist das der USB Port am Raspberry Pi zum Zeitpunkt des Starts nur 600mA liefert, die verwendete …

Raspberry Pi von SSD Festplatte booten
raspberry.tips

raspberry.tips
raspberry.tips - Raspberry Pi Projekte und Tutorials

In Vergangenheit habe ich bereits gezeigt wie der Raspberry Pi ganz ohne SD-Karte von einem USB-Stick booten kann, seit dem Raspbian Image 2017-04-10 kann ganz ohne Modifikation der Firmware und der Datei config.txt von USB Medien gebootet werden. Wichtig ist das der USB Port am Raspberry Pi zum Zeitpunkt des Starts nur 600mA liefert, die verwendete Festplatte oder der USB Stick muss sich damit lauffähig sein, sonst bootet euer System nicht. SSD Platten haben den Vorteil gegenüber USB-Sticks und SD-Karten eine weitaus größere Lebensdauer und natürlich größeren Speicherplatz zu haben. In diesem Beitrag zeige ich euch wie von einer SSD Festplatte gebootet werden kann, diese funktioniert auch mit USB-Sticks oder USB Festplatten.

Hardware

Neben dem üblichen Raspberry Pi 3 werden folgende Komponenten benötigt

Ich verwende eine alte 2,5Zoll 80GB Intel SSD aus einem alten Desktop Rechner. Die Anleitung funktioniert auch mit USB Sticks.

Raspberry Pi vorbereiten

Wir müssen unseren Raspberry Pi einmalig mit Raspbian von einer SD-Karte booten um im OTP (One Time Programmable) Memory des RasPi das Booten von USB zu aktivieren. Verwendet zum Setup am Besten die Einsteiger Guides. Die Verwendung eines aktuellen Raspbian Images ist zwingend notwendig, ich benutze das Stretch Image vom August 2017.

Führt als erstes ein Update via SSH oder über ein Terminal durch

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

Dann aktivieren wir den USB Boot Modus, der Parameter wird beim nächsten Neustart in den OTP des RasPi übernommen

echo program_usb_boot_mode=1 | sudo tee -a /boot/config.txt

Wir rebooten unseren Raspberry Pi

sudo reboot

Prüft nach dem rebooten ob der Parameter korrekt gesetzt wurde

vcgencmd otp_dump | grep 17:

Es muss 17:3020000a ausgegeben werden.

raspberry pi usb boot aktivieren

Hiernach könnt ihr euren Pi ausschalten und die SD-Karte entfernen.

SSD Festplatte vorbereiten

Wir können nun das aktuelle Raspbian mit Etcher direkt auf unsere Festplatte schreiben. Steckt hierzu die Festplatte an euren normalen Rechner anhand des USB zu SATA Adapters an.

RasPi Intel SSD

Wichtig!
Bei falscher Handhabung von Etcher könnt ihr eure im Rechner verbauten Festplatten überschreiben und Daten verlieren, geht sorgfältig vor.

Startet Etcher über das Startmenu und wählt links euer Raspbian Image aus, dann Rechts oben im Eck via Zahnrad die Optionen öffnen

Etcher unsafe mode

In den Optionen aktiviert ihr „Unsafe Mode„, ohne den Unsafe mode werden euch in der Auswahl für das Ziel nur SD oder USB-Sticks angezeigt.

Etcher unsafe mode 2 

Wählt dann über Select Drive die richtige Festplatte aus. Bei mir ist es die 80,03GB Disk die ich zusätzlich am Namen des USB to SATA Konverter erkannt habe (ASMxxx).

  • Wichtig! Ihr müsst unbedingt die korrekte Festplatte auswählen!

Etcher SSD Disk

Startet dann den Flash Vorgang

Etcher unsafe mode 3

Steckt nach dem Flashen die Disk ab.

Raspberry Pi von SSD Festplatte starten

raspberry pi mit ssd festplatte

Steckt dann die SSD Disk über den USB zu SATA Adapter an euren Raspberry Pi und steckt ihn an dem Strom, Bildschrim, Tastatur. Der erste Startdauert etwas länger da das Dateisystem erweitert wird, hiernach solltet ihr aber wie gewohnt mit eurem Raspberry Pi arbeiten können.

raspberry pi ssd boot

Ihr könnt dann wie gewohnt mit eurem Raspberry Pi arbeiten. Sollte es beim anstecken weiterer USB Geräte zu Problemen kommen könnt ihr noch versuchen usb_max_current zu aktivieren.

Geschwindigkeit der Raspberry Pi SSD Festplatte

Von der Geschwindigkeit hatte ich mir nicht zu viel erwartet da beim Raspberry Pi die Transferrate des USB-Anschluss das Limit für die angeschlossene SSD Festplatte vorgibt, ich wollte allerdings trotzdem einen Vergleich zu einer normalen SD-Karte ziehen.

 SD Karte HDParam dd 4k lesen 4k schreiben
Schnelle SD – SanDisk Ultra Andoid 32GB 21,86 MB/s 15,90 MB/s 8,26 MB/s 3,22 MB/s
Normale SD – SanDisk Ultra 16GB 21,57 MB/s 8,50 MB/s 6,06 MB/s 2,10 MB/s
SSD Festplatte via USB to SATA 31,78 MB/s 33,60 MB/s  7,98 MB/s 9,72 MB/s

Die Geschwindigkeit ist im Vergleich zu gängigen SD-Karten super! Vor allem beim Random 4k Lesen und Schreiben, was dem Alltagsgebrauch nahe kommt, ist der Test super verlaufen. Der Speed der SSD via USB SATA Adapter ist perfekt!

Raspberry Pi von SSD Festplatte booten
raspberry.tips

http://raspberry.tips/raspberrypi-tutorials/raspberry-pi-von-ssd-festplatte-booten/feed16" target="_blank" >
raspberry.tips
raspberry.tips - Raspberry Pi Projekte und Tutorials

Nachdem ich nun alle Teile für das Display meines Magic Mirror zusammengetragen und teilweise bestellt habe und der Rahmen gebaut wurde geht es heute um die Auswahl des richtigen Spion- oder auch Polizei-Spiegel und das Glas. Tag 3 – Magic Mirror – Bau des Spiegels / Folie Für unseren Smart Mirror müssen wir uns erst …

Raspberry Pi Magic Mirror selbst Bauen ? Projekt-Tagebuch ? Tag 3
raspberry.tips

raspberry.tips
raspberry.tips - Raspberry Pi Projekte und Tutorials

Nachdem ich nun alle Teile für das Display meines Magic Mirror zusammengetragen und teilweise bestellt habe und der Rahmen gebaut wurde geht es heute um die Auswahl des richtigen Spion- oder auch Polizei-Spiegel und das Glas.

Tag 3 – Magic Mirror – Bau des Spiegels / Folie

Für unseren Smart Mirror müssen wir uns erst überlegen in welchem Raum wir den Spiegel verwenden möchten. Die Lichtverhältnisse im Raum spielen die wichtigste Rolle, wir wollen ja ,auch wenn es recht hell im Raum ist, die Schrift des dahinter liegenden Monitors lesen können und auf der anderen Seite nicht das Innenleben begutachten. Daher müsst ihr ggf. verschiedene Varianten probieren.

Folgende Optionen haben wir

Zwecks der Kosten für einen echten Chrom-Spiegel habe ich mich für die Folie entschieden (Option 3 für 5,21€), diese kann ich einfach auf (Acryl)Glas aufbringen und sie erzielt ähnliche Ergebnisse wie echtes Chrom-Glas. Als Träger für die Spionfolie verwende ich Acrylglas aus dem Baumarkt (Hobbyglas 4mm Dick) für 5,29€.

Das Acrylglas kann ich einfach selbst zuschneiden ohne einen Glaser beauftragen oder einen Glasschneider kaufen zu müssen.

Acrylglas zuschneiden

Werkzeug

Als erstes schneiden wir unser Acrylglas zu, dafür könnt ihr entweder eine Stichsäge verwenden (sorgt für eine Führung, z.B. mit einer langen Wasserwage oder Holzleiste die mit Schraubzwingen an der Scheibe befestigt wurde) oder von Hand aussäge, zum Beispiel mit einem Fuchsschwanz. Ich habe eine Gehrungssäge die ich dafür verwenden kann, ich verwende natürlich diese. Messt noch mal das Innenmaß eures Rahmens, ich Säge die Scheibe etwas kleiner aus um sicherzustellen das diese ordentlich passt.

Hinweiß
Wer vermeiden möchte das die Ecken beim Sägen abbrechen kann dort genau an die Ecke eine Bohrung setzen, Schutzbrille nicht vergessen! Achtet darauf das euer Sägeblatt für Acryl geeignet ist.

Anzeichnen mit Bleistift und Anschlagwinkel

Acrylglas anzeichnen

Die ersten Schnitte habe ich mit der Gehrungssäge erledigt, da ich aber nicht 35 cm mit dieser Sägen konnte habe ich den Rest mit einem Fuchsschwanz gesägt und hierbei eine Latte als Anschlag mit Schraubzwingen befestigt.

Acrylglas zuschneiden  Acrylglas fuchsschwanz

Die Kanten sind nach dem sägen nicht Optimal und sollten poliert werden, da diese aber bei meinen Rahmen nicht zu sehen sind verzichte ich darauf ;)

Nach dem abziehen der Schutzfolie und dem Einbau der Platte mit dem Dahinter gelegten Display (noch ohne Spiegelfolie) sieht der Rahmen schon echt gut aus.

Magic Mirror Raspberry Pi mit Acrylglas

Spiegelfolie Aufbringen

Geht beim Aufbringen der Folio unbedingt sorgfältig und nach den Angaben des Herstellers vor, das Beste Ergebnis erhalten wir wenn die Folie auf der Innenseite möglichst nahe am Display aufgeklebt werden kann, dann verschwimmt die Schrift am wenigsten.

RasPi Magic Mirror Folie

Ich habe mein Acrylglas mit Hilfe der Rakel mit Spülmittel-Wasser benetzt, die Folie vorab mit ein paar Zentimeter überstand mit der Schere zugeschnitten und dann aufgelegt.

RasPi Magic Mirror Folie aufkleben

Dann wird alles schön glatt gestrichen, ein paar kleine Bläschen sind bei mir übrig geblieben, sieht man aber nur von ganz nahe.

RasPi Magic Mirror Folie glatt streichen

Danach habe ich die Folie am Rand mit einem scharfen Cutter abgeschnitten und nach dem säubern auf beiden Seiten in den Rahmen verfrachtet. Für die paar Euro bin ich mit dem Ergebnis sehr zufrieden.

Fertiger Spiegel

Für den nächsten Teil muss ich noch ein paar Tage warten bis der Display Controller den Weg von Hong Kong nach Deutschland schafft, Stay Tuned!

Artikel in der Magic Mirror Serie:

Raspberry Pi Magic Mirror selbst Bauen ? Projekt-Tagebuch ? Tag 3
raspberry.tips

" target="_blank" >
raspberry.tips
raspberry.tips - Raspberry Pi Projekte und Tutorials

Da seit einigen Wochen das Unofficial Repository von OpenELEC nicht erreichbar ist und somit keine unkomplizierte Möglichkeit besteht TVHeadend für OpenELEC zu installieren zeige ich euch heute wie die Installation auf eurem Raspberry Pi mit LibreELEC funktioniert, in diesem Tutorial verwende ich das neue TVHeadend 4.2. Hardware und Software Raspberry Pi 3 Case für den RasPi …

Raspberry Pi 3 Live TV mit TvHeadend auf LibreELEC ? Kompletteinrichtung
raspberry.tips

raspberry.tips
raspberry.tips - Raspberry Pi Projekte und Tutorials

Da seit einigen Wochen das Unofficial Repository von OpenELEC nicht erreichbar ist und somit keine unkomplizierte Möglichkeit besteht TVHeadend für OpenELEC zu installieren zeige ich euch heute wie die Installation auf eurem Raspberry Pi mit LibreELEC funktioniert, in diesem Tutorial verwende ich das neue TVHeadend 4.2.

Hardware und Software

LibreELEC auf dem Raspberry Pi installieren

Die Installation von LibreELEC auf unserem Raspberry Pi 3 gestalltet sich recht einfach, wir benötigen das LibreELEC Disk Image für unsere SD-Karte und laden uns dieses auf den Rechner.

Ladet euch das Tool Etcher zum Schreiben der Images auf die SD-Karte auf euren Rechner.

Startet Etcher  und wählt das heruntergeladene LibreELEC Image aus, es muss vorher nicht entpackt werden.

LibreELEC Image auf SD Karte schreiben mit Etcher

Falls ihr nur einen Wechsel-speicher ( SD-Karte / USB Stick) an eurem Rechner angeschlossen habt erkennt Etcher das Ziel für das Image automatisch, andernfalls müsst ihr das Ziel noch ändern und dann via Flash das Image auf die Karte schreiben.

Etcher Flash LibreELEC

LibreELEC Einrichten

Steckt nun die SD-Karte in euren RasPi. Schließt einen Monitor und die Tastatur oder Fernbedienung mit FLIRC und euren DVB-x Tuner an euren PI an. Danach erst den Raspberry Pi Pi mit dem Strom verbinden, der erste Start dauert, da die SD-Karte vergrößert wird, etwa 30 Sekunden.

Nach dem ersten Start begrüßt euch der Assistent zum Einrichten der Grundfunktionen, bestätigt mit Next

LibreELEC auf dem Raspberry Pi 1

Im zweiten Dialog könnt ihr den Rechnernamen eures Ras Pi ändern, ich belasse ihn bei LibreELEC und bestätige mit Next

LibreELEC auf dem Raspberry Pi 2

Als nächstes müssen wir unseren Raspberry Pi mit dem Netzwerk verbinden, entweder ihr verwendet wie ich den integrierten WLAN Adapter, oder ihr steckt nun einfach ein Ethernet Kabel an den Pi und überspringt diese Schritte. Wählt aus der Liste euer WLAN Netzwerk aus und bestätigt mit Enter

LibreELEC auf dem Raspberry Pi 3

Bestätigt den folgenden  zur Verbindung ebenfalls mit Enter

LibreELEC auf dem Raspberry Pi 4

Gebt dann euer WLAN Passwort ein (steht meistens auf eurem Router oder lag als Zettel bei) und bestätigt

LibreELEC auf dem Raspberry Pi 5

Euer Media Center verbindet sich nun mit dem WLAN Netzwerk, sobald eine Verbindung besteht meldet der State ready und die IP-Adresse des RasPi wird angezeigt. Notiert euch die IP-Adresse und bestätigt dann mit Next

Im nächsten Fenster müsst ihr SSH aktivieren und bestätigt mit Next

  • Aus Sicherheitsgründen sollte SSH nur aktiviert werden wenn ihr es wirklich braucht, deaktiviert es später über die Einstellungen

LibreELEC auf dem Raspberry Pi 6

Beendet dann den Assistenten durch Next

LibreELEC auf dem Raspberry Pi 7

Raspberry Pi Codec Lizenz für MPEG2 und VC1

Wichtig ist das ihr unter LibreELEC noch die MPEG-2 und VC-1 Lizenzen eingerichtet habt um Live TV am Besten genießen zu können, die Lizenzen kosten nur ein paar Euro. Für die Bestellung der Lizenz im Raspberry Pi Store wird die Serien Nummer eures Mini-Rechners benötigt, diese kann unter LibreELEC via Zahnrad Symbol– System info – Hardware – Serial ausgelesen werden.

libreelec mpeg serial number

Sobald euch die Keys nach der Bestellung vorliegen verbinden wir uns via SSH mit dem System. Ladet euch hierzu den SSH Client Putty auf euer Windows System.

Öffnet Putty und gebt bei Hostname / IP-Address die IP oder den Rechnernamen eures RasPi ein

  • Der Hostname / Rechername bei LibreELEC ist immer libreelec
  • Die IP-Adresse erhaltet ihr unter System Info – Network

putty ssh libreelec

Als Benutzer verwendet ihr root mit dem Passwort libreelec da bei LibreELEC das Dateisystem schreibgeschützt ist müssen wir dieses erst beschreibbar mounten.

Dann editieren wir die Datei config.txt mit dem Editor Nano

Tragt an unter „License keys to enable …“ eure Lizenzschlüssel in jeweils einer neuen Zeile ein oder editiert die vorhandenen Zeilen indem ihr die Raute entfernt.

Nach dem reboot könnt ihr über das Kommando codec_enabled kontrollieren ob alles geklappt hat.

LibreELEC USB TV Karte einrichten – DVB-T

Steckt nun euren TV-Stick am Raspberry Pi ein und überprüft mit lsusb via SSH ob dieser erkannt wird

lsusb

Openelec TV Stick einrichten

Falls eure USB-Festplatte nun das klackern anfängt oder der Stick nicht erkannt wird kann es sein das euer Netzteil nicht stark genug ist oder eure diese Konstellation nur mit aktivem USB-Hub funktioniert. Prüft, falls nichts erkannt wird, bitte die Kompatibilität des Geräts und wendet euch bei Problemen an die Community.

TvHeadend unter LibreELEC am Raspberry Pi einrichten

Wir beginnen mit der Installation von TvHeadend auf unserem LibreELEC Media Center System. Die Software gibt es als AddOn für Kodi. Zum installieren navigieren wir in der Kodi Oberfläche in folgendes Menu und installieren das AddOn

Geht im Hauptmenu auf Add-ons > Install from repository

Repository install tvheadend

Wir wählen das LibreELEC Add-ons repository mit Enter

libreelec repository

Dann wählen wir Services aus der Liste

Services repository

Sucht „Tvheadend 4.2“ aus der Liste bestätigt zwei mal mit Enter zum installieren des Addon

tvheadend installation 1 tvheadend installation 2

Der TVHeadend Server ist nun installiert.

Tvheadend PVR Client

Um in Kodi die von Tvheadend verteilten Fernsehprogramme auch ansehen zu können benötigen wir noch einen PVR-Client.

Geht zurück in die oberste Ebene des LibreELEC Repository und wählt dort dort die Kategorie PVR-Clients 

tvheadend pvr client

Wählt den und Tvheadend HTSP Client und installiert diesen durch zweimal Enter

TvHeadend unter LibreELEC / Kodi einrichten

Nach einem Neustart eures Media Centers ist das Webinterface für die Konfiguration von TvHeadend über einen Browser in eurem Heim Netzwerk erreichbar. Die IP-Adresse findet ihr wieder über die System Info in den Einstellungen.

  • http://<IP-Adresse>:9981 also z.B. http://192.168.178.35:9981 oder http://libreelec:9981

Ab TVHeadend 4.2 gibt es einen Assistenten der euch bei der Einrichtung eures TV Stick unterstützt. Dieser begrüßt euch als aller erstes. Ihr könnt den Assistenten jeder Zeit wieder über Configuration > General > Base -> Start wizard aufrufen.

Ich belasse die Sprache für das Webinterface auf Englisch und wähle als EPG Sprache natürlich deutsch

tvheadend einrichten 1

Danach könnt ihr die erlaubten Netzwerke konfigurieren und Benutzer und Passwörter anlegen. Da ich TVHEadend nur im Heimnetz verwende lasse ich alles leer

tvheadend einrichten 2 passwort

Nun könnt ihr euren Tuner zuordnen, da ich DVB-C (Kabel verwende) ordne ich meinem DVB-C Tuner den Typ „DVB-C Network“ zu, die anderen lasse ich leer.

tvheadend einrichten 3

Danach legen wir fest in welchem Kabelnetz wir uns befinden, ich bin bei Unitymedia und wähle daher „Germany – de Unitymedia“ (für Baden-Württemberg: nicht mehr KabelBW auswählen immer Unitymedia).

tvheadend einrichten 4

Dann wird ein Sendersuchlauf gestartet, wartet diesen ab, wenn nichts gefunden wurde stimmt etwas mit eurer Verbindung oder der Auswahl des Kabelnetzes nicht. Wartet das Ende des Suchlaufes ab.

tvheadend suchlauf

Wir mappen nun alle gefundenen Programme über „Map all services“ auf einen Kanal. Die Programmliste sortiert ihr am Besten später aus.

Beendet dann den Assistenten.

Unter Configuration > Channels / EPG > Channels könnt ihr dann verschlüsselte Sender oder Radio Sender durch auswählen und „Delete“ aus eurer Programmliste entfernen, in Kodi ist diese sonst unnötig lang. Ich habe z.B. alle Sky, privaten HD und Radio Programme aus meiner Liste entfernt.

Kanal Liste tvheadend

Kodi für Live TV mit TvHeadend benutzen

Ihr könnt nun den auf dem selben Pi laufenden Tvheadend Server mit eurem Kodi / LibreELEC Media Center nutzen oder einem beliebigen anderen TvHeadend Client im Heimnetz verwenden.

Über den Menu Punkt TV > Channels könnt ihr nun durch die Kanäle Zappen.

Kodi TV

TvHeadEnd unter Android nutzen

Ganz spannend finde ich die Möglichkeit nun auch am Tablet Live TV genießen zu können, wir müssen uns dazu nur im selben Netz befinden (Heimnetz) und uns die passende Andoid App runterladen.

TVHeadend Andoid    TVHeadend Andoid    TVHeadend Andoid

TvHeadEnd unter iOS nutzen

Auch für Apples iOS gibt es den TVheadend Client TVHClient, er funktioniert ebenfalls mit dem VLC Player

  • Gebt auch hier in den Einstellungen nur die IP-Adresse und einen Namen ein

tvheadend ios    tvheadend ios

Raspberry Pi 3 Live TV mit TvHeadend auf LibreELEC ? Kompletteinrichtung
raspberry.tips

http://raspberry.tips/raspi-media-center/raspberry-pi-3-live-tv-mit-tvheadend-auf-libreelec-kompletteinrichtung/feed2" target="_blank" >
raspberry.tips
raspberry.tips - Raspberry Pi Projekte und Tutorials

Nachdem ich im vorangehenden Teil meines Projekt-Tagebuchs das Display-Material für meinen Raspberry Pi Magic Mirror bestellt hatte dreht sich heute alles um den Bau des Rahmens für unseren „Zauberspiegel“. Auch den Rahmen wollte ich selber bauen, darüber hinaus gibt es Standard Bilder-Rahmen, welche meistens für Magic Mirror Projekte verwendet werden, zwei Problemchen: Die Tiefe des …

Raspberry Pi Magic Mirror selbst Bauen ? Projekt-Tagebuch ? Tag 2
raspberry.tips

raspberry.tips
raspberry.tips - Raspberry Pi Projekte und Tutorials

Nachdem ich im vorangehenden Teil meines Projekt-Tagebuchs das Display-Material für meinen Raspberry Pi Magic Mirror bestellt hatte dreht sich heute alles um den Bau des Rahmens für unseren „Zauberspiegel“.

Auch den Rahmen wollte ich selber bauen, darüber hinaus gibt es Standard Bilder-Rahmen, welche meistens für Magic Mirror Projekte verwendet werden, zwei Problemchen:

  • Die Tiefe des Rahmens muss 4-5cm Betragen um alles im inneren des Rahmen unterbringen zu können. Solche Rahmen sind ehr selten und in stabilen Ausführungen teuer, ggf sieht es unschön aus wenn das Display nicht komplett in den Rahmen passt. Der oft verwendete IKEA Rahmen RIBBA ist wackelig und nur noch in schwarz verfügbar.
  • Der Rahmen muss sehr stabil sein da ich keine spezielle Halterung bauen möchte sonder der Rahmen direkt an der Wand aufgehangen werden soll

Bei Selbstbau mit Spiegelfolie ist allerdings die größte Herausforderung das Zuschneiden der Glas- oder Acrylplatte (wenn wir das vom Glaser erledigen lassen kostet das einiges an Geld). Da ich keine Nut oder Oberfräse besitze, und auch keine Kaufen wollte, wird der Rahmen aus Leisten zusammengebaut. Das ganze wird dann so aussehen:

Raspberry Pi Magic Mirror Rahmen

Tag 2 – Magic Mirror – Rahmen Bauen

Mein Display hat mit dem metallischen Rand folgende Maße Länge: 34,5cm auf Breite:22,2cm. Das wird das Innen-Maß des Rahmens, da bei mir die Flachbandkabel an den Seiten rauskommen gebe ich pro Seite 2mm zu.

Da wir die Rahmenleisten auf Gehrung schneiden müssen diese Entsprechend länger sein (Außenmaß) (erinnert euch an Pythagoras ;) )  

Material

  • Leisten für den Rahmen
    • 2x Rechteckleisten Kiefer 47 x 19mm Länge 38,7cm ( 34,5cm Länge Display + 2 x 0,2cm Luft + 2 x 1,9cm ergibt das Außenmaß)
    • 2x Rechteckleisten Kiefer 47 x 19mm Länge 26,4cm (22,2cm Breite Display + 2 x 0,2cm Luft + 2 x 1,9cm ergibt das Außenmaß)
    • 2x Quadrahtleisten Kiefer 10 x 10mm Länge 34,5cm ( = Innenmaß )
    • 2x Quadrahtleisten Kiefer 10 x 10mm Länge  22,2 cm ( = Innenmaß )
  • Holzleim, etwas Schleifpapier verschiedene Körnung (80-180)
  • Metall-Winkel + Schräubchen zur Stabilisierung
  • Optional: Etwas Farbe für den Rahmen

Die Winkel und Leisten haben mich im Baumarkt um die Ecke ca. 17€ gekostet. Leim, Schleifpapier und Schräubchen hatte ich noch.

Update: Es hat sich gezeigt das die Rahmenstärke von 47mm sehr knapp ist, ggf. solltet ihr stärkere Leisten verwenden oder alternativ dünnere Quadrahtleisten für die Auflage des Spiegels um mehr Platz im Inneren zu erhalten.

Werkzeug

Ich habe die Leisten der Einfachheit halber mit meiner elektrischen Gehrungssäge zugeschnitten.

Der Zusammenbau des Rahmens

Nach dem Sägen auf Gehrung (geht sehr genau und sorgfältig vor) schauen meine Teile so aus:

Rahmen für Magic Mirror

Da ich keine spezielle bzw. großen Schraubzwingen für Rahmen hatte habe ich für zusätzliche Stabilität und ordentliches Abbinden des Holzleims die Winkel direkt an den beiden langen Rahmenteilen vormontiert. Wichtig! Achtet darauf das die Rahmenteile mit Winkel genau zusammenpassen.

Raspberry Pi Magic Mirror Rahmen bauen

Die Kanten werden mit reichlich Leim Bestrichen, der Rahmen zusammengedrückt und dann die Winkel festgeschraubt.

Raspberry Pi Magic Mirror Rahmen verleimen

Raspberry Pi Magic Mirror fertig verleimt

Der rausquellende Leim wird glatt gestrichen und der Rest später mit feinem Schleifpapier entfernt. Nun leimen wir noch die 10 x 10 Quadrahtleisten als Halterung für die Scheibe bzw. das Display hinein. Wenn ihr genau gesägt habt geht das ohne weiteres festspannen mit einer Schraubzwinge, die Leisten fixieren sich selbst.

Rahmen Halterungen Leimen

Wichtig auf der Innenseite den Leim gut glatt streichen / entfernen, sonst passt später unsere Scheibe nicht ordentlich hinein.

Fertiger Display Rahmen

Die Kanten, Leim und leichten Überstände entfernen wir später mit Schleifpapier, lasst alles ein paar Stunden trocknen.

Nach dem Trocknen habe ich den Rahmen geschliffen, die Kanten geglättet und mit etwas übrigem Acryl-Lack (Universalfarbe) gestrichen. Der Hochwertige Lack war von einer Renovierung übrig, deckt gut, ist beständig und füllt kleinere Ungenauigkeiten. Aufgetragen mit einer kleinen Walze und Pinsel. Ich habe auch innen Lackiert um zu vermeiden das durch die Scheibe Holz zu sehen ist, die Dunkle Farbe ist hierbei von Vorteil.

Rahmen lackiert

Ein zweiter Anstrich fehlt noch.

Artikel in der Magic Mirror Serie:

Raspberry Pi Magic Mirror selbst Bauen ? Projekt-Tagebuch ? Tag 2
raspberry.tips

" target="_blank" >
raspberry.tips
raspberry.tips - Raspberry Pi Projekte und Tutorials

Beim Surfen bin ich mal wieder auf die Raspberry Pi gestützten „Magic Mirrors“ gestoßen, hierbei wird hinter einem Spionspiegel ein Display Montiert das anhand eines speziellen Betriebssystems (mirr.os) auf dem Spiegel wichtige Informationen darstellen kann. Oft genutzte Funktionen sind zum Beispiel der aktuelle Wetterbericht, die Familien-Einkaufsliste oder ein gemeinsamer Kalender. Direkt hatte ich den drang …

Raspberry Pi Magic Mirror selbst Bauen – Projekt-Tagebuch – Tag 1
raspberry.tips

raspberry.tips
raspberry.tips - Raspberry Pi Projekte und Tutorials

Beim Surfen bin ich mal wieder auf die Raspberry Pi gestützten „Magic Mirrors“ gestoßen, hierbei wird hinter einem Spionspiegel ein Display Montiert das anhand eines speziellen Betriebssystems (mirr.os) auf dem Spiegel wichtige Informationen darstellen kann. Oft genutzte Funktionen sind zum Beispiel der aktuelle Wetterbericht, die Familien-Einkaufsliste oder ein gemeinsamer Kalender.

Direkt hatte ich den drang selbst einen „Smart Magic Mirror“ auf Basis des Raspberry Pi zusammenzubauen, war aber angesichts der Kosten erst mal abgeschreckt. Über die Jahre haben sich in meinen Hardware-Fundus neben vielen vielen elektronischen Bauteilen, Raspberry Pi Zubehör und Kabeln auch einige alte Computer aus dem Alltagsgebrauch angesammelt. Aus Kostengründen habe ich mich daher entschieden das Magic Mirror Projekt, wo möglich, mit bereits vorhandenen Materialien zu bewerkstelligen und auf ein Optimales Ergebnis zu Gunsten der Kosten zu verzichten.

Mit diesem Artikel starte ich mein Projekt-Tagebuch zum Smart Magic Mirror mit Raspberry Pi und Mirr.OS, über die nächsten Wochen werde ich immer wieder mit Details zum Bau und zum Projekt Fortschritt berichten.

Tag 1 – Magic Mirror – Die Auswahl Display, Controller und Netzteil

Für einen Magic Mirror ist das Display neben dem verwendeten Spiegel das wichtigste, zugleich aber auch das teuerste, Bauteil. Das Display muss ausreichend Helligkeit bieten, 300cd/m² sollten dafür passen, und einen guten Blickwinkel aufweißen um die dargestellten Informationen auch von der Seite lesen zu können. Für eine gute Kosmetik sollte der verwendete Monitor auch einen guten Schwarzwert aufweißen, sonst sieht man anstelle der Schrift zwecks Hintergrundbeleuchtung des Monitors alles durch den Spiegel.

Einen passenden Monitor oder ein einzelnes Panel (Bezeichnung für das Display-Pannel ohne Gehäuse und weitere Elektronik) mit Converter wäre schon ein Kostenpunkt von knapp 200 €.

Ich habe mich dazu entschieden eines meiner alten Laptops wiederzuverwenden, hier habe ich zwar nur 15 Zoll, das Reicht mir aber vollkommen aus um alles übersichtlich im Spiegel dazustellen. Wer kein altes Gerät hat; fragt mal bei eurem Arbeitgeber (IT-Abteilung) oder im Bekanntenkreis, hier gibt es oft sogar umsonst die notwendigen Teile.

Der Ausbau des Display gelingt mit einem passenden Schraubenziehersatz jedem versierten Bastler. Wichtig! Geht vorsichtig vor, die (Flachband)kabel dürfen nicht knicken und müssen komplett erhalten werden.

Auseinanderbauen Laptop

Nach dem Ausbau präsentiert sich mir, neben einem Haufen Schrott, ein schönes 15,4Zoll WXGA Pannel ( LP154WX7 (TL)(B1) ) das für meine Zwecke völlig ausreicht. Mein Panel hat zwei Anschlüsse 1x ein kleines Flachbandkabel für das Backlight und ein großes 30/40 Pol für das Video Signal vom Converter / Controller.

Raspberry Pi Magic Mirror Display

Dank eBay war der notwendige Display Converter auch schnell gefunden, sucht einfach nach der Panel Bezeichnung. Die Kosten belaufen sich also für das Display bisher auf 32€ für den Controller der aus China kommt. Eine deutsche Quelle konnte ich nicht aus machen. Ich habe den Controller für die P1 Variante gekauft, da die hinteren Buchstaben bei diesem Panel lediglich die Oberfläche des Display beschreiben (Matt / Glänzend) sollte das kein Problem sein. Bei Unklarheiten bitte beim Verkäufer anfragen.

Display Controller

Für den Controller benötigen wir noch ein Netzteil, mit Output von 12V / 4A (Es kann auch ein 5A Netzteil sein, wichtig sind 12V). Das Kabel benötigt einen Standard „Barrel Plug“ (Stecker außen: 5,5mm innen: 2,5mm) der weiblichen Art (also keinen weiteren  Zapfen in der Mitte des Steckers für den Plus-Pol). Beim Netzteil war mir die Sicherheit wichtig, daher habe ich hier nicht auf die billigste China Ware zurückgegriffen. Fragt euren Verkäufer was für ein Netzteil für den Controller benötigt wird. Das Netzteil für meinen Controller Kostet 14€.

Netzteil 12V / 4A mit Barrel Plug für Display Controller

magic mirror netzteil

 

Bist jetzt haben wir 46€ für unseren Smart Mirror ausgegeben, im nächsten Artikel berichte ich über den Zusammenbau des Displays und mache mir dann über die richtigen Spion-Spiegel Gedanken.

Artikel in der Magic Mirror Serie:

Raspberry Pi Magic Mirror selbst Bauen – Projekt-Tagebuch – Tag 1
raspberry.tips

" target="_blank" >
raspberry.tips
raspberry.tips - Raspberry Pi Projekte und Tutorials

Nachdem die letzten Posts sich um Audio Ausgabe und Aufnahme gedreht haben möchte ich heute noch ein kleines spaßiges Tool vorstellen mit welchem wir unseren eigenen Stimmenverzerrer basteln können. Da die Leistung hier nicht maßgeblich ist sondern das Setup transportabel sein sollte verwende ich einen meiner Raspberry Pi Zero´s für dieses Projekt. Das Tool SoX …

Raspberry Pi Zero – Lustiger Stimmenverzerrer mit Mikrofon und Lautsprecher
raspberry.tips

raspberry.tips
raspberry.tips - Raspberry Pi Projekte und Tutorials

Nachdem die letzten Posts sich um Audio Ausgabe und Aufnahme gedreht haben möchte ich heute noch ein kleines spaßiges Tool vorstellen mit welchem wir unseren eigenen Stimmenverzerrer basteln können. Da die Leistung hier nicht maßgeblich ist sondern das Setup transportabel sein sollte verwende ich einen meiner Raspberry Pi Zero´s für dieses Projekt.

Das Tool SoX  (Sound eXchange) bietet uns vielfältige Möglichkeiten aufgenommene Stimmen zu verzerren oder zu manipulieren.

Hardware

Vorbereitung

Wie immer müsst ihr euer System bereits installiert und eingerichtet haben. Ich verwende das aktuelle Raspbian Stretch.

  1. Grundinstallation mit Raspbian Image, siehe Einsteiger Tutorials
  2. Setup eurer USB-Sound Karte

Wichtig! Sicherstellen das euer Mikrofon nicht gemuted ist, öffnet hierzu in einer Kommandozeile alsamixer

alsamixer

Wechselt mit den Pfeiltasten auf euer Microfon und stellt sicher das in der unteren Box NICHT „MM“ steht (MM = Mute), ändern könnt ihr das durch Drücken der M Taste.

muted microfon

Im alsamixer könnt ihr auch eure Aufnahmelautstärke anpassen (Pfeiltasten hoch/runter)

SoX Stimmenverzerrer auf dem Raspberry Pi einrichten

Öffnet zum Setup der SoX Software ein Terminal auf dem Desktop oder benutzt VNC, wir installieren als erstes die notwendige Software, SoX für die Veränderung unserer Aufnahmen und ,mpg123 um auch im mp3 Format speichern zu können.

sudo apt-get install sox mpg123 libsox-fmt-mp3 -y

Eine weitere Einrichtung ist nicht notwendig, wir können direkt mit dem Spaß beginnen. SOX kann auf drei verschiedene Arten gestartet werden.

  • sox – Enthält alle Funktionen
  • play – Für Wiedergaben mit Sox
  • rec – Für Aufnahmen mit SoX

Stimme mit SoX und dem Raspberry Pi verzerren

Zur Veränderung unserer Stimme stehen uns eine schier unendliche Anzahl an Möglichkeiten zur Verfügung, SoX bietet uns einige Effekte die miteinander Kombiniert werden können. Ein Studium der MAN Pages und etwas last zu probieren verschafft euch bestimmt lustige Ergebnisse.

Wer kein Microfon hat kann sich meine Testdatei herunterladen und damit spielen.

cd $HOME
 wget cdn.raspberry.tips/2017/09/raspberry-tips-sox-example.wav

Simples Echo direkt ausgeben

Aufnehmen und direkt verändert wieder ausgeben. In diesem Beispiel modifizieren wir den Sound direkt beim Aufnehmen

play "|rec --buffer 2048 -d pitch -300 echos 0.8 0.88 100 0.6 150 .5 band 1.2k 1.5k"
 

Entführer Style

Als erstes habe ich ein Beispiel mit meinem Mikrofon aufgenommen und als raspberry-tips-sox-example.wav gespeichert (stoppen der Aufnahme mit CTRL+C)

rec raspberry-tips-sox-example.wav

Die Aufnahme modifiziere ich dann mit folgenden Befehlen

sox raspberry-tips-sox-example.wav tmp.wav norm vad gain -7 pitch -600 overdrive 20 pad .25
 sox tmp.wav tmp-reverse.wav reverse reverb -w reverse
 sox -m tmp.wav tmp-reverse.wav fertig.mp3

Folgendes passiert:

  • Mit der ersten Zeile verzerren wir das Stimmbild
  • Die zweite Zeile speichert die verzerrte Datei zusätzlich im Rückwärts-lauf
  • Befehl drei kombiniert die beiden verzerrten Dateien zu fertig.mp3

Die fertige Datei könnt ihr dann z.B. mit play wieder ausgeben.

play fertig.mp3

Roboter Stimme

Wir können auch eine fertige Datei beim Abspielen modifiziert ausgeben ohne die Quelle zu verändern. In diesem Beispiel geben wir eine Roboter Stimme aus.

play raspberry-tips-sox-example.wav overdrive 10 echo 0.8 0.8 5 0.7 echo 0.8 0.7 6 0.7 echo 0.8 0.7 10 0.7 echo 0.8 0.7 12 0.7 echo 0.8 0.88 12 0.7 echo 0.8 0.88 30 0.7 echo 0.6 0.6 60 0.7

Ganz brutal blechern lässt sich der Roboter wie folgt generieren

play raspberry-tips-sox-example.wav stretch 1.2 133.33 lin 0.2 0.4 overdrive 30 30 echo 0.4 0.8 15 0.8 synth sine fmod 30 echo 0.8 0.8 29 0.8

Mit diesem Befehl lassen sich auch schon die verschiedenen Effekte anhand einer Beispieldatei testen.

Mickey Mouse

Mit etwas Pitch und Speed lässt sich ein Mickey Mouse Effekt erziehlen

play raspberry-tips-sox-example.wav pitch 500 speed 1.5

Zum umwandeln einer vorhandenen Datei kann folgender Befehl verwendet werden

sox raspberry-tips-sox-example.wav raspberry-tips-sox-example-mickey.mp3 pitch 500 speed 1.5

Viel Spaß!

Raspberry Pi Zero – Lustiger Stimmenverzerrer mit Mikrofon und Lautsprecher
raspberry.tips

http://raspberry.tips/raspberrypi-tutorials/raspberry-pi-zero-lustiger-stimmenverzerrer-mit-microfon-und-lautsprecher/feed1" target="_blank" >
raspberry.tips
raspberry.tips - Raspberry Pi Projekte und Tutorials

Neben dem an den großen Raspberry Pi´s verfügbaren 3,5mm Klinke-Stecker und HDMI für die Audio-Ausgabe kann es für diverse Projekte wichtig sein eine weitere Sound-Karte mit Line-In ein Mikrophone an den Raspberry Pi anzuschließen, in diesem Artikel zeige ich euch wie Ihr die beiden an eurem Raspberry Pi einrichtet und konfiguriert. Wer nur eine gute Wiedergabequalität …

Raspberry Pi – (USB) Soundkarte unter Raspbian einrichten
raspberry.tips

raspberry.tips
raspberry.tips - Raspberry Pi Projekte und Tutorials

Neben dem an den großen Raspberry Pi´s verfügbaren 3,5mm Klinke-Stecker und HDMI für die Audio-Ausgabe kann es für diverse Projekte wichtig sein eine weitere Sound-Karte mit Line-In ein Mikrophone an den Raspberry Pi anzuschließen, in diesem Artikel zeige ich euch wie Ihr die beiden an eurem Raspberry Pi einrichtet und konfiguriert. Wer nur eine gute Wiedergabequalität benötigt und die möglichkeit hat den Raspberry Pi via HDMI Anschluss mit einem AV Receiver anzuschliessen sollte sich dieser Methode bedienen anstelle auf eine USB Soundkarte zurückzugreifen.

USB Sound Karten für den Raspberry Pi

Es gibt diverse USB Sound Karten für die Audio Ausgabe und Aufnahme auf dem Markt, wichtig ist, falls ihr euch gute Audi Qualität wünscht, nicht die billigen Geräte zu verwenden.

Wer auf absolut hochwertigen Klang steht und kein Line-In benötigt sollte sich die diversen auf dem Markt befindlichen Audio HATs zum Anschluss an die GPIOs ansehen z.B. den HifiBerry gibt es in verschiedenen Varianten.

Projekt Vorschlag:

Schaut euch doch mal Volumio an, das Betriebssystem ist für Musikliebhaber speziell für den Raspberry Pi entwickelt worden.

Audio Ausgabe über 3,5mm Anschluss oder HDMI am Raspberry Pi einrichten

Wer nur einen Lautsprecher oder Kopfhörer an den normalen 3,5mm Klinke Anschluss des Raspberry Pi anschliessen möchte kann wie folgt sicherstellen das die Ausgabe über diesen funktioniert. Wer einen Bildschirm oder Fernseher mit integrierten Boxen hat oder den Pi via HDMI an einen AV-Receiver angeschlossen hat kann über den selben Weg die Ausgabe festlegen.

raspberry pi HDMI and 35mm audio out

Öffnet raspi-config via Terminal oder SSH

sudo raspi-config

Wählt „7 Advanced Options“ bestätigt mit Enter

raspberry pi konfiguration audio 1

Wählt „A4 Audio“ und bestätigt mit Enter

raspberry pi konfiguration audio 2

Wir wählen für:

  • Ausgabe via 3,5mm Klinke -> „1 Force 3.5mm (‚headphone‘) jack“
  • Ausgabe via HDMI -> „2 Force HDMI“

und bestätigen mit Enter.

raspberry pi konfiguration audio 4

Wählt dann „Finish“ um raspi-config zu beenden.

Nach einem reboot könnt ihr die Audioausgabe am RasPi Testen, wir laden uns eine Test WAV Datei herunter.

cd $HOME
 wget cdn.raspberry.tips/2017/09/test-sound-raspberry-tips.wav

Dann spielen wir die Datei via aplay ab.

aplay $HOME/test-sound-raspberry-tips.wav

Audio Ausgabe über eine USB Sound Karte am Raspberry Pi einrichten

Steckt eure USB-Sound Karte an den Raspberry Pi an und prüft als erstes ob diese vom System erkannt wurde. Gebt hierzu in einem Terminal oder via SSH folgenden Befehl ein

lsusb

Bei mir wird die Karte als „C-Media Electronics, Inc.“ erkannt

lsusb sound karte

Nun müssen wir unserem System noch beibringen das es die angeschlossene USB Soundkarte als Standard Gerät für Wiedergabe und Aufnahme anerkennt.

Wir prüfen welche Kartennummer für Wiedergabegeräte der ALSA Treiber dem USB Gerät zugeordnet hat.

aplay -l

Bei mir taucht der „USB Audio Device“ als „card 1“ auf, merkt euch die Nummer

raspberry pi usb sound

Wir müssen in unserer Konfigurationsdatei für die Standardwerte der ALSA Sound Karten noch festlegen das unsere „card 1“ das Standardgerät ist. Hierzu Editieren wir die folgende Datei

sudo nano /etc/asound.conf

Wir fügen folgendes ein

pcm.!default {
     type hw
     card 1
 }
 
 ctl.!default {
     type hw           
     card 1
 }

Wichtig! Ersetzt „card 1“ mit der Nummer eurer USB Audio Karte falls es nicht „card 1“ bei euch ist.

sudo reboot

Nach einem reboot könnt ihr die Audio Ausgabe am RasPi Testen, wir laden uns eine Test WAV Datei herunter.

cd $HOME
 wget cdn.raspberry.tips/2017/09/test-sound-raspberry-tips.wav

Dann spielen wir die Datei via aplay ab.

aplay $HOME/test-sound-raspberry-tips.wav

Lautstärke via Terminal oder SSH Anpassen

Wenn ihr eure Sound Karte eingerichtet habt könnt ihr noch die Lautstärke via Terminal anpassen.

alsamixer

alsamixer raspberry pi

Gesteuert wird mit den Pfeiltasten auf eurer Tastatur. Wer auf dem Desktop ist kann das ganze über das Lautsprecher Symbol rechts oben erledigen.

Raspberry Pi – (USB) Soundkarte unter Raspbian einrichten
raspberry.tips

http://raspberry.tips/raspberrypi-tutorials/raspberry-pi-usb-soundkarte-unter-raspbian-einrichten/feed3" target="_blank" >
raspberry.tips
raspberry.tips - Raspberry Pi Projekte und Tutorials

Nachdem sich die Ladezeiten von raspberry.tips in den letzten Monaten wieder massiv verschlechtert haben, vermutlich ist neben zusätzlichem Content auf dem Share Hosting wieder einiges mehr los, habe ich wieder einige WordPress Optimierungen durchgeführt. Der Page Load war wieder deutlich über 3 Sekunden, im Vergleich zu anderen Bilder-lastigen Blogs ist das zwar noch gut, für …

Raspberry.Tips nun schneller als 93% der Webseiten
raspberry.tips

raspberry.tips
raspberry.tips - Raspberry Pi Projekte und Tutorials

Nachdem sich die Ladezeiten von raspberry.tips in den letzten Monaten wieder massiv verschlechtert haben, vermutlich ist neben zusätzlichem Content auf dem Share Hosting wieder einiges mehr los, habe ich wieder einige WordPress Optimierungen durchgeführt. Der Page Load war wieder deutlich über 3 Sekunden, im Vergleich zu anderen Bilder-lastigen Blogs ist das zwar noch gut, für mich aber nicht das Optimum, auch für viele User sind Ladezeiten über 2-3 Sekunden einer der Hauptgründe eine Seite direkt wieder zu verlassen.

 

WordPress Optimierungen

In Vergangenheit waren die Page Loads mit meinem alten Setup eigentlich immer ganz gut

  • Bilder über Subdomain
  • Cloudflare als CDN
  • W3TC als Caching PlugIn
  • BWP Minify für das ordentliche laden der CSS und JS Ressourcen
  • GZip Compress für das sparende Ausliefern der Seite in gepacktem Zustand

Nach einigen Test stellt sich dann heraus das die Ursache der schlechten Ladezeiten auf eine für mich nicht ganz erklärbare Inkompatibilität zwischen den Optimierungs-Plugins zurückzuführen war. Nach längerer Suche konnte ich dem Setup keine Verbesserungen mehr abringen und entschied mich für eine Radikale Änderung:

  • Ersetzen der Optimierungs-Plugins durch eine Einzellösung
  • Update von PHP7.0 auf PHP 7.1

Die Caching und Optimierung-Plugins habe ich innerhalb von 2 Stunden durch das kostenpflichtige „WP Rocket“ ersetzt und dem Plugin erlaubt meine Cloudflare Settings passend zu den Settings im Plugin zu setzen. Für 39 Dollar ist WP-Rocket für die erhaltene Performance und das Ersetzen mehrerer Plugins sogar super günstig.

Nach einem globalen Purge aller Caches und kurzer Wartezeit sind die Ladezeiten wieder mehr als Optimal, raspberry.tips ist laut Pingdom sogar schneller als 93% der mit Pingdom getesteten Webseiten.

pingdom ergebniss

Happy Browsing!

Raspberry.Tips nun schneller als 93% der Webseiten
raspberry.tips

" target="_blank" >
raspberry.tips
raspberry.tips - Raspberry Pi Projekte und Tutorials

Im vorherigen Beitrag habe ich euch gezeigt wie ihr aus eurem Raspberry Pi mit Mikrophon und Lautsprecher eure eigene Alexa Sprachassistent baut.  Wer eigenen Alexa „Custom Skill“ entwickeln möchte um das Potenzial von Alexa voll auszuschöpfen kann das anstelle mit AWS Lambda auch lokal auf seinem Raspberry Pi mit Alexa App Server testen. Diese Methode …

Alexa Skills entwickeln mit dem Raspberry Pi
raspberry.tips

raspberry.tips
raspberry.tips - Raspberry Pi Projekte und Tutorials

Im vorherigen Beitrag habe ich euch gezeigt wie ihr aus eurem Raspberry Pi mit Mikrophon und Lautsprecher eure eigene Alexa Sprachassistent baut.  Wer eigenen Alexa „Custom Skill“ entwickeln möchte um das Potenzial von Alexa voll auszuschöpfen kann das anstelle mit AWS Lambda auch lokal auf seinem Raspberry Pi mit Alexa App Server testen. Diese Methode hat den vorteil das recht frei und beliebig getestet werden kann ohne ständig den Code in den ggf. kostenpflichtigen AWS Lambda Dienst hochzuladen. Die Methode eignet sich nicht für die Produktion sondern zeigt lediglich wie ihr recht einfach auf eurem Raspberry Pi Alexa Skills entwickeln und testen könnt und welche Möglichkeiten bestehen. Der Artikel richtet sich ehr an die Entwickler und extrem lernwilligen Anfänger.

Für die produktive Nutzung muss der Code in AWS Lambda eingespielt und das zu steuernde Endgerät bei Amazon registriert sein. Im Development Modus ist kein registriertes Endgerät notwendig, falls AWS Lambda verwendet wird kann mit einem Alexa Gerät / App auf der selben E-Mail Adresse getestet werde, für den lokalen App Server ist nur ein Test mit Texteingabe möglich.

Meine Meinung:
Die Entwicklung und der Test von Alexa Custom Skills macht mir persönlich riesigen Spaß und bietet mit etwas Fleiß fast unendliche Möglichkeiten. Was mich persönlich massiv stört ist das Amazon uns quasi zwingt das hauseigene AWS Lambda zu verwenden , HTTPS Endpunkte so eingeschränkt oder scheinbar absichtlich beschränkt das eine effektive Nutzung im Internet der Dinge nicht sinnvoll möglich ist.

Hardware

Ich verwende den selben Raspberry Pi, auf welchem auch mein selbst gebauter Echo läuft ebenfalls als Server für die FHEM Abindung. Die Hardware-Liste findet ihr in vorherigen Beitrag. Beachtet die Infos zum Setup, es wird Raspbian Jessie benötigt.

Zusätzlich empfohlen

Amazons Echo verwendet ein spezielles “Far Field Microphone”, für meine Tests verwende ich ein ganz einfaches 3,5mm Klinke Mic, das eignet sich sicherlich nicht für Aufnahmen über mehrere Meter genügt aber für dieses Beispiel.

Alexa Custom Skill für FHEM – Die Praxis

Zusammenfassung der notwendigen Schritte:

  1.  Raspberry Pi für die Amazon Cloud bzw. den Custom Skill via Internet erreichbar machen
  2. Setup unserer NodeJS und Alexa App Server Umgebung
  3. Installieren / Entwickeln unserer FHEM Alexa App auf dem Raspberry Pi
  4. Unseren „Custom Skill“ in unserem Developer Account anlegen
  5. Skill Testen

Raspberry Pi via Internet erreichbar machen

Wie bereits beschrieben wird unsere Spracheingabe über die AVS Cloud und den Custom Skill zurück an ein Gerät gesendet welches den Befehl letzten Endes ausführt. Natürlich ist das unser Raspberry Pi im Heimnetz. Um sicherzustellen das AVS den Pi über das Internet erreicht sind einige Schritte notwendig.

Wichtig!
 Amazon unterstützt weder IPv6 noch HTTP, es muss eine HTTPS Adresse sein die auf dem Standard HTTPS Port 443 erreichbar ist. Für DS-Lite Anschlüsse muss daher auf kostenpflichtige Dienste zurückgegriffen werden. WTF Amazon?!

Wer einen DS-Lite Anschluss besitzt (zum Beispiel Unitymedia) muss sich eines kostenpflichtigen Services bedienen.

Für IPv4 Internet:

Für DS-Lite Internet:

https proxy

NodeJS Server installieren

Das Herzstück unseres „Alexa Skill Servers“ auf unserem Raspberry Pi ist ein NodeJS mit Alexa App Server welcher Anfragen vom Amazon Voice Service annimmt, FHEM steuert und das Ergebnis zurückliefert.

Als erstes installieren wir NodeJS aus dem Raspbian Jessie Repository

sudo apt-get update
 sudo apt-get install nodejs

Dann führen wir das NodeJS Update Script aus um die aktuelle Version in den Cache zu laden

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -

Wir aktualisieren nodeJS via APT auf die aktuelle Version

sudo apt install nodejs

Alexa App Server einrichten

Der Alexa App Server ist super Projekt um die Alexa Skills lokal auf seinem eigenen NodeJS Server laufen lassen zu können ohne sich um all zu viele inhaltliche Themen Gedanken machen zu müssen. Wir installieren uns diesen via GIT.

cd $HOME
 git clone https://github.com/matt-kruse/alexa-app-server.git

Da wir für den App Server noch die notwendigen Abhängigkeiten benötigen installieren wir diese ebenfalls.

cd $HOME/alexa-app-server
 npm install

Da Amazon nur verschlüsselt mit unserer FHEM App kommuniziert müssen wir HTTPS aktivieren, wir bearbeiten die Einstellungen des App Servers

nano $HOME/alexa-app-server/examples/server.js

Wir fügen unter „port: 8080,“ folgendes ein

  httpsPort: 443,
   httpsEnabled: true,
   privateKey: 'server.key',
   certificate: 'server.crt',
 
   verify: false,
   debug: false,

app server konfiguration https

Speichert mit STRG+X, Y und Enter.

Für eine SSL gesicherte Verbindung benötigt unser Server noch ein selbst signiertes Zertifikat welches wir uns erstellen. Wir erstellen unseren privaten Schlüssel

cd $HOME
 openssl genrsa -out server.key 2048

Dann erstellen wir eine Request Datei für unser Zertifikat

sudo nano $HOME/configuration.cnf

Kopiert folgenden Text hinein. Editiert folgendes für eure spezifischen Einstellungen / Bedürfnisse:

  • C: Euer Ländercode (DE)
  • ST: Abkürzung für euer Bundesland, ZWEI Buchstaben (BW)
  • L: Eure Stadt
  • O: Eure Organisation, kann auch eine „Example Corp“ sein
  • CN: Euer Skill Name aus der AVS Developer Konsole
  • DNS.1:
    • Bei IPv4 euer DynDNS Name (z.B. raspberrypi.dyndns.org)
    • Bei DS-Lite den HTTP(S) Proxy Namen des Portmappers (z.B. raspberrytips-proxy.feste-ip.net – zu finden bei feste-ip.net unter HTTP(S) Proxy)
[req]
 distinguished_name = req_distinguished_name
 x509_extensions = v3_req
 prompt = no
 
 [req_distinguished_name]
 C = DE
 ST = BW
 L = Bietigheim-Bissingen
 O = raspberry.tips
 CN = raspberry.tips-fhem
 
 [v3_req]
 keyUsage = keyEncipherment, dataEncipherment
 extendedKeyUsage = serverAuth
 subjectAltName = @subject_alternate_names
 
 [subject_alternate_names]
 DNS.1 = raspberrytips-proxy.feste-ip.net
Speichert mit STRG + X, Y und  Enter.

Erstellt das Zertifikat

openssl req -new -x509 -days 1825 -key server.key -config configuration.cnf -out server.crt

Wir kopieren das erstellte Zertifikat (.crt) und den Schlüssel (.key) in den Ordner sslcert, dort sucht der App-Server nach den Dateien

cp $HOME/server.crt $HOME/alexa-app-server/examples/sslcert/server.crt
 cp $HOME/server.key $HOME/alexa-app-server/examples/sslcert/server.key

Dann starten wir unseren NodeJS Server um zu prüfen ob alles funktioniert

cd $HOME/alexa-app-server/examples/
 sudo node server

alexa app server https config start

Beendet den App Server mit STRG+C.

FHEM App Einrichten

Einen Großteil der Arbeit bezüglich des selbst entwickelten Skills für FHEM habe ich schon für euch erledigt, aktuell kann der Skill ein beliebiges Gerät an und Ausschalten. Folgendes ist wichtig um den Code unverändert benutzen zu können.

  • Ich habe aus Gründen der Einfachheit in FHEM die Abfrage für Benutzer / Passwort deaktiviert. Kommentiert durch voranstellen einer Raute (#) für FHEM Web basicAuth in der Konfiguration aus (z.B. #attr allowed_WEB basicAuth bWU6bXlTZWNyZXQ=)
  • FHEM nimmt Befehle nur mit einem korrekten Sitzungs-Token entgegen. Erstellt einen fixen CSRF-Token

Namens Schema derGeräte

  • Meine Geräte sind immer so benannt <Typ><Separator><Standort>, also zum Beispiel „Licht_Esstisch“ oder „Rolladen_Wohnzimmer“. Die App Funktioniert nur wenn eure FHEM Geräte das selbe Namensschema benutzen, der Separator kann ein anderer sein. Andernfalls müsst ihr den Code anpassen.

Als erstes holt euch meinen Code aus dem GitHub repository.

cd $HOME
 git clone https://github.com/raspberry-tips/fhem-skill

Dann holen wir uns die Abhängigkeiten des Projekts

cd $HOME/fhem-skill
 npm install --save alexa-app chai chai-as-promised mocha lodash request-promise
 

Ihr müsst nun noch euren FHEM CSRF Token und die IP-Adresse eures FHEM-Servers ändern

nano nano fhem_data_helper.js

Ändert in folgenden Zeilen den Token und die IP-Adresse:

var FHEMIpPort          = '192.168.178.32:8083';
 var FHEMCSRFToken       = '1768510152';

Speichert mit STRG+X, Y und Enter. Wir kopieren unseren Skill Ordner in den App-Server

cp -R $HOME/fhem-skill $HOME/alexa-app-server/examples/apps

Testet ob euer App Server sauber startet und lasst das Terminal die SSH Sitzung geöffnet. Die Sample Apps könnt ihr aus dem Apps Ordner entfernen.

cd $HOME/alexa-app-server/examples
 sudo node server

fhem app korrekt gestartet

Custom Skill für Alexa anlegen

Da wir nun unseren lokalen NodeJS Server zum Ausführen der Aktion mit FHEM installiert und eingerichtet haben müssen wir unseren Custom Skill noch online in unserem Entwickler Account anlegen. Sonst kann Alexa die Sprachbefehle nicht zuordnen und an unseren lokalen Server senden.

  • Auf der Entwicklerkonsole anmelden (Erstellt euch einen Account oder benutzt euer normales Amazon Konto)
  • Auf Alexa > Alexa Skills Kit > Get Startet
  • Add a new Skill Button rechts oben

Legt euch einen Custom Skill an wie im Screenshot zu sehen.

Alexa Skill 1

Nun wird es etwas tricky, wir erstellen das Interaction Model wählt den Punkt im Menu links.

Das Intent Schema beschreibt unsere Absichten (also was wir mit der Sprache anfangen wollen) im JSON Format, hierbei können unsere Absichten auch Variablen beinhalten (Slots). Zusätzlich benötigen wir einige Beispielsätze das Alexa die Befehle zuordnen kann (Sample Utterances).

Da ich erst mal nur meine an FHEM angebundene Geräte via Sprache an und ausschalten möchte brauche ich ein Intent Schema welches das Gerät erkennt und die zu erledigende Aktion. Dafür benötige ich im Schema drei Slots (Variablen). Slot 1 für den Typ (Licht, Rolladen, etc), Slot 2 für den Raum (Wohnzimmer, Flur, etc) und Slot 3 für die Aktion (An, Aus, etc). Die Typen der Slots/Variablen sind „Custom Typen“. Lest dazu am Besten die Best Practice und verwendet wo möglich vorhandene vorgefertigte Slot Types

Kopiert mein fertiges Intent Schema in das Feld.

{
   "intents": [
     {
       "slots": [
         {
           "name": "DeviceType",
           "type": "LIST_OF_DEVICE_TYPES"
         },
         {
           "name": "DeviceLocation",
           "type": "LIST_OF_DEVICE_LOCATIONS"
         },
         {
           "name": "DeviceActions",
           "type": "LIST_OF_DEVICE_ACTIONS"
         }
       ],
       "intent": "FHEMSmartHomeAction"
     }
   ]
 }

AVS Intent Schema

Dann legt ihr euren ersten Custom Slot an, falls ihr andere Geräte habt könnt ihr diese natürlich hinzufügen.

Custom Slot Type anlegen

Die beiden weiteren über „Add Slot Types“ (Name und typ müssen mit, mögliche Variablen habe ich erst mal nur für meinen Test-Zweck befüllt, ihr könnt diese für euch ergänzen

AVS custom slot types

Dann hinterlegen wir unter „Sample Utterances“ noch folgende Sätze sodass Alexa später die gesprochenen Befehle und Slots zuordnen kann.

Sample Utterances

FHEMSmartHomeAction schalte {DeviceType} im {DeviceLocation} {DeviceActions}
 FHEMSmartHomeAction schalte {DeviceType} {DeviceLocation} {DeviceActions}
 FHEMSmartHomeAction schalte {DeviceLocation} {DeviceType} {DeviceActions}
 FHEMSmartHomeAction {DeviceLocation} {DeviceType} {DeviceActions}
 FHEMSmartHomeAction {DeviceType} {DeviceLocation} {DeviceActions}

Wechselt nach dem Speichern links auf Configuration wählt https und tragt eure DynDNS Adresse (IPv4) ein z,b. raspberrypi.dyndns.net. Für DS-Lite die HTTP(S) Proxy Adresse von fest-ip.net z.B. https://raspberrytips-proxy.feste-ip.net

Hängt dann an die URL /Alexa/fhem-skill an, in meinen Fall lautet die ganze URL zum Alexa App Server und meiner Fhem App https://raspberrytips-proxy.feste-ip.net/alexa/fhem-skill

Alexa Konfiguration HTTPS

Speichert und klickt auf SSL Certificate. Öffnet wieder eine SSH Sitzung oder Terminal und gebt euch den öffentlichen Schlüssel eures erstellen Zertifikats aus.

 cat $HOME/server.crt

Kopiert die Ausgabe, Inklusive der Bindestriche und Text in der Kopf / Fußzeile in die AVS Konsole

avs skill ssl zertifikat

Wechselt zu Test. Startet nun einen Test, dabei geben wir ein Kommando als Text ein, AVS Sendet das dann an unseren Node.JS Server, so können wir die Kommunikation testen. Eure node server muss natürlich laufen, falls nicht startet diesen wie oben beschrieben mit „sudo node server“.

  • Gesendeter Befehl „Licht Esstisch an“

service test simulation

Erhaltet ihr rechts ein Ergebnis zurück, passt alles. Erhaltet ihr einen Fehler stimmt vermutlich etwas mit der Kommunikation zu eurem Raspberry Pi nicht.

 

Falls ihr euren Skill produktiv oder im Entwicklungsmodus mit einem eurer Alexa Geräte (z.B. Echo) verwenden möchtet müsst ihr den Code bei AWS Lambda veröffentlichen und den Custom Skill entsprechend anpassen.

Happy Coding!

Alexa Skills entwickeln mit dem Raspberry Pi
raspberry.tips

http://raspberry.tips/raspberrypi-tutorials/alexa-skills-entwickeln-mit-dem-raspberry-pi/feed6" target="_blank" >
raspberry.tips
raspberry.tips - Raspberry Pi Projekte und Tutorials

Erst seit kurzem hat Amazon den Amazon Voice Service (AVS) auch für andere Systeme und Geräte geöffnet, ihr kennt den Amazon Voice Service von Alexa, Amazons Sprachassistentin z.B. im Amazon Echo oder Echo Dot. Das AVS Software-Entwicklerkit (AVS Device SDK) ist für den Raspberry Pi verfügbar was es uns ermöglicht unsere eigene Sprachassistentin (ich nenne Sie …

Sprachassistentin Alexa auf dem Raspberry Pi – RasPi Echo
raspberry.tips

raspberry.tips
raspberry.tips - Raspberry Pi Projekte und Tutorials

Erst seit kurzem hat Amazon den Amazon Voice Service (AVS) auch für andere Systeme und Geräte geöffnet, ihr kennt den Amazon Voice Service von Alexa, Amazons Sprachassistentin z.B. im Amazon Echo oder Echo Dot. Das AVS Software-Entwicklerkit (AVS Device SDK) ist für den Raspberry Pi verfügbar was es uns ermöglicht unsere eigene Sprachassistentin (ich nenne Sie mal RasPi Echo) zu basteln. Heute möchte ich euch eine kleine Einführung in die Installation des SDK und der Entwicklung mit dem AVS SDK auf dem Raspberry Pi geben. In meinem Beispiel benutze ich einen selbst gebauten „Amazon (RasPi) Echo“ auf Basis des Raspberry Pi.

Video der AVS Sample App auf meinem Raspberry Pi

Hardware

Zusätzlich empfohlen

Amazons Echo verwendet ein spezielles „Far Field Microphone“, für meine Tests verwende ich ein ganz einfaches 3,5mm Klinke Mic, das eignet sich sicherlich nicht für Aufnahmen über mehrere Meter genügt aber für dieses Beispiel.

Es gibt ein Far Field Mic DIY Kits mit dem Namen ReSpeaker das auch mit dem Raspberry Pi funktioniert, es ist Amazons Echo Hardware sehr ähnlich, die Software ist aber noch nicht ausgereift. Von Amazon gibt es ein 4Mic Entwicklungs-Board, das ist aber m.E. viel zu teuer. Ggf. macht Amazon das 7Mic Hardware Entwicklungskit auch der Öffentlichkeit für einen ordentlichen Preis zugänglich.

Vorbereitungen

Ihr benötigt am Besten einen Raspberry Pi 3 mi aktiviertem SSH Zugang, zur Einrichtung befolgt ihr am Besten meinen Einsteiger-Tutorial.

Wichtig!
Das AVS SDK ist nur unter Raspbian Jessie unterstützt verwendet daher noch das letzte Jessie Image von hier.

Raspberry Pi bei Amazon AVS anlegen

Bevor wir starten benötigt ihr einen Entwickler Account bei Amazon und ein angelegtes Gerät um mit der AVS Cloud kommunizieren zu dürfen. Ich referenziere hier die sehr gut beschriebenen Amazon Blog Beiträge.

  1. Legt euch einen Entwickler Account an, ein vorhandenes Amazon Konto geht auch
  2. Erstellt euch ein Device und Security Profile für die Kommunikation mit der AVS Cloud
    1. Wichtig! Folgende URLS im Security Profile hinterlegen sonst geht später der Auth schief
      1. Allowed origins: https://localhost:3000 und http://localhost:3000
      2. Allowed origins return: https://localhost:3000/authresponse  und http://localhost:3000/authresponse

Build Tools für das AVS SDK auf dem Raspberry Pi installieren

Nun müsst ihr auf eurer Raspberry Pi Jessie Installation die notwendigen Tools installieren, das Setup dauert eine ganze Weile da die Libraries und Tools aus den Sourcen compiliert werden müssen, nehmt euch mehrere Stunden Zeit dafür. Ich referenziere hier auf die HowTos von Amazon und ergänze wo Infos fehlten jeweils unter den Links / Beschreibungen.

Hinweiße zu Kapitel 2:

  • Unter 2.7.2 müsst ihr vor die cp und mkdir Befehle ein sudo schreiben

Danach starten wir mit Kapitel 3 der AVS SDK Anleitung, wir erstellen das SDK für Raspbian und Testen den AVC.

Hinweiße zu Kapitel 3:

Da das Kapitel 3 voraussetzt das ihr ein git repository clonen könnt beschreibe ich mein Vorgehen zu Punkt 3.1 kurz:

cd $SOURCE_FOLDER
 git clone https://github.com/alexa/avs-device-sdk

Dann legen wir uns noch eine Variable an um auf die Sourcen via $SDK_SRC Variable zuzugreifen

echo "export SDK_SRC=$SOURCE_FOLDER/avs-device-sdk" >> $HOME/.bash_aliases
 source $HOME/.bashrc

Weiter mit Punkt 3.2, passt beim kopieren des cmake Befehls auf, der Text ist eine Zeile wird beim kopieren aber auf zwei geteilt, kopiert vorher in einen Texteditor und macht eine Zeile daraus. Ich habe mir für Kapitel 3.3 folgende Verzeichnisse angelegt und die Sound Files mit wget dorthin runtergeladen.

mkdir -p $HOME/avs/sounds
 
 wget -O $HOME/avs/sounds/alarmSoundFile.mp3 https://images-na.ssl-images-amazon.com/images/G/01/mobile-apps/dex/alexa/alexa-voice-service/docs/audio/states/med_system_alerts_melodic_01._TTH_.mp3
 wget -O $HOME/avs/sounds/alarmShortSoundFile.mp3 https://images-na.ssl-images-amazon.com/images/G/01/mobile-apps/dex/alexa/alexa-voice-service/docs/audio/states/med_system_alerts_melodic_01._TTH_.mp3
 wget -O $HOME/avs/sounds/timerSoundFile.mp3 https://images-na.ssl-images-amazon.com/images/G/01/mobile-apps/dex/alexa/alexa-voice-service/docs/audio/states/med_system_alerts_melodic_02._TTH_.mp3
 wget -O $HOME/avs/sounds/timerShortSoundFile.mp3 https://images-na.ssl-images-amazon.com/images/G/01/mobile-apps/dex/alexa/alexa-voice-service/docs/audio/states/med_system_alerts_melodic_02._TTH_.mp3

Das ist meine fertige AlexaClientSDKConfig.json Konfiguration

  • clientSecret: Aus der Amazon Developer Konsole kopieren (Alexa > AVS Get Startet > Mange auf das passende Produkt)
  • deviceSerialNumber: Eindeutig vergeben, z.B. 000001, 000002 usw
  • refreshToken: Irgendwas ohne Sonder und Leerzeichen eintragen, wird während des Auth Vorgangs neu erzeugt und ersetzt
  • clientID: Aus der Amazon Developer Konsole kopieren (Alexa > AVS Get Startet > Mange auf das passende Produkt)
  • deviceTypeId: Das ist die „Product ID“ aus der Developer Konsole aus der Produkt Liste (Alexa > AVS Get Startet)

AlexaClientSDKConfig Settings

Kompiliert und Installiert nun wie beschrieben (sudo vor make install hinzufügen), das dauert circa eine Stunde wie in Kapitel 3.4 beschrieben. Für Kapitel 3.5 und 3.6 solltet ihr euch auf dem Desktop eures Pi befinden und von dort in einem Terminal folgenden Befehl aufrufen. Am Besten geht das Remote via VNC oder xRDP.

cd $HOME/BUILD
 python AuthServer/AuthServer.py

Öffnet dann einen Browser, z.b. Chromium und navigiert auf http://localhost:3000 wenn euer Security Pofil aus der Developer Konsole und eure Config Datei zusammenpasst landet ihr auf der Amazon Anmeldeseite. Andernfalls erhaltet ihr einen passenden Fehler. Meldet euch mit eurem Entwickler Account an um euer Raspberry Pi mit SDK zu autorisieren.

raspberry pi auth request

Wenn nach Bestätigung alles geklappt hat ist der Vorgang abgeschlossen

Autorisierung erfolgreich

Zum Testen der Sample App und der Verbindung führen wir folgenden Befehl aus.

cd $HOME/BUILD/SampleApp/src
 TZ=UTC 
 sudo ./SampleApp $HOME/BUILD/Integration/AlexaClientSDKConfig.json $LOCAL_BUILD/models
 

Wichtig!
Eure USB Sound Karte muss als default Sound Device hinterlegt sein. Folgendes habe ich dafür getan:

Deaktivieren des OnBoard Sound, bearbeitet eure config.txt

sudo nano /boot/config.txt

Ändert „dtparam=audio=on“ zu „dtparam=audio=off“ und speichert mit STRG+X, Y und Enter.

Dann erlauben wir es das auch eine USB-Sound Karte zum Standard Device werden kann, editiert hierzu folgende Datei

sudo nano /lib/modprobe.d/aliases.conf

Fügt vor „options snd-usb-audio index=-2“ zum auskommentieren eine Raute (#) ein und Speichert mit STRG + X, Y und Enter. Nach einem Reboot solltet ihr die SampleApp ohne Fehler starten können. (ggf. muss noch in der Datei „~/.asoundrc“ der Device 1 durch 0 ersetzt werden). Stellt am Besten via alsamixer noch die Lautstärke für die Ausgabe und Eingabe ganz hoch.

Viel Spaß!

Sprachassistentin Alexa auf dem Raspberry Pi – RasPi Echo
raspberry.tips

http://raspberry.tips/raspberrypi-tutorials/sprachassistentin-alexa-auf-dem-raspberry-pi-raspi-echo/feed2" target="_blank" >
raspberry.tips
raspberry.tips - Raspberry Pi Projekte und Tutorials

Am 16. August hat die Raspberry Pi Foundation das Raspbian Image auf „Stretch“ aktualisiert, Basis für das Betriebssystem ist nun Debian 9. Neben einigen zusätzlichen Software Neuerungen und Aktualisierungen hat sich vor allem im Bezug auf Projekte mit der Basis Apache, PHP und MySQL einiges geändert. Da die meisten meiner Tutorials auf Jessie bzw. dem …

Neues Raspbian Stetch Image auf Basis von Debian 9 – Wichtige Details zu den Änderungen
raspberry.tips

raspberry.tips
raspberry.tips - Raspberry Pi Projekte und Tutorials

Am 16. August hat die Raspberry Pi Foundation das Raspbian Image auf „Stretch“ aktualisiert, Basis für das Betriebssystem ist nun Debian 9. Neben einigen zusätzlichen Software Neuerungen und Aktualisierungen hat sich vor allem im Bezug auf Projekte mit der Basis Apache, PHP und MySQL einiges geändert. Da die meisten meiner Tutorials auf Jessie bzw. dem Vorgänger Wheezy basieren werde ich wo notwendig Stück für Stück aktualisieren, gerne dürft ihr Fragen / Hinweiße in den jeweiligen Kommentaren hinterlassen. Details zu Stretch nun in diesem Post.

Änderungen in Raspbian Stretch

Hier habe ich euch die wichtigsten Änderungen zusammengefasst.

  • Basis ist nun Debian 9 (Stretch),vorher Debian 8 (Jessie)
  • Aktueller Kernel und Firmware wurden integriert
  • Die MySQL Variante MariaDB ersetzt MySQL
  • Die Namen der Netzwerinterfaces haben sich geändert (MAC Adresse anstelle ethX – ethY)
  • PHP ist nun in Version 7.0 enthalten
  • Chromium Browser ist nun vorinstalliert (60)
  • Sonic Pi ist nun in der Version 3.0.1, RealVNC in der Version 6.1.1 und NodeRED in der Version 0.17.4 enthalten
  • Einige Desktop Anwendungen fragen nun nach einem Passwort (sudo)
  • Neue WLAN Firmware zum Fixen der Broadpwn Sicherheitslücke
  • Weitere kleinere Anpassungen und Fixes

Hier noch die offiziellen Release Notes Debian 9 und die Release Notes des Raspbian Image

Wichtig! Im Aktuellen Stretch Image solltet ihr als erstes ein update & upgrade durchführen da im Image noch einige Bugs enthalten sind die durch ein Update gefixt werden.

sudo apt-get update
 sudo apt-get upgrade -y

Wo kann das „alte“ Raspbian Jessie Image runtergeladen werden?

Alte Versionen der Raspbian Images können ebenfalls von raspberrypi.org heruntergeladen werden.

Neues Namensschema für Netzwerkschnittstellen in Stretch

Das Namensschema für die Netzwerkschnittstellen wurde geändert, bisher wurden alle vorhandenen Netzwerkkarten durchgearbeitet und der ersten gefundenen der Name eth0 vergeben usw. das neue Schema ist nun wie ich finde recht kompliziert aufgebaut. Es gibt verschiedene Schemas welche in der Policy Datei festgelegt sind.

<Typ des Interfaces><verwendetes Namensschemas><Name nach Namensschema>

Konkret ist das bei den Standard Interfaces von Raspbian

<Typ des Interfaces><Schema x><MAC Adresse>

  • Die ersten zwei Buchstaben spiegeln den Typ der Karte wieder
    • en = Ethernet
    • sl = Serial Line
    • wl = WLAN
    • ww = WAN
  • Typ des Namensschemas, bei uns ist es immer x für die Mac Adresse
  • Als Name, da Schema x, wird dann die MAC Adresse der Netzwerkkarte angehängt

Beispiel für Rasperry Pi OnBoard  Ethernet: enxb827eb47fdfd

Altes Namensschema für Netzwerkinterfaces verwenden

Wer gerne wieder das alte Namensschema für seine Netzwerkschnittstellen verwenden möchte anstelle das Namensschema auf MAC-Address Basis kann das recht einfach erledigen. Folgender Befehl ändert die Richtlinie, durch Anlage einer leeren Regel (link auf /dev/null) wird das alte Schema verwendet.

sudo ln -s /dev/null /etc/udev/rules.d/80-net-setup-link.rules

In Stretch Geänderte PHP Version und MySQL Variante

Neben vielen kleineren Versions-Sprüngen und Änderungen an ehr uninteressanten Paketen hat sich an den für viele RasPi Projekte wichtigen Paketen PHP und MySQL folgendes geändert.

MariaDB in Raspbian

Die MySQL Variante MariaDB ist im Kern auch ein MySQL, die ursprüngliche Code Basis die selbe und die SQL-Syntax unterscheidet sich nicht, es gibt lediglich einige spezielle Funktionen die nur mit MariaDB Funktionieren. Ansonnten gibt es noch einige Unterschiede in den bereichen Hochverfügbarkeit, Security und Performance was aber ehr Features und Themen für den Business und Kommerziellen Einsatz sind und uns bei RasPi Projekte ehr weniger berühren.

  • Sowohl der Standard MySQL Client als auch der MySQL Server wurde von MySQL auf die MariaDB Variante geändert
    • MariaDB ServerVersion 10.1
    • MariaDB Client 10.1

Wer nun via APT den MySQL Server installiert wird daher immer die MariaDB erhalten. Hierbei gilt es zu berücksichtigen das MariaDB 10 ein neues Format mit sich bringt und die Datenbankdateien nicht abwärts-kompatibel zu älteren MySQL / MariaDB Versionen sind.

Installation der MariaDB unter Stretch

sudo apt-get install default-mysql-server
 sudo mysql_secure_installation

oder übergangsweiße noch mit

sudo apt-get install mysql-server
 sudo mysql_secure_installation

Einen Grund für MySQL in der Version 5.5 oder 5.7 gibts es aus meiner Sicht nicht.

Neue PHP Version in Raspbian Stretch

Ein aus meiner Sicht längst überfälliger Schritt ist die Aktualisierung von PHP auf Version 7, der Release liegt bereits über 2 Jahre zurück. Die neue Version bringt einen erheblichen Geschwindigkeitsvorteil, allerdings sind vor allem bei älterem Code einige Anpassungen notwendig. Einen passenden Artikel zu den Änderungen für PHP Entwickler findet sich auf der php.net Seite.

Die Installation von Apache mit php7 ist auch recht einfach

sudp apt-get install apache2 php7.0 libapache2-mod-php7.0 php7.0-mysql

Wer weiterhin PHP5.6 verwenden möchte (oder muss) kann folgende Befehle verwenden

apt install php5 php5-pgsql php5-gd php5-curl php5-cli apache2

Wichtig! PHP 5.6 wird im nächsten Jahr langsam aus den Repositories verschwinden, bemüht euch um eine Migration auf PHP 7.

Raspbian Jessie auf Stretch aktualisieren

Wichtig!
Erstellt euch vor dem Update unbedingt eine Sicherung eures System und ggf. der Daten.

Für das Update solltet ihr mindestens 5GB auf eurer SD-Karte frei haben, das Download der einzelnen Pakete war bei mir ca. 1,2GB groß. Wer seine Projekte und Software recht einfach wieder einrichten kann sollte eine zweite SD-Karte besorgen und das Projekt mit Stretch auf dieser neu aufbauen.

In diesem Teil des Artikels zeige ich euch wie ihr von eurer vorhandenen Raspbian Jessie Installation auf  Raspbian Stretch aktualisieren könnt. Das Update solltet ihr am Besten nicht Remote durchführen sondern mit einer Tastatur / Maus und Bildschirm. Falls ihr nicht wisst ob ihr überhaupt noch auf Jessie seit, kontrolliert das mit folgendem Befehl. Jessie ist der Codename und das Release ist 8.

release anzeigen raspberry pi

lsb_release -a

Bevor wir anfangen sollten wir erst mal unsere aktuellen Pakete auf den letzten für Jessie verfügbaren Stand aktualisieren

sudo apt-get update
 sudo apt-get upgrade -y

Wir zwingen unser System noch auch zurückgehaltene Pakete zu aktualisieren, eine aktuelle Firmware macht ebenfalls Sinn.

sudo apt-get dist-upgrade -y
 sudo rpi-update

Um nun die Paketquelle noch von Raspbian Jessie auf Raspbian Stretch umzustellen müssen wir via Editor die Datei sources.list anpassen

sudo nano /etc/apt/sources.list

Wir müssen innerhalb der Datei alle vorkommenden „jessie“ mit „stretch“ ersetzen.

Findet

deb http://mirrordirector.raspbian.org/raspbian/ jessie main contrib non-free rpi

Ersetzt (jessie mit stretch)

deb http://mirrordirector.raspbian.org/raspbian/ stretch main contrib non-free rpi

stretch sources list

Speichert durch das drücken von Ctrl + X dann Y und Enter.

Selbes vorgehen müssen wir auch bei der Datei /etc/apt/sources.list.d/raspi.list durchführen. Öffnet die Datei wieder im Editor Nano:

sudo nano /etc/apt/sources.list.d/raspi.list

Wir müssen innerhalb der Datei wieder alle vorkommenden „jessie“ mit „stretch“ ersetzen.

Findet

deb http://archive.raspberrypi.org/debian jessie main ui
 

Ersetzt (jessie mit stretch)

deb http://archive.raspberrypi.org/debian stretch main ui

stretch raspi sources

Speichert durch das drücken von Ctrl + X dann Y und Enter.

Da wir nun die quellen angepasst haben können wir mit dem Update auf Stretch starten. Das Update kann mehrere Stunden dauern! Brecht es nicht ab

sudo apt-get update
 sudo apt-get dist-upgrade -y

Schaut ab und an nach dem Update, es kann vorkommen das bestimmte Installationen trotz des Parameters -y mit einem Y + Enter (J + Enter bei deutschem System) bestätigt werden müssen. Ich musste auch einen Change Log lesen (runter scrollen und mit q bestätigen).

Nach dem eigentlichen Update entfernen wir noch die als nicht mehr benötigten Pakete (durch Änderungen in den Abhängigkeiten können nicht mehr benötigte entfernt werden).

sudo apt-get autoremove -y

Wir putzen noch den Cache von alten nutzlosen Paketen mit autoclean.

sudo apt-get autoclean

Dann rebooten wir unseren RasPi

sudo reboot

Zum Schluss solltet ihr noch mal checken das wirklich alles aktuell ist

sudo apt-get update
 sudo apt-get upgrade -y
 sudo rpi-update

Euer Raspberry Pi mit installiertem Raspbian wurde nun von Jessie auf Stretch aktualisiert. Kontrolliert das gerne mit:

lsb_release -a

lsb release nach raspbian update

Prüft ob eure Anwendungen noch wie gewohnt funktionieren. Viel Spaß!

Neues Raspbian Stetch Image auf Basis von Debian 9 – Wichtige Details zu den Änderungen
raspberry.tips

http://raspberry.tips/raspberrypi-news/neues-raspbian-stetch-image-auf-basis-von-debian-9-wichtige-details-zu-den-aenderungen/feed8" target="_blank" >
raspberry.tips
raspberry.tips - Raspberry Pi Projekte und Tutorials

Vor einiger Zeit hatte ich bereits gezeigt wie mit der Software „Motion“ und der Raspberry Pi Cam auf Bewegungen vor der Kamera reagiert werden kann, mittlerweile gibt es das MotionEyeOS Betriebssystem welches euren Raspberry Pi Zero W zu einer einfach zu konfigurierenden Überwachungskamera mit Bewegungserkennung macht. Das Prinzip ist recht einfach, die Software Motion erkennt …

Raspberry Pi Zero W als WLAN Überwachungskamera mit motionEyeOS
raspberry.tips

raspberry.tips
raspberry.tips - Raspberry Pi Projekte und Tutorials

Vor einiger Zeit hatte ich bereits gezeigt wie mit der Software „Motion“ und der Raspberry Pi Cam auf Bewegungen vor der Kamera reagiert werden kann, mittlerweile gibt es das MotionEyeOS Betriebssystem welches euren Raspberry Pi Zero W zu einer einfach zu konfigurierenden Überwachungskamera mit Bewegungserkennung macht.

Das Prinzip ist recht einfach, die Software Motion erkennt eine Bewegung vor der Kamera,  speichert auf Wunsch die Bilder und/oder Videos auf der SD-Karte oder einem Netzwerkspeicher und führt dann benutzerdefinierte Aktionen aus. Zum Beispiel nach erkennen einer Bewegung den Upload der Bilder in die Dropbox oder eine E-Mail Benachrichtigung.

In diesem Beitrag zeige ich euch die notwendige Hardware und wie ihr eure Überwachungskamera einrichtet. Der Zusammenbau und die Einrichtung ist sehr einfach und auch für Anfänger geeignet, es wird kein Werkzeug benötigt.

Hardware

Die Kosten liegen bei ca. 70€ ohne Versand.

Die Überwachungskamera kann auch mit den anderen Pi Modellen realisiert werden, zwecks der Größe und der minimalen Anforderungen ist der Zero für dieses Projekt allerdings optimal. Als alternative zur klassischen Stromversorgung könnt ihr für den kurzzeitigen Einsatz auch eine Handelsübliche USB PowerBank als Akku benutzen. Um die SD-Karte zu bespielen und den Pi einzurichten benötigt ihr ein eigenes WLAN und natürlich einen SD-Kartenleser, für den späteren Betrieb ist ebenfalls eine WLAN Verbindung (ggf. mit Internetzugang) erforderlich.

Für Nachtaufnahmen bietet es sich an entweder in Form eines Bewegungsmelders für eure Beleuchtung für gute Aufnahmen zu sorgen oder mit Infrarot LEDs der NoIR Kamera ein gutes Bild zu verschaffen.

Überwachungskamera zusammenbauen

Der Zusammenbau gestalltet sich recht einfach Steckt einfach euren Raspberry Pi in das Gehäuse, folgendes müsst ihr beachten:

  • Am Besten ihr bereitet als erstes eure SD-Karte vor und flashed das MotionEye Betriebssystem, dann müsst ihr später den Pi Zero nicht wieder aus dem Case fummeln. Siehe MotionEyeOS Image flashen.
  • Steckt nach dem Flashen die SD-Karte in den Raspberry pi Zero, Kontakte in Richtung Platine
  • Tauscht das Standard Flachbandkabel der Kamera gegen das Flachbandkabel welches dem Gehäuse beigelegen hat, auch hier die Kontakte in Richtung der Platine der Kamera. Die Verbindung des alten Kabels mit der Buchse lässt sich durch vorsichtiges Herausziehen der dunklen Klemmhalterung aus der Buchse bewerkstelligen

kamera mit anderem kabel

  • Befestigt eure Raspberry Pi Kamera im Deckel des Gehäuses

Pi Kamera im Gehäuse

  • Befestigt das Flachbandkabel im Pi. Das Flachbandkabel der Pi Kamera muss mit den Kontakten in Richtung Platine angeschlossen werden. Zieht auch hier die Klemme vorsichtig ein Stück heraus, steckt das Kabel hinein und klemmt es wieder fest. (Aufmeinen Bildern fehlt die Klemme am Pi schon da abgerissen :) )

Pi Kamera Modul anschliessen

Raspberry Pi mit verbundener Kamera

  • Steckt nun den Pi vorsichtig in den Boden des Gehäuses, das Kabel soll nicht abknicken sondern einen schönen Bogen formen

raspberry Pi im gehäuse mit kamera

  • Schließt vorsichtig den Deckel

Raspberry Pi Überwachungskamera

  • Nun könnt ihr den Strom (die äußere USB Buchse mit Power Symbol) und einen Monitor via HDMI Verbinden und mit der Einrichtung starten. Siehe MotionEyeOS Überwachungskamera einrichten.

MotionEyeOs Image Flashen

Das Betriebssystem basiert auf dem Embedded Linux BuildRoot, der Linux Kamera und Bewegungserkennung-Software Motion und dem im Projekt entwickelten Webinterface motionEye.

Zur Installation laden wir uns als erstes das aktuelle Image des Betriebssystems von GitHub auf unseren Rechner. Wir verwenden das Image „motioneyeos-raspberrypi-201xxxxx.img.gz“ für den Zero bzw. Zero W (nicht die Images für den Pi2 oder Pi3).

download mitioneyeos

Das Image ist GZip gepackt (Dateiendung .gz) daher ist es sinnvoll anstelle von win32DiskImager direkt das Tool Etcher zu verwenden um das Image auf unsere SD-Karte zu schreiben. Etcher kann im Gegensatz zu Win32DiskImager auch GZip gepackte Images auf eine SD-Karte schreiben.

Ladet euch das Tool zum Schreiben der Images auf euren Rechner.

Ich verwende die x64 Portable Windows Version von Etcher da wir diese nicht extra installieren müssen sonder direkt starten können.

Startet Etcher als Administrator (Rechtsklick als Admin ausführen)  und wählt das heruntergeladene MotionEyeOS Image aus.

etcher image öffnen

Falls ihr nur einen Wechsel-speicher ( SD-Karte / USB Stick) an eurem Rechner angeschlossen habt erkennt Etcher das Ziel für das Image automatisch, andernfalls müsst ihr das Ziel noch ändern und dann via Flash das Image auf die Karte schreiben.

etcher flash image

Nach erfolgreichem flashen entfernt Etcher den Speicher vom System, steckt daher eure SD Karte einmal aus und wieder in den Leser.

Danach öffnet Ihr via Windows Explorer die SD Karte um eure WLAN-Daten zu hinterlegen (bei mir Laufwerk I:\).

SD Karte öffnen

Wir müssen für den nächsten Schritt im Windows Explorer das Anzeigen der Dateinamenerweiterungen aktivieren, für Windows 10 beschreibe ich das Vorgehen, für Windows 7 / Vista könnt ihr die Anleitung im Microsoft Technet verwenden.

Wechselt im Explorer in das Menü View (Ansicht)

Windows Explorer Anzeigen Dateierweiterungen

Setzt im Menu den Haken bei „File Name Extensions“ (Dateinamenerweiterungen)

Windows Explorer Anzeigen Dateierweiterungen 2

Dann erstellen wir mit einem Rechtsklick > Neu > Text Dokument eine neue leere Textdatei ohne den Dateinamen zu ändern.

Neues Textdokument erstellen

Öffnet die Datei (Neue Textdatei.txt) und fügt folgenden Inhalt ein

        country=DE
         update_config=1
         ctrl_interface=/var/run/wpa_supplicant
         
         network={
             scan_ssid=1
             ssid="DeinWlanName"
             psk="DeinWlanPasswort"
         }

Ersetzt folgendes mit euren Datein (Die Anführungszeichen müssen bleiben)

  • DeinWlanName -> Name des WLAN das ihr im Windows bzw. am Handy beim Verbinden seht
  • DeinWlanPasswort -> Passwort eures WLAN, steht meist auf eurem Router gedruckt oder ist in der Konfiguration einsehbar

Speichert die Datei ab und beendet den Editor.

Nun muss die Datei „Neues Text Dokument.txt“ noch umbenannt (Rechtsklick > Umbenennen) werden. Der neue Dateiname muss wpa_supplicant.conf sein (ohne .txt am Ende).

wpa supplicant datei

Das System wird sich beim ersten Start mit dem in der Datei angegebenen WLAN verbinden. Stellt sicher das an eurem Platz das WLAN auch verfügbar ist.

MotionEyeOS Überwachungskamera einrichten

Verbindet euren RasPi mit dem Strom und mit einem Monitor / TV (HDMI Adapter). Wichtig! Der erste Start des RasPi dauert ein paar Minuten , seit geduldig und trennt den Pi nicht vom Strom. Wenn alles funktioniert startet euer Pi und verbindet sich automatisch mit dem angegebenen WLAN, falls beim Anlegen der WLAN Konfigurationsdatei ein Fehler passiert ist wird euer Pi immer wieder neu starten.

  • Die aktuelle IP-Adresse des Pi wird euch auf dem Start Screen ausgegeben (Interface wlan0 has IP address x.x.x.x)

IP Adresse MotionEyeOS

  • Bei mir ist die IP-Adresse 192.168.178.34 (Ignoriert das Subnetz /24)

Die weitere Konfiguration der Kamera erfolgt nun über das MotionEyeOS Webinterface über einen beliebigen Browser. Gebt die IP-Adresse in folgendem Format in euren Browser ein und öffnet die Webseite (Rechner muss sich natürlich im selben Netz befinden)

  • http://x.x.x.x/ bei mir ist das z.B. http://192.168.178.34/

Browser IP Adresse

Wir melden uns als erstes als Admin an, klickt auf das Login Symbol

  • Benutername: admin
  • Passwort: <leer>

motioneye login   motioneye admin login

Öffnet das Menu über das Icon Links oben. Wichtig! Als erstes aktivieren wir die Erweiterte Ansicht (Advanced Settings) und ändern das Admin Passwort

MotionEye Passwort Ändern

Bestätigt die Änderungen mit Apply rechts oben im Menu.

Konfiguration von MotionEyeOS

Dann könnt ihr eure Raspberry Pi Überwachungskamera an eure Bedürfnisse anpassen, ich habe folgende Einstellungen vorgenommen. Die Einstellungen sind recht umfangreich und erfordern je nach Einsatzzweck ggf. ein Tuning oder Anpassung an die Bedürfnisse. Hier habe ich euch meine Grundeinstellungen Dokumentiert.

Generelle Einstellungen

Hier habe ich die Zeitzone eingestellt um später keine Probleme mit dem Start der Überwachung zu bekommen, ich deaktiviere den FTP-Server da ich Ihn nicht benutze und verpasse meiner Kamera aus Komfort Gründen eine feste IP-Adresse, kann auf automatisch verbleiben.

  • Zeitzone eingestellt -> General -> Time Zone -> Europe Berlin
  • Feste IP-Adresse eingetragen -> Network -> IP Configuration > Manual Static IP (Eure eigenen Netzdaten eintragen)
  • FTP Server ausgeschalten -> Services -> Enable FTP Server off

Zeitraum für die Überwachung festlegen

Ihr könnt den Zeitraum, in welchem Bilder und Videos bei Bewegungserkennung aufgenommen werden frei Konfigurieren. Ich habe für meinen Zwei Montag bis Sonntag jeweils zwischen 07:00 und 20:00 Uhr gewählt. Außerhalb des Zeitraums findet keine automatische Aufzeichnung statt!

zeitraum für die überwachung

Kamera Einstellungen

Hier ist es wichtig die Auflösung und Frame Rate nicht zu hoch zu wählen der der Zero sonst überlastet wird, 1024x780p mit 8 Bildern pro Sekunde für die Videoaufzeichnung sollte ein guter Mittelwert sein, ggf. müsst ihr etwas experimentieren.

  • Name der Kamera angepasst -> Video Device -> Camera Name -> <Name>
  • Auflösung Videos auf Optimale Einstellung gesetzt -> Video Device -> Video Resolution -> 1024×780
  • Anzahl der Bilder Pro Sekunde angepasst -> Video Device -> Frame Rate -> 8

Aufbewahrungszeitraum der Bilder / Videos

Die Bilder und Videos werden im Standard auf der SD Karte gespeichert, um zu vermeiden das diese voll läuft habe ich die automatische Löschung für Bilder und Videos aktiviert. Je nach anzahl der Bilder und Aufnahme können auch andere Werte gewählt werden.

  • Aufbewahrungsfrist der Bilder ->Still Images -> Preserve Pictures -> For One Month
  • Aufbewahrungsfrist der Videos -> Movies -> Preserve Movies -> For One Month

Benachrichtigung bei Ereignissen

Ich habe mir eine E-Mail Benachrichtigung eingerichtet um bei Bewegungserkennung automatisch eine E-Mail zu erhalten. Hier müsst ihr die Daten eures E-Mail Providers eintragen, diese sind Provider abhängig, googelt am Besten danach.

Weitere sinnvolle Einstellungen

Sinnvoll sind noch folgende Einstellungen:

  • Upload der Daten in eure Dropbox oder euren FTP-Server (Falls jemand die Kamera zertört oder klaut), kann viel Traffic verursachen, ggf muss die Auflösung und Frame Rate heruntergesetzt werden
  • Speichert nach Änderungen immer eure Konfiguration, das erspart später Aufwand und Ärger
  • Soll auch bei Nacht überwacht werden

Zugriff auf die Aufnahmen und Bilder

Ihr könnt, wenn Bilder oder Videos aufgezeichnet wurden, via Windows Explorer über das Netzwerk auf die Daten zugreifen und euch ggf. Kopien anlegen. Zum Zugriff tragt ihr die IP-adresse des Raspberry Pi im Windows Explorer mit zwei vorangestellten Backslashes ein.

  • Also zum Bespiel \\192.168.178.34

Zugriff auf die Daten

  • Als Benutzer verwendet ihr admin mit eurem vorher geänderten Passwort

In den Unterordnern sdcard > camera1 findet ihr dann für jedem Tag einen Ordner mit den Bildern und Videos.

kamera daten abrufen

Viel Spaß!

Raspberry Pi Zero W als WLAN Überwachungskamera mit motionEyeOS
raspberry.tips

http://raspberry.tips/raspberrypi-tutorials/raspberry-pi-zero-w-als-wlan-ueberwachungskamera-mit-motioneyeos/feed17" target="_blank" >
raspberry.tips
raspberry.tips - Raspberry Pi Projekte und Tutorials

OwnCloud reift immer mehr von der reinen Dateisynchronisation zu einer ausgereiften und erweiterbaren Plattform für das Freigeben und Zusammenarbeiten von Daten, Dokumenten, Kalender und Kontakten. Die Version X (10) bzw. 10.0.2 bringt viele Neuerungen und Änderungen mit sich, neben internen Verbesserungen bei der Performance wurden auch Teile der Oberfläche komplett überarbeitet. Daher habe ich mich …

ownCloud 10 Server auf dem Raspberry Pi
raspberry.tips

raspberry.tips
raspberry.tips - Raspberry Pi Projekte und Tutorials

OwnCloud reift immer mehr von der reinen Dateisynchronisation zu einer ausgereiften und erweiterbaren Plattform für das Freigeben und Zusammenarbeiten von Daten, Dokumenten, Kalender und Kontakten. Die Version X (10) bzw. 10.0.2 bringt viele Neuerungen und Änderungen mit sich, neben internen Verbesserungen bei der Performance wurden auch Teile der Oberfläche komplett überarbeitet.

Daher habe ich mich dazu entschlossen das Tutorial für die Einrichtung eines eigenen OwnCloud Server auf Basis des Raspberry Pi 3 mit OwnCloud 10 zu aktualisieren.

Hardware für den eigenen OwnCloud Server

Folgende Hardware verwende ich für meinen OwnCloud 10 Server, zwecks Dauerbetrieb ist vor allem auf ausreichende Kühlung und Auslagerung der Daten auf eine USB-Festplatte zu achten (SD-Karten haben eine begrenzte Lebensdauer).

Mindestens benötigt

Zusätzlich empfohlen

Betriebssystem Installation

Sobald Ihr euren Pi in das Gehäuse eingebaut habt könnt ihr mit der Einrichtung beginnen.

Zum Setup des OwnCloud Server benötigen wir natürlich ein installiertes und aktualisiertes Betriebssystem, ich verwende wie immer Raspbian mit aktuellen Updates und RasPi Firmware. Das Setup wird in meinen Einsteiger-Guides beschrieben.

Wichtig! Am 17.08.17 wurde das neue Raspbian Image (Stretch) auf Basis von Debian 9 bereitgestellt, leider gibt es seitens OwnCloud noch keinen richtigen Support für Raspbian / Debian Stretch. Verwendet daher das letzte Raspbian Jessie Image.

Wir verwenden in diesem Tutorial die offiziell von OwnCloud unterstützte Webserver und Datenbank Software, als Webserver kommt Apache zum Einsatz und als Datenbank verwenden wir MySQL.

USB-Festplatte für OwnCloud einrichten

Daten welche später in OwnCloud gespeichert werden landen im Standard im Verzeichnis „/var/www/owncloud/data/„. Das Verzeichnis liegt in der Standard Installation auf der SD-Karte des Pi, wichtige Daten sollten aber nicht auf einer SD-Karte liegen da diese öfter mal kaputt gehen. Daher zeige ich euch in diesem Teil die Einrichtung einer externen Festplatte zur Verwendung in OwnCloud via Kommandozeile, wer die Disk über den Desktop einrichten möchte findet hier ein Tutorial zum Einrichten der USB Festplatte.

Meine externe Festplatte habe ich vorher mit dem Dateisystem NTFS formatiert, das gewährleistet das ich die Platte später ohne Probleme an meinem Windows Rechner anstecken kann falls der Pi defekt ist oder sonstige Probleme auftauchen. Zum Formatieren einer externen Festplatte mit NTFS gibt es bei Microsoft eine Anleitung – https://support.microsoft.com/de-de/help/2442658 – Alternativ der oben genannten Anleitung für den RasPi-Desktop oben folgen.

Wir installieren notwendige Software

sudo apt-get install ntfs-3g

Wir legen uns als erstes einen Ordner im Verzeichnis /media an. In diesen wird später die USB-Disk gemountet, ich nenne den Ordner “usb-hdd” (keine Sonder oder Leerzeichen erlaubt).

mkdir /media/usb-hdd
 sudo chown pi:pi /media/usb-hdd
 sudo chmod 770 /media/usb-hdd

Tipp:
Wer eine USB Festplatte ohne eigene Stromversorgung am Raspberry Pi betreiben möchte ohne einen aktiven USB Hub zu verwenden kann via Config Parameter die Spannung am USB Port erhöhen und sich so einen zusätzlichen USB-Hub sparen. Dieser Trick hilft auch falls die Disk klackert und nicht richtig funktioniert.

Steckt nun die USB Festplatte an den Pi an und lasst euch alle Disks anzeigen (die mmcbl devices sind eure SD-Karte).

ls -l /dev/disk/by-uuid/

USG-DISK Raspbian

Notiert euch die UUID, bei mir ist es ”6A3EBFDC3EBFA00D“. Zum automatischen Mounten genau dieser Festplatte beim Start des RasPi editieren wir nun nun die fstab Datei mit Nano

sudo nano /etc/fstab

Fügt am Ende der Datei folgende Zeile ein, ersetzt die UUID mit eurer,

UUID=6A3EBFDC3EBFA00D /media/usb-hdd ntfs-3g    default,permissions 0   0

Speichert mit STRG+X, Y und dann Enter. Nach dem nächsten Neustart wird die Festplatte unter /media/usb-hdd/ automatisch eingehängt.

sudo reboot

Prüft ob nach dem Reboot eure Festplatte über /media/usb-hdd/ zugreifbar ist. Zum Beispiel könnt ihr dort leere Datei erstellen, erhaltet ihr keinen Fehler passt das Einbinden der Disk.

sudo touch /media/usb-hdd/test.file

DynDNS für OwnCloud einrichten

Wichtig! Das Vorgehen ist für einen klassischen IPv4 Internetanschluss. Wer mit DS-Lite (zum Beispiel neues Kabel Internet von Unitymedia) muss sich der DS Lite Anleitung bedienen.

Richtig sinnvoll ist die Verwendung einer eigenen „Cloud“ als Alternative für Dropbox und Co natürlich nur wenn diese auch über das Internet erreichbar ist, da sich an den meisten Internet & DSL-Anschlüssen die IP-Adresse, welche notwendig ist um seinen Server von überall erreichen zu können, regelmäßig ändert und eine IP-Adresse schlecht zu merken ist verwenden wir einen Dynamischen DNS Dienst.

Unser Raspberry Pi schickt hierbei regelmäßig die aktuelle öffentliche IP-Adresse eures Anschlusses an den DynDNS Anbieter, dieser ordnet die IP dann automatisch einem DNS-Namen zu der einfach zu merken und immer aktuell ist.

no-ip-anmeldung

Dann installieren wir noch die Software, mit welcher der Pi immer die aktuelle IP-Adresse eures Internet-Anschluss an no-ip meldet

cd ~
 wget http://www.noip.com/client/linux/noip-duc-linux.tar.gz

Entpackt das heruntergeladene Archiv

tar xvfz noip-duc-linux.tar.gz

Dann wechsle ich in das entpackte Verzeichnis (noip-2.1.9-1, anhängig von der gerade aktuellen Version) und installieren die Software.

cd noip-2.1.9-1/
 sudo make install

Bei der Installation werdet ihr nach euren Zugangsdaten gefragt, als Update Intervall verwende ich 30 Minuten und wähle bei der Rückfrage ob ich nach einem Update etwas ausführen möchte No aus.

Wir legen nun noch einen Autostart Eintrag für den no-ip Client an sodass dieser nach jedem Start unseres Pi automatisch mit gestartet wird.

crontab -e

Folgende Zeile am Ende bewirkt den automatischen Start von No-IP, speichert mit STRG+X, Y und Enter.

@reboot sudo /usr/local/bin/noip2

Nach dem nächsten Neustart wird die Software immer eure IP-Adresse an No-IP. Kontrollieren könnt ihr das ganze nach der Anmeldung unter „Manage Hosts“ auf der No-IP Seite.

NO IP Host

Installation von OwnCloud

Wichtig! OwnCloud 10 ist noch nicht in den Repositories verfügbar, daher installieren wir erst die 9.1 via Repository und aktualisieren dann auf 10.0.2

Mit folgendem Befehl fügen wir das OwnCloud Repository, in welchem uns das offizielle Pakete für OwnCloud (aktuell Version 9.1) zur Verfügung steht, zu unseren Sourcen hinzu. Das im Standard Raspbian Repository enthaltene OwnCloud Paket meist veraltet.

wget -nv https://download.owncloud.org/download/repositories/stable/Debian_8.0/Release.key -O Release.key
 apt-key add - < Release.key
 sudo sh -c "echo 'deb http://download.owncloud.org/download/repositories/stable/Debian_8.0/ /' >> /etc/apt/sources.list.d/owncloud.list"

Mit dieser Quelle können wir nun OwnCloud inklusive aller abhängiger Software installieren und später auch problemlos aktualisieren.

sudo apt-get update
 sudo apt-get install owncloud -y

Der Installer fragt euch nach einem Root Passwort für die MySQL Datenbank, dieses solltet ihr möglichst sicher wählen und merken.

owncloud setup mysql root

Wir aktualisieren nun noch auf OwnCloud 10.0.2, prüft bitte hier ob Version 10.0.2 noch aktuell ist.

cd ~
 wget https://download.owncloud.org/community/owncloud-10.0.2.tar.bz2

Stoppen den Apache WebServer

sudo service apache2 stop

Wir sichern das owncloud 9.1 Verzeichnis indem wir es umbenennen

sudo mv /var/www/owncloud/ /var/www/owncloud-old/

Dann entpacken wir das eben Entpackte OwnCloud 10 Verzeichnis

tar xjf owncloud-10.0.2.tar.bz2 -C /var/www
 

Passen noch die Rechte an und starten Apache

sudo find /var/www/owncloud/ -type f -print0 | sudo xargs -0 chmod 0640
 sudo find /var/www/owncloud/ -type d -print0 | sudo xargs -0 chmod 0750
 sudo chown -R root:www-data /var/www/owncloud/
 sudo chown -R www-data:www-data /var/www/owncloud/apps/
 sudo chown -R www-data:www-data /var/www/owncloud/config/
 sudo chown -R www-data:www-data /var/www/owncloud/themes/
 sudo chown root:www-data /var/www/owncloud/.htaccess
 sudo chmod 0644 /var/www/owncloud/.htaccess
 
 sudo service apache2 start

Raspbian kommt ebenso wie Debian Jessie noch mit PHP 5.6, die aktuelle Version ist PHP 7.1. Ich installiere daher noch über einen Umweg PHP 7.1 um die Performance zu verbessern, dieser Schritt ist optional.

Wir fügen das Repository und Key hinzu

sudo sh -c "echo 'deb http://repozytorium.mati75.eu/raspbian jessie-backports main contrib non-free' >> /etc/apt/sources.list"
 
 sudo gpg --keyserver pgpkeys.mit.edu --recv-key CCD91D6111A06851
 sudo gpg --armor --export CCD91D6111A06851 | sudo apt-key add -

Dann aktualisieren wir apt und installieren PHP 7.1

sudo apt-get update
 sudo apt-get install php7.1 php7.1-opcache php7.1-zip php7.1-dom php7.1-xml php7.1-mb php7.1-gd php7.1-curl php7.1-mysql php7.1-intl php-xml -y

Apache wird nun noch auf die Verwendung von PHP 7.1 konfiguriert.

sudo a2dismod php5
 sudo a2enmod php7.1
 sudo systemctl daemon-reload
 sudo service apache2 restart

Datenbank einrichten

Bevor wir nun mit OwnCloud starten nehmen wir noch einige wichtige Einstellungen vor. Als erstes erstellen wir auf dem MySQL Server eine neue Datenbank mit eigenem SQL-Benutzer, wir wollen schließlich nicht das OwnCloud mit root Rechten auf der Datenbank arbeitet.

Wir öffnen die MySQL Kommandozeile (das vorher angelegte Passwort wird benötigt)

sudo mysql -u root -p

Folgender SQL Befehle wird zum Erstellen der Datenbank mit dem Namen „owncloud“ abgesetzt

CREATE DATABASE owncloud;

Wir erstellen noch einen Benutzer mit dem Namen owncloud mit einem sicheren Passwort (ersetzt GanzSicheresPasswort)

CREATE USER 'owncloud'@'localhost' IDENTIFIED BY 'GanzSicheresPasswort';

dieser bekommt nur Rechte auf die gerade erstellte Datenbank

GRANT ALL PRIVILEGES ON owncloud.* TO 'owncloud'@'localhost';

Zusätzlich deaktivieren wir das Remote Login für den root

DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');

Dann beenden wir die MySQL Eingabe

FLUSH PRIVILEGES;
 exit;

Webserver für OwnCloud mit SSL absichern

Der Installer von OwnCloud hat uns direkt den benötigten Apache2 Webserver mit installiert. Um die Kommunikation zwischen euren Geräten und dem Server möglichst sicher zu gestallten erstellen wir als erstes ein SSL Zertifikat, mit diesem werden die Daten, welche über das Netz übertragen werden verschlüsselt.

sudo openssl genrsa -out server.key 4096
 sudo openssl req -new -key server.key -out server.csr

Ihr werdet nach einige Infos gefragt, geht diese an oder überspringt die Eingabe mit Enter. Am wichtigsten ist die Option “Common Name”, gebt hier den Hostnamen (raspberrypi), oder falls ihr DynDns verwendet den kompletten DynDNS Namen eures RasPi ein.

Bei mir z.B. raspberrytips.ddns.net

SSL zertifikat

Dann generieren wir aus dem gerade erstellten Schlüsselpaar eine digitales SSL Zertifikat das es uns ermöglicht den Datenverkehr zwischen Client und Webserver zu verschlüsseln

sudo openssl x509 -req -days 1825 -in server.csr -signkey server.key -out server.crt -sha256

Die Datei “server.crt” ist nun unser SSL-Zertifikat das wir mit unserem privaten Schlüssel „server.key“ auf dem Webserver einspielen müssen. Wir verschieben diese Dateien daher in ein anderes Verzeichnis für die spätere Verwendung.

sudo chmod 400 server.key
 
 sudo mv server.key /root/server.key
 sudo mv server.crt /root/server.crt
 

Webserver für OwnCloud einrichten

Wir müssen nun noch unseren Apache2 Webserver konfigurieren. Als erstes müssen wir das DocumentRoot anpassen um nicht immer /owncloud hinten an unsere DNS Adresse oder IP anhängen zu müssen, das erledigen wir mit dem Editor

sudo nano /etc/apache2/sites-available/000-default.conf

Ändert innerhalb der Datei  das DocumentRoot von /var/www/html in folgenden Pfad

DocumentRoot /var/www/owncloud

Speichert mit STRG+X, Y und Enter und löscht dann das html Verzeichnis, das benötigen wir nicht

sudo rm -rf /var/www/html/

Dann editieren wir die Konfiguration für die SSL Verschlüsselung ebenfalls mit Nano

sudo nano /etc/apache2/sites-available/default-ssl.conf

Darin müssen wir die Pfade zu unseren eben generierten Zeritikatsdateien anpassen, ändert die Zeilen für SSLCertificateFile und SSLCertificateKeyFile wie hier zu sehen

SSLCertificateFile /root/server.crt
 SSLCertificateKeyFile /root/server.key

Ändert innerhalb der Datei ebenfalls noch das DocumentRoot in folgenden Pfad

DocumentRoot /var/www/owncloud

Speichert mit STRG+X, Y und Enter

Zum aktivieren der Konfiguration geben wir noch folgendes ein und restarten unseren Webserver

sudo a2ensite default-ssl.conf
 sudo a2enmod ssl
 sudo service apache2 force-reload
 sudo service apache2 restart

Port Weiterleitung am Internet Router einrichten

Da unsere OwnCloud Installation via Internet erreichbar sein soll, hierfür haben wir ja schon DynDNS eingerichtet, müsst ihr nun eurem Internet Router beibringen das Anfragen an den OwnCloud Server auch zu diesem weitergeleitet werden.

Ohne ein eingerichtetes „Port Forwarding“ weiß euer Router nicht was er mit den ankommenden Anfragen anfangen soll und verwirft diese. Die Einrichtung einer Port Weiterleitung für Port 443 ist bei jedem Router anders, ich verwende eine FritzBox, für euren Router müsst ihr ggf. die Dokumentation lesen oder Google bemühen.

Wichtig!
Ich sorge als erstes dafür das mein Raspberry Pi immer die gleiche interne IP-Adresse vom DHCP Server auf dem Router zugewiesen bekommt, die Einstellung findet ihr unter „Heimnetz“ > „Netzwerk“ in den Eigenschaften des raspberrypi. Als Alternative könnt ich auch eine statische IP-Adresse (feste IP-Adresse) für euer WLAN oder LAN direkt in Raspbian einstellen.

raspberry pi statische ip

Die Portweiterleitung oder Port Freigabe findet ihr im Fritzbox Menu unter „Internet“ > „Freigaben“ > „Neue Portfreigabe„. Ich erstelle eine Weiterleitung von Port 443 (das ist der HTTPS Port für verschlüsselte Verbindungen) an die feste IP-Adresse das Raspberry Pi an Port 443. Das Protokoll ist natürlich TCP.

Portweiterleitung Raspberry Pi

OwnCloud Einrichten und Konfigurieren

Da  meine OwnCloud Daten auf der USB-Festplatte liegen sollen lege ich ein Verzeichnis hierfür auf der Festplatte an und passe die Rechte an.

sudo mkdir -p /media/usb-hdd/owncloud/data
 sudo chown -R www-data:www-data /media/usb-hdd/owncloud/data
 sudo chmod 0770 /media/usb-hdd/owncloud/data
 
 sudo reboot

Wir können nun mit der Konfiguration von OwnCloud fortfahren, hierzu rufen wir OwnCloud im Browser auf, verwendet hierzu DynDNS Adresse mit https

  • https://raspberrytips.ddns.net/

Wenn das klappt ist euer RasPi nun erfolgreich via Internet zu erreichen, ignoriert die Fehlermeldung eures Browsers (bei IE klickt ihr z.B. auf Continue to this website (not recommended)), das ist normal da wir für unseren Server kein kostenpflichtiges offizielles Zertifikat verwenden.

Falls das nicht klappt ist entweder eure IP-Adresse nicht vom DynDNS Client aktualisiert worden oder euer Router reicht die Anfragen nicht richtig an den Raspberry Pi weiter. Im Problemfall könnt ihr natürlich auch erstmal die interne Adresse aus dem Heimnetzwerk eures Pi aufrufen und auf den Zugriff via Internet verzichten.

  • https://raspberrypi/  oder
  • https://<IP-Adresse des RasPi>/

Wir landen auf der OwnCloud Konfigrations-Seite

  • Legt ein Admin Benutzer mit Passwort fest
  • Klickt auf „Speicher & Datenbank“ ich habe für das Datenverzeichnis, da ich meine USB-Festplatte verwenden möchte, /media/usb-hdd/owncloud/data verwendet.
  • Als Datenbank wählen wir MySQL mit den Zugangsdaten die ihr vorher angelegt haben
    • Benutzer: owncloud
    • Passwort: GanzSicheresPasswort (Habt ihr hoffentlich geändert)
    • Datenbank: owncloud
    • Host: localhost

owncloud 10 setup

Wenn alles geklappt hat erhaltet ihr folgenden Dialog und könnt direkt die passenden Apps herunterladen.

owncloud setup fertig

Wichtig!
Da wir das Datenverzeichnis geändert haben müssen wir nach der Grundeinrichtung die Berechtigungen der OwnCloud Dateien anpassen. Führt hierzu folgendes aus:

sudo find /var/www/owncloud/ -type f -print0 | sudo xargs -0 chmod 0640
 sudo find /var/www/owncloud/ -type d -print0 | sudo xargs -0 chmod 0750
 
 sudo chown -R root:www-data /var/www/owncloud/
 sudo chown -R www-data:www-data /var/www/owncloud/apps/
 sudo chown -R www-data:www-data /var/www/owncloud/config/
 sudo chown -R www-data:www-data /media/usb-hdd/owncloud/data/
 sudo chown -R www-data:www-data /var/www/owncloud/themes/
 
 sudo chown root:www-data /var/www/owncloud/.htaccess
 sudo chown root:www-data /media/usb-hdd/owncloud/data/.htaccess
 
 sudo chmod 0644 /var/www/owncloud/.htaccess
 sudo chmod 0644 /media/usb-hdd/owncloud/data/.htaccess
 
 sudo reboot

Wenn alles geklappt hat landet ihr nach dem Reboot nun auf eurer eigenen Cloud mit den oben genannten URLs. Für alles weitere solltet ihr einen Blick in die OwnCloud Doku werfen.

Folgende Optimierungen könnt ihr noch erledigen:

Das Ausführen der Jobs via System Cron aktivieren

crontab -u www-data -e

Wählt am Besten NANO als editor (2). Fügt folgende Zeile am Ende der Datei ein

*/15  *  *  *  * php -f /var/www/owncloud/cron.php

Speichert mit STRG+X, Y und ENTER

Stellt noch in den Einstellungen unter Allgemein den Cron um

cron owncloud

Smartphone und Desktop Client Apps

Es gibt verschiedene Möglichkeiten um auf die eigene Cloud zuzugreifen, das Smartphone kann via iOS oder Android App zugreifen, der Desktop Rechner via Desktop Client oder über das Bekannte Webinterface mit einem beliebigen Browser.

Als Server Adresse verwendet Ihr eure DynDNS Adresse (https://<dyndns-host>.ddns.net).

Zusätzlich könnt ihr eure Wolke mit weiteren Funktionen und Apps ausstatten, um die online Previews nutzen zu können und Office Dokumente bearbeiten zu können müsst ihr zum Beispiel noch folgende Software installieren

  • PHP module imagick (sudo apt-get install php5-imagick)
  • avconv or ffmpeg (sudo apt-get install ffmpeg)
  • OpenOffice oder libreOffice (sudo apt-get install openoffice.org)

Weitere Apps gibt es auf der OwnCloud Webseite, cool finde ich den Music Player und die Streaming App.

Backup von Owncloud

Denkt daran eure Daten regelmäßig zu sichern falls die Festplatte mal kaputt geht. Wichtig ist das folgende Dinge regelmäßig gesichert werden

  • Der config-Ordner => Bei mir /var/www/owncloud/config
  • Der data-Ordner => Bei mir /media/usb-hdd/owncloud/data
  • Die MySQL Datenbank => Bei mir ist es die Datenbank owncloud

Sicherung von MySQL als Dump Datei mit folgendem Befehl.

sudo mysqldump -p[RootPasswort] -u root owncloud > /home/pi/owncloud-mysql-dump.sql
 

Den Dump und die Verzeichnisse könntet ihr dann zum beispiel mit rSync und einem Cronjob automatisch an einen anderen Ort kopieren.

ownCloud 10 Server auf dem Raspberry Pi
raspberry.tips

http://raspberry.tips/raspberrypi-tutorials/owncloud-10-server-auf-dem-raspberry-pi/feed31" target="_blank" >
raspberry.tips
raspberry.tips - Raspberry Pi Projekte und Tutorials

Mit der Steuerung via Tablet oder Smartphone App bin ich bei meiner aktuellen FHEM Installation nicht so recht zu frieden, ein Grund für mich mir alternative Produkte anzusehen. Bei meiner Recherche bin ich auf die Produkte der Mediola AG gestoßen. Die Mediola Lösungen bieten neben einem breiten Spektrum an unterstützten Geräten auch die Möglichkeit vorhandene …

Mediola Gateway V5 Plus vs. FHEM mit dem Raspberry Pi
raspberry.tips

raspberry.tips
raspberry.tips - Raspberry Pi Projekte und Tutorials

Mit der Steuerung via Tablet oder Smartphone App bin ich bei meiner aktuellen FHEM Installation nicht so recht zu frieden, ein Grund für mich mir alternative Produkte anzusehen. Bei meiner Recherche bin ich auf die Produkte der Mediola AG gestoßen. Die Mediola Lösungen bieten neben einem breiten Spektrum an unterstützten Geräten auch die Möglichkeit vorhandene Lösungen einzubinden. Zusätzlich besteht die Möglichkeit die App-Oberflächen für die Steuerung zu gestallten und über die Mediola Cloud auch von extern zu steuern. Für mich ein Grund mir die Produkte genauer anzusehen und mit meiner vorhandenen FHEM + Homematic Installation zu vergleichen.

Die Mediola Produkte

Das Mediola Portfolio ist vor allem im Bezug auf die NEO Software und die verfügbaren Plugins auf den ersten Blick recht undurchsichtig, wird aber bei genauerem Hinsehen klar. Neben der Hardware gibt es für die Plus Variante einzeln zu lizenzierende Plugins für die verschiedenen Geräte und Hersteller.

Mediola Hardware & Software

Als Hardware für die Mediola kommt ein so genannter „Gateway“ zum Einsatz, der Gateway hat die Aufgabe mit den verschiedensten Komponenten zu kommunizieren. Den Gateway gibt es in zwei verschiedenen Varianten.

Die Einsteigervariante Mediola Gateway V5

Das Gateway hat einen begrenzten Funktionsumfang, es kann zwar auf der Aktoren oder Sensoren Seite mit einigen Geräten und Automatisierungslösungen sprechen, auf der Steuerungsseite des Anwenders gibt es aber nur die Andoid und iOS App IQONTROL über welche die Geräte eingerichtet und die Steuerung konfiguriert werden kann. Dem Gateway fehlen darüber hinaus viele Schnittstellen, es kommt neben einem 433/868MHz Modul einzig mit einer Infrarot und WLAN Schnittstelle.

Da via App nur eine Anwendergesteuerte Interaktion möglich ist (keine zustandsabhängige automatischen Aktionen) kann ich hier noch nicht von einer Automatisierungslösung sprechen sondern ehr von einer Einsteigerlösung zur Steuerung von Aktoren via App.

Für Fortgeschrittene das Mediola Gateway V5 Plus

Das Gateway V5 Plus hat zusätzliche USB und LAN Schnittstellen zur Erweiterung und bietet eine breitere Unterstützung für Geräte und Protokolle an. Die App IQONTROL wird hier durch eine Umfangreiche Software „AIO Creator NEO“ und den „NEO Automation Manager“ abgelöst. Mit NEO werden Quasi die Bedienoberflächen für die Darstellung und Steuerung designed und die Geräte verwaltet, NEO Funktioniert auf Windows und Mac. Nach der Konfiguration und Gestaltung mit NEO können die „Bedienpannels“  dann veröffentlicht werden, die Steuerung ist dann via iOS, Android, Windows und Mac möglich. Der Automation Manager bzw. Server, welcher auf einem Windows / Linux Server im Heimnetz installiert werden muss, ist eine extra Software für Automatisierungsaufgaben.

Mein Vergleich Mediola zu FHEM

Kosten

Als erstes muss ich den Kostenaspekt herausarbeiten da bei der Mediola Lösung erst auf den zweiten Blick klar wird welche Kosten zur Ablösung von FHEM entstehen. Folgende Hardware und Software würde ich in meinem Fall für die Steuerung meiner Homematic Komponenten benötigen (nicht Homematic IP).

Für Software Updates und die Cloud Funktion muss nach 12 Monaten noch mal bezahlt werden (SUS), ab 20€ für weitere 12 Monate. Wer Gateways bzw. Geräte die bereits an Gateways anderer Hersteller eingerichtet sind einbinden möchte kann das über weitere NEO Plugin Lizenzen Realisieren.

Fazit

Die Mediola Lösung fast alles was ich mir wünsche, Geräte und Gateways verschiedener Hersteller verwalten und einfach Bedienoberflächen für iOS und Andoid gestallten. Für mich als Power User gab es allerdings drei No-Go´s und ich habe mich letztendlich gegen die Lösung entschieden:

  • Im Vollausbau ist die Mediola Lösung im Vergleich zu FHEM mit dem RasPi extrem teuer
  • Für Automatisierungsaufgaben wird ein extra Server im Dauerbetrieb (z.B. RasPi oder Windows Rechner) benötigt. (Warum kann das nicht die teure Gateway Hardware leisten?!?)
  • Meine eigenen Komponenten lassen sich nicht integrieren, hier hätte ich mir eine Schnittstelle gewünscht (z.B. externe Daten via JSON abholen)

Daher lieber weiterhin in FHEM Basteln und weiterhin auf eine einfache und taugliche App zur Remote Steuerung via Smartphone oder Tablet hoffen. Habt ihr noch einen Vorschlag?

Mediola Gateway V5 Plus vs. FHEM mit dem Raspberry Pi
raspberry.tips

http://raspberry.tips/hausautomatisierung/mediola-gateway-v5-plus-vs-fhem-mit-dem-raspberry-pi/feed3" target="_blank" >
raspberry.tips
raspberry.tips - Raspberry Pi Projekte und Tutorials

Nachdem ich nach und nach meine bereits elektrischen Rollläden mit den HomeMatic Rollladenaktoren aufgerüstet habe war es nun an der Zeit eine zentrale Steuerung, welche auch ohne Handy oder Tablet funktioniert, zu installieren. Ich hatte lange überlegt und wollte eigentlich ein zentrales Touchscreen mit FHEM Weboberfläche installieren, bin aber dann aus Gründen der Einfachheit auf …

Homematic HM-PB-4Dis-WM Display zum Steuern von Rolläden in FHEM einrichten
raspberry.tips

raspberry.tips
raspberry.tips - Raspberry Pi Projekte und Tutorials

Nachdem ich nach und nach meine bereits elektrischen Rollläden mit den HomeMatic Rollladenaktoren aufgerüstet habe war es nun an der Zeit eine zentrale Steuerung, welche auch ohne Handy oder Tablet funktioniert, zu installieren.

Ich hatte lange überlegt und wollte eigentlich ein zentrales Touchscreen mit FHEM Weboberfläche installieren, bin aber dann aus Gründen der Einfachheit auf ein Tast-Schalter mit Display aus der HomeMatic Serie umgeschwenkt.

Das HM-PB-4Dis-WM Display ist für die Aufputzmontage gedacht und wird Batteriebetrieben. Für die Rollläden selbst verwende ich den HM-LC-BI1PBU-FM Aktor

HM-PB-4Dis-WM

Erwartet keine Schönheit, das Gerät wirkt in echt nicht sehr Hochwertig, lässt sich aber mit wenig Aufwand an jeder beliebigen Stelle anbringen und liefert genau die Funktion die ich von einer zentralen Steuerung erwarte.

Pairen des Wandtaster mit Display

Das Pairen des Display ist recht einfach, wir bringen FHEM bzw. unseren HomeMatic Empfänger für 10 Minuten in den Anlern- bzw Pairing Modus. Setzt hierfür in der FHEM Weboberfläche einfach folgendes Kommando ab. Ersetzt „nanoCUL“ mit dem Namen eures CUL bzw. Homematic Sender/Empfänger.

set nanoCUL hmPairForSec 600

Sobald die Batterien in das Display eingelegt sind drückt ihr die Schalt-wippe so lange nach links oder rechts bis ihr ins Menü gelangt

HM Funk Wandtaster Display

Wählt im Menu „Anlernen“ (hoch / runter) aus und wechselt in das Anlern Menü mit einem Druck nach links. Wählt dann als Anlern Modus den Eintrag „Zentrale“ nicht eine konkrete Position. Damit werden alle möglichen Kanäle des Tasters in FHEM erscheinen.

Einrichten HM-PB-4DIS-WM in FHEM

Nach dem Pairen findet ihr in der Weborberfläche wie gewohnt euer Gerät im Raum „CUL_HM“ mit dem Standard Namen des Geräts.

Homematic-nach-pairen

Bevor ihr mit der Konfiguration startet könnt ihr die üblichen Aktionen durchführen um eurem Gerät einen passenden Namen und Raum in FHEM zuzuordnen

rename HM_1ADEF1 ZentralButton01
 attr ZentralButton01 room Flur
 attr FileLog_ZentralButton01 room Flur

Ich benenne mein Gerät vom Standard-Namensschema in ZentralButton01 um und verschiebe es in den Raum Flur. Die Logfile muss ebenfalls verschoben werden.

Wichtig! Ihr müsst noch die einzelnen Channels/Buttons (01-20) umbenennen.

rename HM_1ADEF1_Btn_01 ZentralButton01_Btn_01
 rename HM_1ADEF1_Btn_02 ZentralButton01_Btn_02
 rename HM_1ADEF1_Btn_03 ZentralButton01_Btn_03
 rename HM_1ADEF1_Btn_04 ZentralButton01_Btn_04
 ....
 rename HM_1ADEF1_Btn_20 ZentralButton01_Btn_20

Display Beschriftung und Aktionen einrichten

Das Display des Schalters hat vier Zeilen die wir beschriften können, das zuweißen der Aktionen und des Textes ist leider etwas verwirrend. Ein versuch das verständlich zu erklären:

Wand Display Zeilen FHEM

  • Zeile 1 + Zeile 4 ->  Ist die Aktion für Hoch und Runter
  • Zeile 2 + Zeile 3 -> Ist der Text zum Beschreiben des Aktors

Was das ganze nun Kompliziert macht ist das sich die Beiden Aktionen auf ZWEI Channels aufteilen und wir auch den Text auf zwei Channels aufteilen müssen. Also z.B.:

  • Zeile 1+2 sind im Channel 2 für Auf
  • Zeile 3+4 sind im Channel 1 für Zu

Für das Beispiel oben müssen wir also folgendes Anlegen:

set ZentralButton_Btn_01 peerChan 0 WZ_Rolladen_Fenster dual set
 set ZentralButton_Btn_02 text Auf WZ-Rolladen
 set ZentralButton_Btn_01 text Fenster Zu
 

Würden wir nun noch einen zweiten Rollladen steuern wollen müssten wir einfach die Buttons fortführen, in diesem Beispiel der WZ_Rolladen_Tuere

set ZentralButton_Btn_03 peerChan 0 WZ_Rolladen_Tuere dual set
 set ZentralButton_Btn_04 text Auf WZ-Rolladen
 set ZentralButton_Btn_03 text Tuere Zu

Der Taster hat 20 Channels, für den Modus wäre es also maximal möglich 10 Geräte zu steuern. Über das Menü im Schalter „Zentrale übernehmen“ könnt ihr die Konfiguration etwas beschleunigen, es bietet sich an erst mal alles in einem Text Editor vorzubereiten und dann abzusenden.

 

 

Homematic HM-PB-4Dis-WM Display zum Steuern von Rolläden in FHEM einrichten
raspberry.tips

" target="_blank" >