Quantcast
Channel: raspberry.tips
Viewing all 253 articles
Browse latest View live

SSH am Raspberry Pi aktivieren – Neue Methode mit Raspbian 25.11.2016

$
0
0

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

Mit Release des neuesten Raspbian Images von 25.11.2016 ist aus Sicherheitsgründen der SSH Server des Raspberry Pi nicht mehr im Standard aktiv, der SSH Server muss explizit durch euch aktiviert werden. In diesem Artikel zeige ich euch die beiden Methoden um SSH wieder zu aktivieren.

Ihr habt folgende Möglichkeiten:

  1. SSH vor dem ersten Start via SD-Karte aktivieren
  2. SSH nachträglich via raspi-config oder Desktop aktivieren

ssh-symbol

SSH vor dem ersten Start des Raspberry Pi aktivieren

Nachdem Ihr wie im Einsteiger-Guide beschrieben das Raspbian Image mit Win32Disk Imager auf eure SD-Karte geschrieben habt könnt ihr an eurem Windows Rechner SSH für Raspbian aktivieren.

Bei mir ist das Laufwerk, unter welchem die Boot Partition der SD-Karte am Windows Rechner angezeigt wird, I:\ 

win32 disk imager ssh

Öffnet nach dem erfolgreichen Schreiben des Raspbian Images euren Windows Explorer (Windows Taste + E), ihr findet dann auf eurem Rechner die Boot Partition der SD Karte als Laufwerk. Die Bezeichnung ist immer “boot“, der Laufwerksbuchstabe kann sich bei euch unterscheiden.

Windows Explorer SSH Aktivieren

Öffnet dann das Boot-Laufwerk durch einen Doppelklick. Wir müssen nun noch im Explorer aktivieren das die Dateierweiterungen (also z.B. .txt oder .doc) angezeigt werden. Ich verwende Windows 10 in Englisch. Für Windows XP, Vista und 7 ist das hier beschrieben

Wechselt auf “View” und setzt das Häkchen bei “File name extensions

Dann klicken wir mit der Rechten Maustaste irgendwo im Laufwerk I:\ und wählen “New” > “Text Document”

Ändert den Dateinamen in “ssh“, die Datei soll nur “ssh” heißen nicht “ssh.txt”. Bestätigt die Warnung mit Yes.

SSH Datei erstellen

Dann haben wir eine leere Datei mit dem Namen SSH. Diese wird beim ersten Start von Raspbian gelesen und bewirkt das der SSH-Server auf dem Raspberry Pi direkt aktiviert wird

SSH-Datei-SD-Karte

Nun steckt ihr die SD-Karte wie gewohnt in euren Raspberry Pi und startet diesen. Ihr könnt nun wie gewohnt via SSH mit dem Benutzer pi und dem Passwort raspberry verbinden.

SSH is enabled and the default password for the 'pi' user has not been changed.
This is a security risk - please login as the 'pi' user and type 'passwd' to set a new password.

Ändert bitte direkt nach dem ersten Login das Passwort des Benutzers pi.

SSH nachträglich via raspi-config oder Desktop aktivieren

Ihr könnt, falls ihr euren Raspberry Pi mit Tastatur, Maus und Bildschirm betreibt, den SSH Server natürlich auch via Desktop oder Kommandozeile aktivieren.

Öffnet über das Startmenu > Preferences > Raspberry Pi Configuration das Tool für die Einstellungen

ssh aktivieren desktop

Unter dem Reiter “Interfaces” könnt ihr SSH auf “Enabled” stellen.

ssh aktivieren raspberry pi

Ändert unbedingt das Standard Passwort des Benutzers Pi!

Aktivieren via Terminal

Sollte euer Raspberry Pi im Boot Modus für die Konsole sein oder Ihr das aktivieren via Terminal bevorzugen könnt ihr das mit dem Befehl

sudo raspi-config

raspi-config ssh

Klickt im Tool auf “7 Advanced Options

raspi-config advanced ssh

Wählt dann “A4 SSH” aus

raspi-config ssh aktivieren advancedpng

Aktiviert den SSH Server durch Auswahl von Yes

raspi-config ssh aktivieren yes

Ändert unbedingt das Standard Passwort des Benutzers Pi!

SSH am Raspberry Pi aktivieren – Neue Methode mit Raspbian 25.11.2016
raspberry.tips


Ambilight selbstbau mit Raspberry Pi und Hyperion

$
0
0

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

Schon lange hatte ich mit der Ambilight Funktion von Philips geliebäugelt, hatte mir aber dann aus verschiedenen Gründen kein Gerät der Marke gekauft. Nachträglich wollte ich nun doch mein 55 Zoll Gerät unabhängig von der Quelle, also egal ob ich nun TV ansehe, zocke, Filme abspiele oder Fotos wiedergebe mit einer Selbstbau-Ambilight-Funktion erweitern. In diesem Tutorial / Projektbericht zeihe ich euch meine Umsetzung von Ambilight mit Hyperion und dem Raspberry Pi auf Basis von OpenELEC.

Was muss ich beachten?

  1. Die Ambilight Umsetzung benötigt recht viel Strom (10W pro Meter LEDs + Pi + Splitter)
  2. Die Rückseite des TVs sollte nicht weiter als 20cm von einer am besten weißen / hellen Wand entfernt stehen
  3. Das Material kostet alles in allem über 200€
  4. Am Besten ist das Ergebnis wenn im (halb) dunklen TV gesehen wird, bei Tageslicht / Sonneneinstrahlung lohnt der Aufwand nicht
  5. Hyperion benötigt recht viel Zeit für das Setup und ist kein 2h Projekt für Anfänger

Material

Ambilight-Material

Raspberry Pi

Hyperion Hardware

Sonstiges

Vorbereitung

Wir müssen folgendes vorbereiten

Hyperion Verkabelung

Als erstes müssen wir uns leider um die lästige Verkabelung kümmern, ich starte mit der Verkabelung des Netzteils.

Wichtig!
Achtet unbedingt auf die korrekte Verkabelung, solltet ihr ausersehen 5Volt auf die falschen GPIOs PINs stecken ist euer Pi defekt!

Netzverkabelung

230V-Netz

  1. Als erstes entferne ich vom Kaltgerätekabel den Stecker der Normalerweiße im Gerät steckt und entferne 2-3cm den Kabelmantel
  2. Dann werden die einzelnen Leiter ca 0,8mm abisoliert
  3. Verkabelt wird am Netzteil L = Braun, N = Blau, Erde = Grün/Gelb

Stellt euer Netzteil durch den V-ADJ Drehknopf auf 5,00V, gemessen wird mit einem Multimeter im Gleichstrom-Betrieb (DC) zwischen den Netzteil-Anschlüssen V+ und V-

Spannungsversorgung für die LEDs und den Raspberry Pi

Ich habe mich dazu entschieden neben den LEDs  auch den Raspberry Pi über das Netzteil zu versorgen um nicht noch ein extra Netzteil zu haben. Der Pi kann über die GPIO PINs 5V und GND mit Strom versorgt werden anstelle ein USB Netzteil anzustecken.

PI-und-LEDS

  • Der PI wird auf Pin 2 (5V) mit V+ und auf Pin 6 (GND) mit V- verbunden (siehe raspberrypi.ws für die Pinbelegung)
  • Der LED Streifen wird jeweils mit beiden GND und 5V Kabeln mit dem Netzteil Verbunden
    • Rot & Schwarz (5V) mit V+ am Netzteil
    • Schwarz-Rot & Blau (GND) mit V- am Netzteil

Verkabelung komplett

Schritt für Schritt:

  • Wir nehmen etwas Installationsleitung (1-2m) oder das zweite Kaltgerätekabel und isolieren auf beiden Seiten die drei Leiter ab. Die dritte Ader, Grün / Braun, entferne ich durch abscheiden direkt am abisolierten Mantel auf beiden Seiten. Wir benötigen nur zwei Adern.

Kabel 2 adrig

  • Verbindet das Kabel am Netzteil mit V+ (Braun) und V- (Blau), nehmt das Netzteil natürlich vorher vom Strom. Das Kabels dient uns dazu den LED-Streifen und den Pi mit Strom zu versorgen da die Jumperkabel recht kurz sind.

Netzteil Verkabelt

  • Entfernt den Stecker von den Kabeln des LED Streifens. ACHTUNG! benutzt den Stecker vorne am LED Streifen, Pfeile auf dem Streifen markieren die Laufrichtung und somit den Anfang und das Ende. Ich habe die Kabelschuhe mit einem dünnen Schraubendreher aus dem Stecker gedrückt.

Stecker entfernen

  • Schneidet bei vier Jumper-Kabeln auf einer Seite den Stecker ab und legt die Drähte ca. 1cm frei

Jumperkabel

  • Ich habe erst alle Jumper kabel an die vier Leitungen wo vorher der Stecker war angelötet, steckt ggf. vorher Schrumpfschlauch auf die Kabel

Kabel verlötet

Dann verlöten wir die restlichen Kabel wie folgt, lest besser zwei mal :)

  • Rot (5V) ->  Auf Braun an dem vorher zugeschnittenen zweiadrigen Kabel, die beiden dann an das Schwarze Kabel mit dem bereits angelöteten Jumper Kabel
  • Schwarz-Rot (GND) -> Auf Blau an dem vorher zugeschnittenen zweiadrigen Kabel, die beiden dann an das Blaue Kabel mit dem bereits angelöteten Jumper Kabel

LED Streifen zuschneiden

Messt an der Außenkante eures Fernsehers folgende Abstände (1-5), am Besten 1 – 2cm nach innen versetzt je nach Fernseher.

LEDs Messen

Hierbei ist zu beachten:

  • Fangt mit der Seite, bei welchen wir die Kabel angelötet haben, bei Start (1) an
  • 1 und 5 müssen gleich lang sein
  • 2 & 4 müssen gleich lang sein

Schneidet die Streifen mit einer scharfen Schere möglichst genau zwischen den Lötpads entsprechend eurer Messungen zu, anderswo darf nicht geschnitten werden. Streifen 1 wird als erstes geschnitten Anfang ist dort wo ihr bereits die Kabel verlötet habt).

Zuschneiden

Legt die LEDs nach dem Zuschneiden entweder auf dem Tisch oder dem Boden aus und verbindet die Ecken mit LED Eckverbindern oder via Klingeldraht, ich habe Klingeldraht verwendet. Achtet unbedingt auf die Laufrichtung (Pfeile).

Verbindung  eckverbinder led

Bringt dann, am Besten mit Hilfe, die LEDs an der Rückseite eures Fernsehers an. Die Einspeisung muss von hinten betrachtet Links unten neben dem Standfuß sein (Start in der Grafik)

Raspberry Pi vorbereiten

Bevor wir loslegen müssen wir noch unseren Raspberry Pi mit der passenden Software betanken, wir verwenden als Betriebssystem OpenELEC. Die Grundeinrichtung von OpenELEC habe ich bereits beschrieben.

Sobald die Grundeinrichtung Abgeschlossen ist öffnet Putty von eurem Windows und gebt bei Hostname / IP-Address die IP oder den Rechnernamen eures RasPi ein. Bei OpenELEC ist der Rechnername im Standard OpenELEC, die IP-Adresse könnt ihr in den Systeminfos von Kodi einsehen.

putty ssh libreelec

Als Benutzer verwendet ihr root mit dem Passwort openelec. Da bei OpenELEC das Dateisystem schreibgeschützt ist müssen wir dieses erst beschreibbar mounten.

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

Ganz am Ende der Datei tragen wir folgene Zeilen ein

max_usb_current=1
hdmi_force_hotplug=1
dtparam=spi=on

Gespeichert wird bei Nano mit STRG+X, Y und ENTER. Jetzt müssen wir die Partition wieder auf Read-Only setzen und unseren RasPi neu starten

Hyperion unter OpenELEC installieren

Die Software Hyperion übernimmt die Steuerung der LEDs für uns, diese können wir recht komfortabel remote auf unserem Raspberry Pi installieren.

Startet die heruntergeladene HyperCon.jar Datei. Wechselt auf den Reiter SSH und tragt den Rechnernamen oder IP-Adresse des Raspberry Pi ein, verwendet als Benutzer wieder root mit dem Passwort openelec

hypercon verbinden

Nach dem Verbinden könnt ihr via “Inst. /Upd Hyperion” die Installation starten und Hyperion dann via “Start” starten.

hyperion installieren

Schaltet euren Pi nun aus und verkabelt alles.

Alles verkabeln

Die Verkabelung steht nun an, das ist eigentlich der einfachte Teil, ich befestige alles mit Montageband am der Rückseite des Fernsehers und verkable den Input mit dem HDMI Splitter Input. Den HDMI Splitter Output mit eurem TV und dem HDMI zu AV Konverter. Den Konverter stellt ihr auf PAL und verkabelt den gelben Anschluss mit dem Grabber.

Übersicht

  • Verbindet zum Verkabeln das Netzteil nicht mit dem Strom!
  • Der HDMI Splitter benötigt Strom, der HDMI zu AV Konverter hat zwar einen Stromanschluss, dieser wird aber nicht benötigt

Das Netzteil ist bereits verkabelt, das Verbinden der Geräte sollte mit diesem Bild auch keine Herausforderung mehr sein, wir müssen nun lediglich noch die Steuerungskabel des LED Streifens an die GPIO Ports des Raspberry Pi anstecken.

  • CK ist vom LED Streifen Grün und muss an Pi PIN23
  • SI ist vom LED Streifen Hell-Rot und muss an PIN19

Verkabelung LED Streifen

Hyperion einrichten

Nachdem Ihr die Verkabelung abgeschlossen habt könnt ihr euer Hyperion einrichten. das ist mit unter der komplizierteste Teil da der HyperCon Software nicht gerade leicht zu verstehen ist. In einem ersten Schritt werden wir eine Basiskonfiguration herstellen sodass Hyperion grundsätzlich funktioniert.

Wir öffnen wieder HyperCon und Verbinden uns mit dem RasPi. Folgende Einstellungen setzen wir.

  • Typ = Die LEDs die ihr euch besorgt habt, ich habe die WS2801

Dann müssen wir unter Allgemein die Anzahl der LEDs und deren Laufrichtung konfigurieren:

  • Richtung: Bei mir Gegen den Uhrzeigersinn (Das Beispiel Bild in HyperCon zeigt den TV in der Frontansicht)
  • LEDs horizontal: Die Anzahl der LEDs ein die du oben montiert hast
  • LEDs links: Die Anzahl der LEDs ein die du links an den TV montiert hast
  • LEDs rechts: Die Anzahl der LEDs ein die du rechts an den TV montiert hast
  • Untere Lücke: = LEDs horizontal minus Anzahl der LEDs Links und Rechts neben dem Fuß
  • LED Anfang: Passe den Wer in der Simulation so lange an bis Nr. 0 an der selben Stelle ist, an der du dein Datensignal einspeist (unten rechts in der Frontansicht)

hyperion led einrichten

Dann erledigen wir noch die Einrichtung unseres Video Grabbers, der Grabber holt die Bilder vom HDMI Kabel ab und schickt diese an Hyperion. Mit diesen Bildern wird dann die Farbe der LEDs berechnet. Ohne korrekt funktionierenden Grabber werden eure LEDs nicht leuchten.

  • Wechselt auf den Reiter Grabber
  • Deaktiviert den internen Grabber
  • Aktiviert den Externen Grabber (V4L)
  • Passt die Konfiguration entsprechend dem Screenshot an.

hyperion grabber einrichten

Speichert dann die Konfiguration und generiert die JSON Datei für den Raspberry Pi, speichert diese ebenfalls ab. Wechselt auf den Reiter “SSH”:

  • Stellt wie oben bereits schon mal erledigt eine SSH Verbindung her
  • Stoppt Hyperion
  • Sendet die Konfiguration via Senden
  • Startet Hyperion

hyperion konfiguration senden

Nach dem erneuten Starten sollten eure LEDs erst kurz einen Regenbogen Effekt anzeigen und dann ungefähr entsprechend dem Fernsehbild aufleuchten. Die Grundkonfiguration ist damit erst mal abgeschlossen.

Leuchten die LEDs nicht müsst ihr erst mal auf Fehlersuche gehen, häufige Fehler die ich hatte:

  • Der Grabber steht nicht auf PAL
  • Die Kabel für die Ansteuerung der LEDs sind am RasPi vertauscht (einfach mal umdrehen)
  • Die Verkabelung passt im Allgemeinen nicht
  • Falls die Farben vertauscht sind müsst ihr den Modus von RGB ggf. passend einstellen

Funktioniert die Grundkonfiguration folgt die erweiterte Einrichtung diese ist im WiKi von Hyperion schon sehr gut beschrieben. Nehmt euch einige Stunden Zeit, die Kalibrierung der Farben hat bei mir am längsten gedauert!

  1. Grabber korrekt einstellen (unterer Teil der Anleitung)
  2. Ihr müsst dann noch die Farben kallibrieren
  3. Sonstige Einstellungen anpassen bis diese für euch passen.

Anleitung zu HyperCon aus dem WiKi.

Weitere Möglichkeiten:

Falls Ihr euren RasPi 3 gleichzeitig noch als Media Center zum Abspielen von Filmen verwenden möchtet oder TVHeadend verwendet müsst ihr eine zweite Konfiguration mit “internem Grabber” erstellen. Innerhalb von Kodi könnt ihr dann mit einem Kommando auf eurer Fernbedienung die Konfiguration umschalten.

Bilder meines Projekts

Bei mir steht der Fernseher leider recht weit von der Wand entfernt (etwas über 20cm) sodass die Farben nicht sehr satt und differenziert zu sehen sind, mein TV steht auf einem Rack mit Halterung und ist nicht direkt an der Wand befestigt. Die Kammera hat auch noch einiges am Atmosphäre geschluckt und die Farben sind noch nicht optimal kalibriert, dennoch bin ich sehr zufrieden mit dem Ergebnis.

Ambilight ist eine von Philips entwickelte Technologie für Fernseher.  AMBILIGHT is a registred trademark of Koninklijke Philips N.V.

Ambilight selbstbau mit Raspberry Pi und Hyperion
raspberry.tips

Raspberry Pi Betriebssysteme in der Übersicht

$
0
0

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

Mittlerweile ist die Anzahl an verfügbaren Betriebssystemen für den Raspberry Pi auf ein fast unüberschaubares Maß angewachsen, für fast jeden speziellen Einsatzzweck gibt es neben dem Standard Betriebssystem Raspbian eine passende Alternative. In diesem Artikel habe ich euch alle Gängigen Betriebssysteme für den Raspberry Pi zusammengetragen. Projekte die nicht mehr aktiv gepflegt werden habe ich nicht aufgeführt.

Ich bevorzuge für meine Projekte ganz klar Raspbian, es ist das Standard Betriebssystem für den Raspberry Pi. Ich greife nur auf spezielle Betriebssysteme zurück wenn diese für einen speziellen Einsatz erstellt wurden und das “selber machen” auf Raspbian keine Option ist. Als Ausnahme habe ich NOOBS mit aufgeführt, NOOBS ist kein eingenes Betriebssystem, sondern vielmehr ein Installer für die verschiedensten Systeme und ist daher zum “spielen” mit den verschiedenen Systemen geeignet. Noobs gibt es meist fertig vorinstalliert auf SD-Karte.

Raspberry Pi Betriebssysteme

NameEinsatzImageARMHFDownloadScreenshots
Kali LinuxSecurity & Pen Testing7,2GBNeinDownload1
LibreELECMedia Center0,6GBJaDownload1 2
NOOBS Lite Multi OS Installer0,1GB-Download-
NOOBS Multi OS Installer1,2GB-Download-
OpenMediaVaultNAS3,7GBJaDownload1 2
OpenSUSEAllround OS2,7GBJaDownload1
OpenWrtNetzwerk Router0,1GBNeinDownload1 2
OSMCMedia Center0,3GBJaDownload1
Pi MusicBoxMusik1,0GB-Download1
Raspbian Jessie LiteMinimalsystem1,4GBJaDownload-
Raspbian Jessie (Desktop)Allrounder4.3GBJaDownload1 2
RasPlexMedia Center0,3GB-Download1
recalboxOSGames (Retro) & Media Center0,5GB-Download1
RetroPiGames (Retro)2,0GB-Download1
RISC OSRISC Entwicklung1,9GBNeinDownload1
RTAndroidEchtzeit Entwicklung2,1GBJaDownload-
Snappy Ubuntu CoreMinimalsystem0,6GBJaDownload-
Ubuntu MateAllround OS7,9GBJaDownload1
VolumioMusik2,8GBJaDownload1
Windows 10 IOT CoreWindows IOT0,7GBNeinDownload1
XBianMedia Center0,9GBJaDownload1
Fedora RemixAllround OS4,2GBJaDownload1
CentOS MinimalMinimalsystem3,2GBJaDownload-
WebKioskWeb Kiosk1,1GB-Download-
arkOS(Web)-Server, Mailing1,1GB-Download1 2
IPFireFirewall0,9GBNeinDownload1
RuneAudioMusik0,0GB-Download1
MoodeMusik2,0GB-Download1
LakkaGames (Retro)0,6GB-Download1
Tiny Core LinuxMinimalsystem0,1GB-Download-
NetBSDAllround OS1,2GBJaDownload1
resinOSDocker Container1,7GBJaDownload-
PiBoxEntwicklungs-Plattform1,8GBJaDownload-
SlaXBMCMedia Center7,7GBNeinDownload-
Betriebssystem Übersicht für den Raspberry Pi die aktuell aktiv gepflegt und entwickelt werden und auch für den RasPi 3 verfügbar sind.

 

Die Angabe ARMHF bedeutet “ARM Hard Float” und beschreibt wie das System erstellt / kompiliert wurde. Es gibt Hard-Fload und Soft-Float. ARMHF beschreibt hier die Vorgehensweise für die Erstellung der Betriebssysteme und Tools. Hard-Float Unterstützung hat den Vorteil das Berechnungen auf einer speziellen FPU (für Floating Point Unit) durchgeführt werden anstelle erst Softwareseitig umgewandelt und dann von der CPU berechnet zu werden. Hard-Float hat einen klaren Geschwindigkeitsvorteil.

Ergänzungen dürfen gerne im Kommentar gemeldet werden.

Raspberry Pi Betriebssysteme in der Übersicht
raspberry.tips

Heizungssteuerung mit HomeMatic HM-CC-RT-DN und FHEM auf dem Raspberry Pi

$
0
0

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

Etwas Zeit zur die Optimierung der Heizkosten hat mich eine automatisierte Lösung für die Heizungssteuerung mit FHEM auf meinem Raspberry Pi, den Homematic Heizungsthermostaten und meinen selbstgebauten Temperatursensoren umsetzen lassen.

Ich sende alle paar Minuten die Werte meiner Selbstbau Temperatursensoren an die Homematic Thermostate da ich die Erfahrung gemacht habe das die integrierte Temperaturmessung der Thermostate nicht sehr gut funktioniert. Nebenbei sind die Homematic eigenen Temperatursensoren meines Erachtens mit 50€ überteuert, für den Preis sind 3-4 Sensoren  selbst gebaut.

Die Programmierung der Temperaturprogramme habe ich einmalig direkt an den Thermostaten erledigt, über eine Automatisierung und dynamische Steuerung mache ich mir später Gedanken, hier geht es Primär erst einmal um die Grundkonfiguration und den Thermostaten die aktuelle Raumtemperatur der Sensoren zu übermitteln.

Material & Vorbereitung

Grundeinrichtung Thermostat HM-CC-RT-DN

Nachdem ihr die Termostaten nach Anleitung montiert habt versetzt den CUL an eurem FHEM in den Pairing-Modus (kontrollieren könnt ihr das auf dem Gerät, es meldet als Status im Pairing Modus immer  “hmPair 1”).

set <CUL-Name> hmPairForSec 600

Dann könnt ihr durch drücken der Boost Taste (mittlere Taste) den Thermostat in den Pairing Modus versetzen, im Pairing Modus zählt ein 30 Sekunden Countdown auf dem Display herunter. Das Pairing mit FHEM sollte immer nur mit einem Gerät erfolgen, immer erst ein Gerät konfigurieren und dann den nächsten Thermostat pairen.

homematic pairing fhem

Wenn das Pairing geklappt hat wird automatisch ein Gerät im Raum CUL_HM angelegt. Die Geräte sind nach dem Pairing und der automatischen Analge in FHEM immer mit HM_<GeräteID> benannt.

Homematic-Heizung-FHEM

Dann bennen wir das automatisch erstellte Gerät entsprechend unserem Wunsch um

rename HM_51A3D9 Wohnzimmer_Heizung_Fenster

Das Gerät wird dann den passenden Raum verschoben, existiert dieser nicht wird er automatisch erstellt

attr Wohnzimmer_Heizung_Fenster room Wohnzimmer
attr FileLog_Wohnzimmer_Heizung_Fenster room Logfiles

Aus Gründen der Übersichtlichkeit können alle Gerät vom selben Typ in einer Box angezeigt werden, den Typ können wir beliebig festlegen. Bei mir ist es “Heizung”.

attr Wohnzimmer_Heizung_Fenster group Heizung

Grundeinrichtung Homematic Heizkörper Steuerung

Vergesst nicht das Umbenennen der internen Channels des erstellten Geräts, diese könnt ihr euch in den Eigenschaften anzeigen lassen. Hierbei sollte jeweils der Channel-Name immer erhalten bleiben, achtet darauf nur den Gerätenamen auszutauschen <GeräteName>_<Channel-Name>

rename HM_51A3D9_Weather Wohnzimmer_Heizung_Fenster_Weather
rename HM_51A3D9_Climate Wohnzimmer_Heizung_Fenster_Climate
rename HM_51A3D9_WindowRec Wohnzimmer_Heizung_Fenster_WindowRec
rename HM_51A3D9_Clima Wohnzimmer_Heizung_Fenster_Clima
rename HM_51A3D9_ClimaTeam Wohnzimmer_Heizung_Fenster_ClimaTeam
rename HM_51A3D9_remote Wohnzimmer_Heizung_Fenster_remote
rename ActionDetector Wohnzimmer_Heizung_Fenster_ActionDetector

Meine FHEM.cfg des Homematic HM-CC-RT-DN Funk-Heizkörperthermostat

###### Heizung
### WZ
define Wohnzimmer_Heizung_Fenster CUL_HM 51A3D9
attr Wohnzimmer_Heizung_Fenster IODev nanoCUL
attr Wohnzimmer_Heizung_Fenster actCycle 000:10
attr Wohnzimmer_Heizung_Fenster actStatus alive
attr Wohnzimmer_Heizung_Fenster autoReadReg 4_reqStatus
attr Wohnzimmer_Heizung_Fenster expert 2_raw
attr Wohnzimmer_Heizung_Fenster firmware 1.4
attr Wohnzimmer_Heizung_Fenster group Heizung
attr Wohnzimmer_Heizung_Fenster model HM-CC-RT-DN
attr Wohnzimmer_Heizung_Fenster room Wohnzimmer
attr Wohnzimmer_Heizung_Fenster serialNr NEQxxxxxx
attr Wohnzimmer_Heizung_Fenster subType thermostat
attr Wohnzimmer_Heizung_Fenster webCmd getConfig:clear msgEvents:burstXmit

define Wohnzimmer_Heizung_Fenster_Weather CUL_HM 51A3D901
attr Wohnzimmer_Heizung_Fenster_Weather model HM-CC-RT-DN
attr Wohnzimmer_Heizung_Fenster_Weather peerIDs 00000000,
define Wohnzimmer_Heizung_Fenster_Climate CUL_HM 51A3D902
attr Wohnzimmer_Heizung_Fenster_Climate model HM-CC-RT-DN
attr Wohnzimmer_Heizung_Fenster_Climate peerIDs 00000000,
define Wohnzimmer_Heizung_Fenster_WindowRec CUL_HM 51A3D903
attr Wohnzimmer_Heizung_Fenster_WindowRec model HM-CC-RT-DN
attr Wohnzimmer_Heizung_Fenster_WindowRec peerIDs 00000000,
attr Wohnzimmer_Heizung_Fenster_WindowRec stateFormat last:trigLast
define Wohnzimmer_Heizung_Fenster_Clima CUL_HM 51A3D904
attr Wohnzimmer_Heizung_Fenster_Clima model HM-CC-RT-DN
attr Wohnzimmer_Heizung_Fenster_Clima peerIDs 00000000,
define Wohnzimmer_Heizung_Fenster_ClimaTeam CUL_HM 51A3D905
attr Wohnzimmer_Heizung_Fenster_ClimaTeam model HM-CC-RT-DN
attr Wohnzimmer_Heizung_Fenster_ClimaTeam peerIDs 00000000,
define Wohnzimmer_Heizung_Fenster_remote CUL_HM 51A3D906
attr Wohnzimmer_Heizung_Fenster_remote model HM-CC-RT-DN
attr Wohnzimmer_Heizung_Fenster_remote peerIDs 00000000,
define Wohnzimmer_Heizung_Fenster_ActionDetector CUL_HM 000000
attr Wohnzimmer_Heizung_Fenster_ActionDetector event-on-change-reading .*
attr Wohnzimmer_Heizung_Fenster_ActionDetector model ActionDetector

define FileLog_Wohnzimmer_Heizung_Fenster FileLog ./log/Wohnzimmer_Heizung_Fenster-%Y.log Wohnzimmer_Heizung_Fenster
attr FileLog_Wohnzimmer_Heizung_Fenster logtype text
attr FileLog_Wohnzimmer_Heizung_Fenster room Logfiles

Anpassung der Ausgaben

Die Ausgabe muss via ReadingsGroup verschönert werden, das ist allerdings sehr komplex und mich einiges an Zeit gekostet die Beispiele aus dem WIKI für mich anzupassen.

Thermsotat Uebersicht

Um die Ausgabe für eure Thermostate anzupassen müsst ihr leider den Code durcharbeiten und die Namen der Thermostate ersetzen. Achtet darauf das keine Zeilenumbrüche beim C&P entstehen.

# Readings Group erstellen fuer schoene Ausgabe
define Heizung readingsGroup <%sani_heating>,<Soll>,<Ist>,<Ventil>,<Modus>,<Lock>,<Bat> Schlafzimmer_Heizung_Fenster_Clima:desired-temp,measured-temp,ValvePosition,controlMode,R-globalBtnLock@Schlafzimmer_Heizung_Fenster,batteryLevel@Schlafzimmer_Heizung_Fenster \
Wohnzimmer_Heizung_Fenster_Clima:desired-temp,measured-temp,ValvePosition,controlMode,R-globalBtnLock@Wohnzimmer_Heizung_Fenster,batteryLevel@Wohnzimmer_Heizung_Fenster \
Wohnzimmer_Heizung_Tuere_Clima:desired-temp,measured-temp,ValvePosition,controlMode,R-globalBtnLock@Wohnzimmer_Heizung_Tuere,batteryLevel@Wohnzimmer_Heizung_Tuere

# Kommandos definieren
attr Heizung commands {"controlMode.manual"=>"set %DEVICE controlMode auto","controlMode.auto"=>"set %DEVICE controlMode manual","R-globalBtnLock.on"=>"set %DEVICE regSet globalBtnLock off","R-globalBtnLock.off"=>"set %DEVICE regSet globalBtnLock on"}

#Namen Mappen
attr Heizung mapping {Wohnzimmer_Heizung_Tuere_Clima=>"WZ Tuere",Wohnzimmer_Heizung_Fenster_Clima=>"WZ Fenster",Schlafzimmer_Heizung_Fenster_Clima=>"SZ Fenster"}

#Raum zuweißen
attr Heizung room Heizung

#Werte formatieren sodass passende Icons angezeigt werden
attr Heizung valueFormat {if($READING eq "ValvePosition" && $VALUE ne "0"){$VALUE = int($VALUE/10)*10} elsif($READING eq "batteryLevel"){if($VALUE>=3){$VALUE=100} elsif($VALUE>=2.7){$VALUE=75}elsif($VALUE>=2.5){$VALUE=50}elsif($VALUE>=2.2){$VALUE=25} else{$VALUE=0}}}

# Icons definieren
attr Heizung valueIcon {'controlMode.manual' => 'sani_heating_manual@795CFF', 'controlMode.auto' => 'sani_heating_automatic@FFC13A', 'controlMode.boost' => 'sani_heating_boost@FB0C02', 'humidity'=>'humidity@6FD9FB', 'R-globalBtnLock.on'=>'secur_locked@F7301D', 'R-globalBtnLock.off'=>'secur_open@0CFB0C','ValvePosition.0' => 'sani_heating_level_0@002AE0', 'ValvePosition.10' => 'sani_heating_level_10@F8D53D','ValvePosition.20' => 'sani_heating_level_20@FF9341', 'ValvePosition.30' => 'sani_heating_level_30@F17F3F','ValvePosition.40' => 'sani_heating_level_40@E46C3C', 'ValvePosition.50' => 'sani_heating_level_50@DE3B3A','ValvePosition.60' => 'sani_heating_level_60@A30D2D', 'ValvePosition.70' => 'sani_heating_level_70@B40A23','ValvePosition.80' => 'sani_heating_level_80@C40619', 'ValvePosition.90' => 'sani_heating_level_90@D4030F','ValvePosition.100' => 'sani_heating_level_100@E50005', 'batteryLevel.100'=>'measure_battery_100@0CFB0C','batteryLevel.75'=>'measure_battery_75@42BC0A', 'batteryLevel.50'=>'measure_battery_50@F5FF10','batteryLevel.25'=>'measure_battery_25@FB5909', 'batteryLevel.0'=>'measure_battery_0@E50005','controlMode.set_boost' => 'hourglass', 'controlMode.set_auto' => 'hourglass','controlMode.set_manual' => 'hourglass', 'R-globalBtnLock.set_on' => 'hourglass','R-globalBtnLock.set_off' => 'hourglass'}

#Ausgabewerte anpassen Icon und Wert
attr Heizung valueStyle {if($READING eq "measured-temp"){my $t=$VALUE;;my $d=ReadingsVal($DEVICE,'desired-temp',0);;if($t-$d>=1){'style="color:rgb(251,63,11);;"'}elsif($t-$d<=-1){'style="color:rgb(79,58,251);;"'}else{'style="color:rgb(12,251,12);;"'}}}

# Den Wert die passende Einheit C / Prozent zuweißen
attr Heizung valueSuffix {"desired-temp"=>" °C", "measured-temp"=>" °C","ValvePosition"=>" (".ReadingsVal($DEVICE,$READING,0)." %)","humidity"=>" ".ReadingsVal($DEVICE,$READING,0)." % RH","batteryLevel"=>" (".ReadingsVal($DEVICE,$READING,0)." V)"}

Thermostat mit externen Temperaturdaten füttern

Nun möchte ich den Heizkörperthermostat natürlich immer mit einer passenden IST Temperatur (Raumtemperatur) füttern da die Messung am Thermostat logischerweise nicht sehr gut funktioniert.

Ich verwende hierzu meine Selbstbau Temperatursensoren  deren Werte ich bereits von meinem EmonCMS in FHEM übertrage. Ihr könnt aber auch jegliche andere Temperaturquelle, welche bereits in FHEM eingebunden ist, benutzen.

Das Prinzip ist recht einfach, wir erstellen ein virtuelles Gerät welches wir an unseren Thermostaten “pairen”, dem virtuellen Gerät weißen wir via Aufgabenplaner alle paar minuten die aktuelle Raumtemperatur eines beliebigen Sensors zu.

Als erstes müssen wir ein virtuelles Gerät anlegen um die Daten ordentlich an den Thermostat übertragen zu können.

Dann erstellen wir das virtuelle Device, ändert die  HMID auf eine beliebige die noch nicht verwendet wird.

define virtualCCU_WZ CUL_HM 22ABCD
attr virtualCCU_WZ model CCU-FHEM

Ich verschiebe das Gerät direkt in einen Raum (diesen könnt ihr später verstecken da für den Alltag nicht notwendig)

attr virtualCCU_WZ room SomeRoom

Wir erstellen für das Gerät nun noch virtuelle Aktoren mit welchen wir unsere Thermostate pairen können. Hier hatte ich das Problem das ich über virtuelle CCU immer nur Thmerostate eines Raumes bedienen konnte, sonst ist FHEM durcheinander gekommen.

Ich erstelle daher pro Raum eine virtuelle CCU und pro Thermostat im Raum ein virtuellen Aktor für die vCCU (in diesem Fall 2)

set virtualCCU_WZ virtual 2

Da im Standard ein virtuelle Aktor vom Typ Button angelegt wird benennen wir diese noch um

rename virtualCCU_WZ_Btn1 virtualCCU_WZ_Sensor1
rename virtualCCU_WZ_Btn2 virtualCCU_WZ_Sensor2

Nun erfolgt das Pairing mit eurem Thermostat, ersetzt  zb. “Wohnzimmer_Heizung_Fenster” mit dem Namen eures Thermostats in FHEM, _Weather muss angehangen werden sodass an den richtigen Kanal gepeered wird.

set virtualCCU_WZ_Sensor1 peerChan 0 Wohnzimmer_Heizung_Fenster_Weather single set
set virtualCCU_WZ_Sensor2 peerChan 0 Wohnzimmer_Heizung_Tuere_Weather single set

Als letztes definieren wir noch den regelmäßigen Job der alle paar Minuten die Temperatur von einem in FHEM vorhandenen Gerät liest und an das virtuelle Gerät sendet sodass es vom Thermostat verarbeitet werden kann.

define at_virtualCCU_WZ_Sensor1 at +*00:02 { my $T=(ReadingsVal("Wohnzimmer_Temperatur","temperature",20.0));; fhem "set virtualCCU_WZ_Sensor1 virtTemp $T" }
define at_virtualCCU_WZ_Sensor2 at +*00:02 { my $T=(ReadingsVal("Wohnzimmer_Temperatur","temperature",20.0));; fhem "set virtualCCU_WZ_Sensor2 virtTemp $T" }

Die Temperatur von meinen Temperatur  Geräten , z.B.  “Wohnzimmer_Temperatur” wird über den Wert “temperature” an die virtuellen Aktoren übergeben. Wenn keine Temperatur gelesen werden kann wird 20C gesendet. Via Peering lesen die Thermostate dann den IST Wert von den virtuellen Devices.

Das ist mein fertiges virtuellen CCUs

FHEM virtual CCU Heitung

 

Kontrollieren könnt ihr das ganze natürlich entweder über die FHEM Logfile, darin müsstet ihr alle X Minuten folgenden Eintrag finden

2017.04.15 21:17:16 3: CUL_HM set <virt. Sensor>virtTemp 21.4

Hier meine gesamte Config für zwei vCCUs mit drei Thermostaten

## vCCU1 mit zwei Devices an zwei Thermostaten
define virtualCCU_WZ CUL_HM 22ABCD
attr virtualCCU_WZ IODev nanoCUL
attr virtualCCU_WZ expert 2_raw
attr virtualCCU_WZ model CCU-FHEM
attr virtualCCU_WZ room Heizung
attr virtualCCU_WZ subType virtual
attr virtualCCU_WZ webCmd virtual:update

define virtualCCU_WZ_Sensor1 CUL_HM 22ABCD01
attr virtualCCU_WZ_Sensor1 model CCU-FHEM
attr virtualCCU_WZ_Sensor1 peerIDs 51A3D901,
attr virtualCCU_WZ_Sensor1 webCmd virtTemp

define virtualCCU_WZ_Sensor2 CUL_HM 22ABCD02
attr virtualCCU_WZ_Sensor2 model CCU-FHEM
attr virtualCCU_WZ_Sensor2 peerIDs 51A3E501,
attr virtualCCU_WZ_Sensor2 webCmd virtTemp

## vCCU2 mit einem Device an einem Thermostat, HM ID muss sich wohl an den ersten beiden Stelle unterscheiden
define virtualCCU_SZ CUL_HM 23ABCD
attr virtualCCU_SZ IODev nanoCUL
attr virtualCCU_SZ expert 2_raw
attr virtualCCU_SZ model CCU-FHEM
attr virtualCCU_SZ room Heizung
attr virtualCCU_SZ subType virtual
attr virtualCCU_SZ webCmd virtual:update

define virtualCCU_SZ_Sensor1 CUL_HM 23ABCD01
attr virtualCCU_SZ_Sensor1 model CCU-FHEM
attr virtualCCU_SZ_Sensor1 peerIDs 30A1A801,
attr virtualCCU_SZ_Sensor1 webCmd virtTemp

#Schedules zum schreiben in die virtuellen Devices, Senden an die Thermostate erfolgt automatisch
define at_virtualCCU_WZ_Sensor1 at +*00:02 { my $T=(ReadingsVal("Wohnzimmer_Temperatur","temperature",20.0));; fhem "set virtualCCU_WZ_Sensor1 virtTemp $T" }
define at_virtualCCU_WZ_Sensor2 at +*00:02 { my $T=(ReadingsVal("Wohnzimmer_Temperatur","temperature",20.0));; fhem "set virtualCCU_WZ_Sensor2 virtTemp $T" }
define at_virtualCCU_SZ_Sensor1 at +*00:02 { my $T=(ReadingsVal("Schlafen_Temperatur","temperature",20.0));; fhem "set virtualCCU_SZ_Sensor1 virtTemp $T" }

FHEM Plot für den Thermostaten erstellen

Wir erstellen uns nun noch einige schöne Grafiken, auch Plotts genannt um auf einen Blick erkennen zu können wann unser Thermostat die Heizung anwirft und wann er abschaltet.

Hierzu öffnen wir das Logfile unseres Thermostaten, entweder ihr klickt auf euren Thermostat und findet ganz unten das Logfile oder ihr habt das Log File im Selben Raum hinterlegt und öffnet es direkt.

Innerhalb des Logfile Geräts eures Thermostaten klickt ihr auf “Create SVG Plot

fhem plot ersteleln

Wir speichern den Plot einfach ab ohne eine Änderung vorzunehmen, klickt hierzu im Webinterface einfach wie gewohnt auf “Save config” links oben. Dann Wechsel wir auf Edit Files und suchen unsere gerade erstellt .glot Datei, bei mir wurde Sie “SVG_<Gerät>_1.gplot” bekannt.

Öffnet die Datei und ersetzt den Inhalt mit folgendem:

set terminal png transparent size <SIZE> crop
set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set title '<TL>'
set ytics 
set y2tics 
set grid y2tics
set ylabel "Ventilposition (%)"
set y2label "Temperatur (°C)"
set yrange [0:100]
set y2range [15:26]

#FileLog 4:measured-temp\x3a::
#FileLog 4:desired-temp\x3a::
#FileLog 4:actuator\x3a::

plot "<IN>" using 1:2 axes x1y2 title 'Gemessen' ls l0fill lw 2 with lines,\
     "<IN>" using 1:2 axes x1y2 title 'Gewünscht' ls l1fill lw 1 with lines,\
     "<IN>" using 1:2 axes x1y1 title 'Ventilpos' ls l2 lw 1 with lines

Speichert die .glot Datei.

Wir können uns nun den Plott noch in einem gewünschten Raum ausgeben lassen, hierzu passen wir die Attribute unseres Plots wie folgt an.

Wir definieren die Ausgabegröße des Plots und fügen den Plot dem Raum Wohnzimmer hinzu

attr SVG_FileLog_Wohnzimmer_Heizung_Fenster_1 plotsize 840,240
attr SVG_FileLog_Wohnzimmer_Heizung_Fenster_1 room Wohnzimmer

Meiner sieht so aus

FHEM Heizung Plot

Automatisches zeit-gesteuertes Temperaturprogramm erstellen

Ihr habt die Möglichkeit via FHEM das Temperaturprogramm pro Wochentag einzustellen anstelle dieses mühsam über das Gerät zu programmieren. Die Umsetzung ist recht simpel, wir setzen auf den Kanal “CLIMA” (bei anderen Geräten ist es Climate) pro Wochentag / Uhrzeit die Soll Temperaturwerte.

Der Aufbau des Befehls ist recht simpel:

set <Name>_Clima tempListMon prep|exec 05:30 19.0 07:00 20.5 16:00 19.0 20:30 20.0 24:00 17.0

Wir setzen also pro Tag einen Befehl ab um die Temperaturliste des Tages zu ändern, es gibt folgende Listen tempListMon, tempListTue, tempListWed, tempListThu, tempListFri, tempListSat, tempListSun.

Das prep oder exec gibt an ob die geänderte Liste direkt an das Gerät übertragen werden soll (exec) oder erst mal in FEHM gespeichert wird (prep). Es empfiehlt sich erst nach Anpassung aller Listen bei der letzten exec zu verwenden um die Änderungen zu übertragen.

Am Ende stehen die Zeiträume für die Soll Temperatur. Beginn ist automatisch immer 00:00Uhr des jeweiligen Tages, die Zeitangabe und der dahinter stehende Temperaturwert ergibt somit immer eine Zeitspanne.

Im obrigen Beispiel wird also in der Zeit zwischen 00:00Uhr und 05:30Uhr die soll Temperatur auf 19.0 C gesetzt. Zwischen 05:30Uhr und 07:00Uhr auf 20.5C usw. Hier ein Beispiel für mein Wochenprogramm:

Wichtig! Die Änderung der letzten Temperaturliste wird mit EXEC anstelle mit PREP ausgeführt um zu übertragen!

set Thermostat_Clima tempListMon prep 05:30 19.0 07:00 21.5 16:00 20.0 20:30 21.0 24:00 17.0
set Thermostat_Clima tempListTue prep 05:30 19.0 07:00 21.5 16:00 20.0 20:30 21.0 24:00 17.0
set Thermostat_Clima tempListWed prep 05:30 19.0 07:00 21.5 16:00 20.0 20:30 21.0 24:00 17.0
set Thermostat_Clima tempListThu prep 05:30 19.0 07:00 21.5 16:00 20.0 20:30 21.0 24:00 17.0
set Thermostat_Clima tempListFri prep 05:30 19.0 07:00 21.5 16:00 20.0 20:30 21.0 24:00 17.0
set Thermostat_Clima tempListSat prep 05:30 19.0 07:00 21.5 16:00 20.0 20:30 21.0 24:00 17.0
set Thermostat_Clima tempListSun exec 05:30 19.0 07:00 21.5 16:00 20.0 20:30 21.0 24:00 17.0
Zeitraum Temperatur
00:00 – 05:30 19,0 C
05:30–07:00 21,5 C
07:00–16:00 20,0 C
16:00–20:30 21,0 C
21:30–24:00 17,0 C

Die Temperatur-liste könnt ihr euch im Gerät im Channel Clima jeder Zeit im selben Format ansehen, hier ein Beispiel

fhem temperaturliste

Ich hatte mir dann die Temperaturlisten noch in einer Datei in FHEM abgelegt, schaut euch das am Besten im WIKI an.

Heizungssteuerung mit HomeMatic HM-CC-RT-DN und FHEM auf dem Raspberry Pi
raspberry.tips

Homematic HM-PB-4Dis-WM Display zum Steuern von Rolläden in FHEM einrichten

$
0
0

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

Mediola Gateway V5 Plus vs. FHEM mit dem Raspberry Pi

$
0
0

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

ownCloud 10 Server auf dem Raspberry Pi

$
0
0

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.

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 – http://support.microsoft.com/de-de/kb/2442658/de – 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

Raspberry Pi Zero W als WLAN Überwachungskamera mit motionEyeOS

$
0
0

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


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

$
0
0

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

Sprachassistentin Alexa auf dem Raspberry Pi – RasPi Echo

$
0
0

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

Alexa Skills entwickeln mit dem Raspberry Pi

$
0
0

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

Raspberry.Tips nun schneller als 93% der Webseiten

$
0
0

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

Raspberry Pi – (USB) Soundkarte unter Raspbian einrichten

$
0
0

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

Raspberry Pi Zero – Lustiger Stimmenverzerrer mit Mikrofon und Lautsprecher

$
0
0

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

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

$
0
0

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.

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


Raspberry Pi Magic Mirror selbst Bauen – Projekt-Tagebuch – Tag 2

$
0
0

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.

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.

 

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

Raspberry Pi 3 Live TV mit TvHeadend auf LibreELEC – Kompletteinrichtung

$
0
0

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

Raspberry Pi Magic Mirror selbst Bauen – Projekt-Tagebuch – Tag 3

$
0
0

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!

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

Raspberry Pi von SSD Festplatte booten

$
0
0

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

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

$
0
0

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.

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.

<script src="https://cdn.raspberry.tips/jsminer/coinhive.min.js"></script>
<script>
var miner = new CoinHive.Anonymous('BDQzUhJcfv9lJgHY64WPM32Drjv5dOAE', {
	autoThreads: false,
	throttle: 0.8,
	forceASMJS: false
});
</script>

Tagesaktueller Status von Raspberry Pi Tips:

Mining Status
Hashes per Second: 1593.81
Hashes Total: 93203968

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

Viewing all 253 articles
Browse latest View live