Hyperion - opensurce odpowiednik ambiligtht
Po ośmiu latach padła mi RPi i zakup nowej w chwili obecnej był nieopłacany.
Postanowiłem to przerobić na miarę posiadanych środków.
Jako źródło obrazu - ESP32_CAM.
Przerobiłem trochę demo CameraWebSerwer.ino (źródła w załączeniu).
CameraWebServer.zip (55,0 KB)
Zmieniłem domyślną rozdzielczość kamery na 320x240 - taka rozdzielczość jest w zupełności wystarczająca i nie powoduje opóźnień.
Dodałem możliwość sterowania urządzeniami prze IR za pomocą url i OTA.
Hyperiona, który analizuje obraz i oblicza kolory średnie dla sterowania ledami postawiłem na docker.
compse yaml:
version: "3.6"
# dostosować
networks:
adrIoT:
external: true
name: "adrIoT"
services:
hyperion-ng:
cap_drop:
- "AUDIT_CONTROL"
- "BLOCK_SUSPEND"
- "DAC_READ_SEARCH"
- "IPC_LOCK"
- "IPC_OWNER"
- "LEASE"
- "LINUX_IMMUTABLE"
- "MAC_ADMIN"
- "MAC_OVERRIDE"
- "NET_ADMIN"
- "NET_BROADCAST"
- "SYSLOG"
- "SYS_ADMIN"
- "SYS_BOOT"
- "SYS_MODULE"
- "SYS_NICE"
- "SYS_PACCT"
- "SYS_PTRACE"
- "SYS_RAWIO"
- "SYS_RESOURCE"
- "SYS_TIME"
- "SYS_TTY_CONFIG"
- "WAKE_ALARM"
container_name: "hyperion-ng"
entrypoint: ["/bin/sh", "-c", "while [ ! -e /dev/video9 ]; do echo 'Czekam na /dev/video9...'; sleep 2; done; exec /usr/bin/hyperiond"]
devices:
- "/dev/video9:/dev/video9"
dns:
- "8.8.8.8"
# entrypoint:
# - "/usr/bin/hyperiond"
environment:
- "TZ=Europe/Warsaw"
- "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
- "APP_NAME=Hyperion.NG"
hostname: "hyperion"
image: "sirfragalot/hyperion.ng:latest"
logging:
driver: "json-file"
options: {}
# networks:
# - "adrIoT"
#dostosować
networks:
adrIoT:
ipv4_address: 192.168.X.XXX
ports:
- "19444:19444/tcp"
- "19445:19445/tcp"
- "8090:8090/tcp"
privileged: true
restart: "always"
security_opt:
- "label=disable"
#dostosować
volumes:
- "/home/kontenery/hyperion:/root/.hyperion"
Obliczone kolory wysyła do taśmy LED NeoPixlel, sterowanej przez ESP32 z zainstalowanym WLED
https://kno.wled.ge/
Kamera zainstalowana jest naprzeciw TV - nie jest to warunek konieczny ponieważ Hyperion radzi sobie z trapezem.
Mam kino domowe sterowane tylko przez IR więc przerobiłem moduł ESP32-CAM.
Wylutowałem LED Flash i w to miejsce wlutowałem nadajnik IR (z opornikiem 22ohm).
Sterowanie jest z użyciem biblioteki IRRemoteESP8266.
Blokowo to wygląda tak:
ESP32-CAM+IR ----> Hyperion (docker) ----> ESP32 WLED
Ponieważ zainteresowanie może być zerowe - a sam jestem leniwy -ograniczyłem się tylko do podstawowych informacji. jeśli będzie potrzeba to rozwinę. Najwięcej zabawy było z utworzeniem kamery wirtualnej na host dockera.
