Ein Nanopi Neo Air steuert das Licht mehrerer Lampen und erkennt die Anwesenheit von Bluetoothgeräten. Bei Anwesenheit bestimmter Blutetoothgeräte und Dunkelheit werden die Lampen auf 15% gedimmt eingeschalten. Beim Auslösen eines Bewegungsmelders werden die Lampen im entsprechenden Umfeld auf 100% hochgeschalten. Zusätzlich ist ein Doppelwippschalter über EnOcean eingebunden, welcher eine der Lampen schalten kann. Wird über den EnOcean-Taster eine Lampe eingeschalten so übersschreibt dies die Voreinstellungen der Lampe nach Bluetoothanwesenheit, Helligkeit und Bewegungsmeldungen. ==== EnOcean ==== Verwendung mit EnOcean Pi 868 und Doppelwippschalter. Tastenbezeichnung: 1 | 3 ---+--- 2 | 4 |Taste 1|Licht 1+2 an 100%| |Taste 2|Licht 1+2 aus| |Taste 3|Licht Terasse an 100%, 70%, 50%| |Taste 4|Licht Terasse aus| |Tasten 2+4|Licht 1+2 auf 100% und nach 2 Minuten ausschalten| |Tasten 1+3|Shutdown/Poweroff| ==== Bluetooth ==== in Armbian-config bluetooth enabled wget https://bootlin.com/pub/mirror/devmem2.c gcc -o devmem2 devmem2.c param_uart3_rtscts=1 sudo ln -s /lib/firmware /etc/firmware libbluetooth-dev installieren Aufgerufen in /etc/rc.local: #!/bin/sh /etc/scripte/devmem2/devmem2 0x1f00060 b 1 echo 205 > /sys/class/gpio/export echo out > /sys/class/gpio/gpio205/direction echo 0 > /sys/class/gpio/gpio205/value echo 1 > /sys/class/gpio/gpio205/value sleep 0.2 echo -en "" > /dev/ttyS3 sleep 1 /usr/bin/hciattach /dev/ttyS3 bcm43xx 1500000 === enocean.service === /etc/systemd/system/enocean.service [Unit] Description=Enocean After=manage_pwm.service network.target bluetooth.service [Service] Type=simple ExecStartPre=/bin/sleep 20 ExecStart=/home/USER/enocean/read_enocean_bluetooth > /tmp/enocean.log 2>&1 & [Install] WantedBy=multi-user.target gcc read_enocean_bluetooth_le.c -lbluetooth -pthread -o read_enocean_bluetooth -pedantic Der enocean.service scannt nach bekannten Bluetoothgeräten, erkennt Eingaben über den Taster sowie Aktionen an den Bewegungsmeldern (indem er /tmp/gpio/gpio/(A/B)/X ausliest) und steuert dementsprechend das Licht und/oder sonstige Reaktionen. Zur Steuerung des Lichts werden die Prozentwerte, mit denen die Lampe X leuchten soll nach /tmp/gpio/pwm/X geschrieben. === manage_pwm.service === gcc manage_pwm.c -pthread -o manage_pwm -pedantic Der Dienst manage_pwm kümmert sich um das Auslesen der GPIO des MCP23017 und das Steuern der PWM des PCA9685. Dazu liest er die Prozentwerte unter /tmp/gpio/pwm/x aus, steuert entsprechend PWM x des PCA9685 und liest die Zustände an den Ports des MCP23017 und schreibt diese nach /tmp/gpio/gpio/Port/Pin. ==== MCP23017 ==== Der MCP23017 ist für das Auslesen des Helligkeitssensors und der PIR-Bewegungsmelder zuständig. Es können bis zu 16 Geräte angeschlossen und gesteuert werden. /tmp/gpio/gpio/A/0 ^Port/Pin^Verwendung^Port/Pin^Verwendung^ |B0|helligkeit |A7|PIR/Bewegung | |B1| |A6|PIR/Bewegung innen | |B2| |A5| | |B3| |A4| | |B4| |A3| | |B5| |A2| | |B6| |A1| | |B7| |A0| | ==== PCA9685 ==== Über den PCA9685 werden die angeschlossenen Lampen geschalten und gedimmt. /tmp/gpio/pwm/0 ^PWM^Verwendung^ |0|licht1| |1|licht2| |2|licht innen| ==== Bewegungsmelder ==== ===Mini IR AM312=== * Betriebsspannung ab 3.3 V * keine Einstellmöglichkeiten ===HC-SR501 PIR Infrarot-Modul=== * Betriebsspannung 5V-20V, aber auch mit 3,3V verwendbar. Stromversorgung dann über den meist vorhandenen Pin * Empfindlichkeit (wenn PIR nach unten zeigt links) gegen Uhrzeigersinn zunehmende Empfindlichkeit (3-7m) * Schaltdauer (wenn PIR nach unten zeigt rechts) im Uhrzeigersinn zunehmende Zeitspanne (3s bis 5min) TTL 3.3 V ==== Spannungsversorgung==== Mean Well HDR-60-12 Hutschienen-Netzteil (DIN-Rail) 12 V/DC 4.5 A 54 W Lampen: 12V, 0,4A, 2,5 W I2C_0 3 SDA 5 SCL I2C_1 8 PCM0_SYNC SCK 9 PCM0_CLK SDA