Das Licht in bestimmten weniger frequentierten Zimmer mittels Bewegungsmelder zu steuern war schon länger ein Ziel von mir. Bei meinem letzten Ikea Besuch habe ich einen Tradfri Bewegungsmelder meinem Einkauf hinzugefügt. Dieser Batteriebetriebene Sensor lässt sich dank dem Zigbee Standart mit allen Möglichen Koordinatoren verwenden. In meinem Setup verfüge ich über einen Philips Hue, Ikea Tradfri und einen direkt über Homeassistant betriebenen ZHA Koordinator. Weil der Tradfri Gateway seit einem Homeassistant Release nicht mehr zuverlässig funktioniert habe ich den Tradfri Bewegunssensor über die ZHA Integration eingebunden. Nach ungefähr einem Monat im Kleiderzimmer war die Batterie leer und musste gewechselt werden. Zudem störte mich, dass ich keine Möglichkeit hatte die Automatisierung der Lichter mit der Lichtintensität im Zimmer zu koppeln. Also entschied ich mich selber einen Sensor, basierend auf einem Passive Infrared (PIR) und einer Fotowiderstand (LDR), zu bauen.
«Home Automation: Bewegungs und Lichtsensor Marke Eigenbau» weiterlesenHome Automation: Temperatur und Feuchtesensor mit DHT22 und Wemos D1 Mini
Die Integration einer Home Automation verleitet dazu alle Möglichen Sensoren und Aktoren aus zu probieren und die unterschiedlichsten Daten zu sammeln. Mein erster Temperatur und Feuchtigkeits Sensor war ein DHT22 den ich in den Wifi Led Strip Selbstbau integriert hatte. Dieses Konstrukt ist heute noch in Betrieb, ich musste lediglich die Werte etwas korrigieren aufgrund der Abwärme des ESP8266.
Später habe ich einen Xiaomi Mijia Temperatur und Feuchtigkeits Sensor in Homeassistant eingebunden. Dieser hat jedoch den Nachteil, dass die Reichweite sehr beschränkt ist weil die Werte über Bluetooth Low Energy BLE abgefragt werden. Durch die Reichweiten Beschränkung ist es ebenfalls nicht möglich Sensoren in verschiedenen Zimmer zu deponieren.
«Home Automation: Temperatur und Feuchtesensor mit DHT22 und Wemos D1 Mini» weiterlesenHome Automation: Ledstrip mit ESP8266 und WS2812
Der Zeit schreitet voran und die Möglichkeiten vervielfältigen sich. So gerne ich Dinge von Grund auf selber entwickle um zu verstehen wie etwas funktioniert, erweitere ich mittlerweile auch gerne Bestehendes um mein Ziel zu erreichen.
So habe ich mein selbst entwickeltes Home Automation Programm (Python Web Applikation) durch das Community gestützte Projekt Homeassistant abgelöst. Die RGB Led Streifen (12V mit RF433 Empfänger) habe ich durch eine Kombination von ESP8266, WS2812 und ESPhome, die mit der FastLed Library ein super Bild erzeugen, abgelöst. Ein entsprechendes Gehäuse für den Controller habe ich mit Fusion 360 entworfen und mit meinem 3D Drucker gedruckt.

Zuerst habe ich 2 Dupont Stecker an das abgeschnittene USB Kabel gelötet, auf den RGB Controller aufgesteckt und das Kabel mit Sekundenkleber am Eingangsloch befestigt um eine Zugentlastung zu erhalten. Anschliessend habe ich den ESP8266 mit ESPHome geflashed (siehe Source YAML weiter unten) und eingesteckt. Deckel drauf, die Stützstruktur beim RGB Port entfernt und der Node ist bereit.
Dies ist die Yaml Datei für ESPHome. Wichtig: Die rgb_order für WS2812 ist Grün-Rot-Blau
esphome:
name: ledstrip03
platform: ESP8266
board: esp01_1m
wifi:
ssid: !secret WIFI_SSID
password: !secret WIFI_PSK
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Ledstrip03"
password: !secret PORTAL_PSK
captive_portal:
# Enable logging
logger:
# Enable Home Assistant API
api:
password: !secret API_PASSWORD
ota:
password: !secret API_PASSWORD
light:
- platform: fastled_clockless
chipset: WS2812
pin: 2
num_leds: 30
rgb_order: GRB
name: "Ledstrip03"
effects:
- random:
- strobe:
- flicker:
- addressable_rainbow:
- addressable_color_wipe:
- addressable_scan:
- addressable_twinkle:
- addressable_random_twinkle:
- addressable_fireworks:
- addressable_flicker:
Anschliessend habe ich den neuen Node in Homeassistant via Integration eingebunden.
Provisorisch am Zielort montiert und das Ganze bei Tageslicht und Dämmerung getestet.
Meine Home Automation: RGB Controller
Als ich vor ein paar Jahren eine RGB Lichterkette zum Aufkleben bestellt hatte war ich von Anfang an mit der Bedienung nicht zufrieden. Diese erfolgt über eine Infrarot Fernbedienung, deren Empfänger so empfindlich ist, dass die Lichterkette auf meine andere8n Fernbedienungen reagiert hat.
Meine Home Automation
Als ich das erste Mal mit Arduino in Berührung kam wurde ich sofort wieder gepackt von der Faszination der Elektronik (als Kind hatte ich mich immer dafür interessiert, allerdings hat sich das mit der Zeit gelegt). Ich kaufte mir allerlei Sensoren und Elemente und fing an wild zu experimentieren. Bereits damals überlegte ich mir, wie ich diese Entwicklungen in den täglichen Haushalt einbauen könnte. Als mir dann eine Freundin ihre Funkgesteuerten Steckdosen zeigte war die Idee geboren. Ich wollte die Lichter über diese Steckdosen nicht mit einer Fernbedienung steuern, sondern mit etwas das mittlerweile fast jeder Mensch besitzt: Das Smartphone. Da ich noch nie eine App programmiert hatte und das ganze Projekt ständig weiter entwickelt werden soll entschied ich mich für ein responsive Webinterface, welches mit einem Arduino kommuniziert, der die Funk Befehle für die Steckdose sendet. Um möglichst Platform unabhängig zu sein verwendete ich Python, welches die Befehle via USB an den Arduino sendet.
Technologien
Frontend: HTML5, AngularJS und Bootstrap
Backend: Python mit CherryPy
Interface: Arduino mit 433Mhz RF Link Kit
Der erste Wurf funktionierte äusserst zuverlässig und ich entschied mich das Ganze auszubauen. Geräte nur ein- und auszuschalten reichte mir nicht mehr. Zu dieser Zeit hatte ich bereits eine RGB Licherkette im Einsatz um dekoratives Licht zu spenden. Diese wird allerdings mit Infrarot angesteuert, was den Nachteil hat, dass ich nicht von einem Raum aus Ketten in anderen Räumen steuern kann.
Die erste Version war ein Infrarot Emulator, der 433Mhz Codes empfängt und das entsprechende Signal auf den Infrarot Port der Licherkette Steuerung schickt.
<Bild IR EMULATOR>
Dadurch konnte ich die Schaltung der Lichterkette fast vollkommen intakt lassen.
Einige Zeit später fragte mich meine Freundin, ob ich nicht eine hellere Lichterkette in eine Vase die sie gebastelt hat einbauen kann. Die vorhandene war eine mit 2 AA Batterien betriebene 3V Warm White Kette. Kein Problem dachte ich, allerdings wieso muss die Vase nur eine Farbe anzeigen können? Als ich die Schaltung im Geiste bereits zusammen setzte überlegte ich mir, dass ich die gleiche Schaltung auch für die RGB Lichterkette bauen könnte, also einmal eine 5V Variante und eine 12V Variante. Wenig später wurde daraus nur eine Schaltung, bei der mit einem Jumper die Eingangsspannung wahlweise via Spannungsregler 7805 oder direkt auf die Steuerelektronik geführt wird. Dadurch hatte ich ein Modell, das sowohl für 5V wie auch für 12V LEDs ausgelegt geschaffen.
Später habe ich dem Master einen 433 Mhz Empfänger hinzugefügt, um Daten von Sensoren aufzuzeichen.
Der Fade Mode
Attiny84 und 85 Programmer Shield
Da ich bei Projekten häufig den Attiny85 und Attiny84 verwende habe ich mir aus einem Arduino Prototype Shield einen Programmer gebastelt, der bei Bedarf einfach auf einen UNO gesteckt werden kann um so die Attiny’s zu programmieren.
Stückliste:
- 1x Arduino Prototype Shield v.5
- 28x Male Pin Header
- 1x Sockel DIP 8 Pin
- 1x Sockel DIP 14 Pin
- 2x Kondensator 66nF
- 1x Elko 220uF
- 2x Drucktaster
- 1x Led 5mm Grün
- 1x Led 5mm Rot
- 2x Widerstand 560 Ohm
Dies sind die Pin Belegungen der beiden Tiny’s:
Das Schaltbild sieht folgendermassen aus:
Die Einzelteile:
Zusammengebaut:
433Mhz Funkkerzen mit dem Arduino schalten
Viele kennen rc-switch die Arduino Library um Funksteckdosen via 433 Mhz zu schalten.
Nun habe ich kürzlich Kerzen gesehen, die auch mit einem Handsender der auf 433 Mhz sendet an- und ausgeschalten werden können. Leider habe ich nirgendwo eine Dokumentation gefunden, wo die Übertragung nachzulesen ist. Auf dem Handsender steht lediglich Typ QL3957 mit dem ich allerdings auch nicht viel anfangen konnte.
Also entschloss ich mich die Codes vom Handsender selber mit einem billigen 433Mhz Receiver und einem digitalen Speicheroszilloskop auszulesen und einen Arduino Sketch zu schreiben.
Für die an- und ausschalt Funktionen habe ich folgende Codesequenzen aufgezeichnet:
Es lässt sich eine Manchester Codierung vermuten und daraus ergibt sich folgende Bit Folge:
Ausschalt Sequenz: 010101010101010100110000 (24 Bit)
Einschalt Sequenz: 010101010101010100000011 (24 Bit)
Die Pulslängen betragen:
Langer Puls: 500 µS
Kurzer Puls: 200 µS
Am Anfang muss ein Low Signal, dass 4080 µS lang ist gesendet werden und am Schluss nochmals das Bit 0.
Mit folgendem Code lassen sich die Kerzen ein und ausschalten (der Code gewinnt sicher keinen Schönheitswettbewerb 🙂 )
#define longPulse 500 #define shortPulse 200 int senderPin = 10; char* CandleOn = "010101010101010100000011"; char* CandleOff = "010101010101010100110000"; void send0() { // Sends a 0 Bit // _ // Waveform: | |__ digitalWrite(senderPin, HIGH); delayMicroseconds(shortPulse); digitalWrite(senderPin, LOW); delayMicroseconds(longPulse); } void send1() { // Sends a 1 Bit // __ // Waveform: | |_ digitalWrite(senderPin, HIGH); delayMicroseconds(longPulse); digitalWrite(senderPin, LOW); delayMicroseconds(shortPulse); } void sendCandleCode(char* code) { for(int i=0;i<3;i++) // send the code 3 times { delayMicroseconds(4080); //wait a minimum of 4080 uS for(int i=0; i< 24;i++) { if(code[i] == '0') send0(); if(code[i] == '1') send1(); } send0(); } } void setup() { pinMode(senderPin, OUTPUT); } void loop() { sendCandleCode(CandleOn); delay(5000); sendCandleCode(CandleOff); delay(5000); }
Synology Diskstation Management via Reverse Proxy mit DSM 5
Update
Gemäss diversen Problemen mit der Weiterleitung via /dsm habe ich den Beitrag abgeändert, so dass eine Subdomain verwendet wird z.B https://ds.domain.tld
Damit sollte es auch keine Konflikte mit den Apache Konfigurationen für PhotoStation etc. mehr geben.
Wer mit eingeschränkten Möglichkeiten im Internet unterwegs ist (z.B vom Firmennetzwerk aus oder Internetcafe) bei dem die Mangement Ports der Synology Diskstation (http:5000 und https:5001) gesperrt sind aber dennoch auf seine Diskstation zugreifen möchte kann dies via Reverse Proxy einfach bewerkstelligen. Dazu wird der eingebaute Apache Webserver in Kombination mit dem Modul mod_proxy verwendet. Auf diese Weise können alle Dienste, welche einen anderen Port als http/80 oder https/443 verwenden angeboten werden.
Ich habe ein ganz einfaches Script geschriben, dass die nötigen Schritte vornimmt.
Damit der Reverse Proxy eingerichtet werden kann muss die Webstation aktiviert sein.
Danach via SSH auf die Diskstation einloggen und folgendes in der Console ausführen
wget -O install_reverseProxy.sh https://www.irbe.ch/wp-content/uploads/scripts/Synology_reverseProxy.sh chmod +x install_reverseProxy.sh nano install_reverseProxy.sh
Bei der Variable URL die eigene eintragen
Nano Editor schliessen mit Ctrl + X, danach y drücken zum überschreiben und mit Enter den Pfad bestätigen
und Script starten mit
./install_reverseProxy.sh rm install_reverseProxy.sh
Source Code des Scripts
#!/bin/sh #You must change this Variable to suit your Hostname #---------------------------------------------------- URL="ds.irbe.ch" #The main URL of the site #---------------------------------------------------- #Normally you do not have to change these variables ReverseProxyFile="/usr/local/etc/reverse_proxy.conf" #Path to the ReverseProxyFile config="/etc/httpd/sites-enabled-user/httpd-ssl-vhost.conf-user" apache="httpd -k" #Create the Reverse Proxy File echo " <IfModule !proxy_module> LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_connect_module modules/mod_proxy_connect.so LoadModule proxy_http_module modules/mod_proxy_http.so </IfModule> NameVirtualHost *:443 <VirtualHost *:443> ServerName $URL SSLEngine On SSLProxyEngine On ProxyRequests Off ProxyVia Off <Proxy *> Order deny,allow Allow from all </Proxy> ProxyPass / https://localhost:5001/ ProxyPassReverse / https://localhost:5001/ </VirtualHost> " > $ReverseProxyFile #Include the Reverse Proxy File in the main apache config file echo "include $ReverseProxyFile" >> $config #Restart the apache service $apache restart
Nun kann der Diskstation Manager via https://ds.domain.tld aufgerufen werden
Das low Budget DIY Media Center Teil 2
Customizing
Zentrale XBMC Library
Achtung: Dieses Feature ist als kompliziert und experimental aufgeführt.
Alle XBMC Instanzen die auf die zentrale Library zugreifen müssen dieselbe Version von XBMC haben!
Da ich mehrere Raspberry Pi’s mit XBMC im Haus habe möchte ich die Library an einem zentralen Ort speichern, damit ich sie nur an einem Ort aktuell halten muss und die «watched» Status überall zur Verfügung habe. Ebenso wird die aktuelle Position in einem Film gespeichert (wenn er beendet wird) und kann dann in einem anderen Zimmer an der Stelle fortgesetzt werden.
Die Lösung dafür heisst: MySQL
Da ich sowiso sämtliche Medien von meinem NAS streame und dieses ohnehin 24/7 online ist war es naheliegend MySQL darauf zu installieren und die XBMC Library zu hosten. Für die XBMC Konfiguration bedeutet das lediglich ein kleiner Eingriff.
Im File (muss von Hand erstellt werden falls noch nicht vorhanden):
nano ~/.xbmc/userdata/advancedsettings.xml
muss foldendes ergänzt werden (wenn das File bereits existiert nur den Text von <videodatabase> bis </videolibrary> kopieren), bei den Tags <host> muss die IP Adresse des MySQL Servers eingetragen werden:
<advancedsettings> <videodatabase> <type>mysql</type> <host>***.***.***.***</host> <port>3306</port> <user>xbmc</user> <pass>xbmc</pass> </videodatabase> <musicdatabase> <type>mysql</type> <host>***.***.***.***</host> <port>3306</port> <user>xbmc</user> <pass>xbmc</pass> </musicdatabase> <videolibrary> <importwatchedstate>true</importwatchedstate> </videolibrary> </advancedsettings>
Der vollständige XBMC Artikel dazu ist hier
Der Infrarot Empfänger
Als Infrarot Empfänger dient mir eine einfach TSOP4838 Diode, welche an den GPIO Pins des Raspberry angeschlossen werden. Für die Verbindung habe ich aus einem alten Computer das Speaker Kabel, welches vom Mainboard zum Gehäuse führt genommen.
]
Harmony Konfiguration
Als Fernbedienung verwende ich eine Logitech Harmony One+. Diese ist etwas komplizierter zum konfigurieren als eine herkömmliche RC6 Infrarot Fernbedienung. Die wichtigesten Punkte:
- XBMC als Microsoft Media Center SE einrichten
- Device Delay Settings für XBMC gemäss Screenshot einstellen
- Device Command Repeat für XBMC gemäss Screenshot einstellen
XBMC Device Typ
Device Delay Settings
Device Command Repeat Settings
Die Lirc Konfiguration
# Please make this file available to others # by sending it to <[email protected]> # # this config file was automatically generated # using lirc-0.9.0-pre1(default) on Thu Jun 6 17:16:50 2013 # # contributed by # # brand: HarmonyOne.conf # model no. of remote control: # devices being controlled by this remote: # begin remote name HarmonyOne.conf bits 13 flags RC6|CONST_LENGTH eps 30 aeps 100 header 2665 860 one 472 414 zero 472 414 pre_data_bits 24 pre_data 0x1BFF83 gap 105899 min_repeat 2 # suppress_repeat 2 # uncomment to suppress unwanted repeats toggle_bit_mask 0x8000 rc6_mask 0x100000000 begin codes KEY_UP 0x1BE1 KEY_LEFT 0x1BDF KEY_DOWN 0x1BE0 KEY_RIGHT 0x1BDE KEY_OK 0x1BDD KEY_BACK 0x1BDC KEY_PAUSE 0x1BE9 KEY_STOP 0x1BE6 KEY_PLAY 0x1BE9 KEY_FASTFORWARD 0x1BEB end codes end remote
Das low Budget DIY Media Center Teil 1
Die Idee XBMC als Media Center auf meinem TV zu verwenden geisterte schon lange in meinem Kopf herum. Was sollte aber als Hardware dienen? Ich hatte diverse Ansprüche wie: lüfterloser Betrieb, kleine Bauform, geringer Stromverbrauch, Infrarot bedienbar, TOSLINK Out etc.
Den Toslink Out benötige ich um Musik von iOS Devices via Media Center auf mein Sound System zu streamen ohne dabei immer den TV anschalten zu müssen.
[column-group]
[column]Nach unzähligen Stunden Testen und Konfigurieren der ATV2 und Dlink BoxeeBox wurde ich per Zufall auf die Raspberry Pi aufmerksam. Das kleine kreditkartengrosse Wunderding ist mit einem 700Mhz ARM11 CPU und 512 MB Ram (Model B Revision2) ausgestattet und lässt sich mit Linux betreiben.
]
Dank des heute 19 Jährigen Sam Nazarko aus London der das Media Center XBMC für die Raspberry Pi portiert hatte (Raspbmc) war für mich die Wahl der Hardware klar, vom fehlenden Toslink abgesehen.
Nun die Schritt für Schritt Anleitung zum Media Center:
Equipement:
- Raspberry Pi Model B Rev 2 (512 MB Ram)
- Micro USB Netzteil 1200mA
- SDHC Memory Card 8GB Class 10
- HDMI Kabel
- Anker 2.4GHz Mini Tastatur und Maus
- Edimax Mini Wireless Adapter
- Raspberry Pi Kühlkörper für CPU, GPU, LAN und Spannungswandler
Installation:
Kühlkörper montieren
Da die Kühlkörper mit einer selbstklebenden Wärmeleitpaste ausgestattet sind ist es relativ einfach diese zu montieren. Einfach die Schutzfolie von der Paste abziehen und den Kühlkörper gut auf das entsprechende Element andrücken.
Raspbmc installieren
SD Card in einen Kartenleser stecken und den entsprechenden Installer ausführen:
Windows
Gemäss Anleitung hier
Linux
wget http://svn.stmlabs.com/svn/raspbmc/testing/installers/python/install.py chmod +x install.py ./install.py
Mac OS
curl -O http://svn.stmlabs.com/svn/raspbmc/testing/installers/python/install.py chmod +x install.py ./install.py
Danach die SD Card in die Raspberry Pi stecken und die Installation fertig laufen lassen.
Weiter zu Teil 2 ->