Make Ceiling Lights great again


Original work by: xro

  • 6 Ceiling lights
    • 4 neon lights
    • 2 LED strip neon replacements
  • 2 5-wire 230V cables connect the lights to a self-made relay box
  • Each ceiling light
    • shares Earth and N
    • has it's separate L
  • relay box contains
    • 1x 4-channel opto-isolator relay 5V/230V , switchable with 3.3V IO, pull low to GND to switch
    • 1x 2-channel opto-isolator relay 5V/230V , switchable with 3.3V IO, pull low to GND to switch
  • Lasercut-Box with Light-Switches on wall
    • offers 6 2-way up/down switches
    • offers 3 push-buttons
    • --> 15 buttons
    • contains Teensy 3.0 µC (??)
    • contains RF433 transmitter
  • Teensy µC
    • reads 15 buttons
    • controls RF433 tx
    • has 6 unused gpio prepared to switch ceiling light directly
    • firmware takes rf433 cmds on /dev/ttyACM0
    • firmware reports buttons and takes gpio-to-set-states on /dev/ttyACM1
    • firmware also switches currently unconnected gpio directly
  • Relay-Box is connected to RaspberryPi1's GPIOS running as
    • 5V to VDD
    • 3V3 to VCC
    • gpio4, gpio23, gpio18, gpio17, gpio22, gpio21
  • RaspberryPi1
    • installed in carton box on shelf above passage
    • powered by USB-Multi-Charger
    • runs golightctrl
      • switches ceiling lights via GPIO
      • which provides Webserver to switch lights
      • reads Buttons from teensy
      • knows ceiling light states from GPIO
      • sends RF433 cmds directly via teensy or sends request to send to arduino on mursat shelf via MQTT

Current Problems

  • if raspberryPi1 dies or has problems, light can not be switched
  • teensy Firmware logic for gpios LOW == ON needs to be changed
  • switching ceiling light power on/off is probably not as quick or nice-to-look-at as having planned ESP8266 based H801 do it

Working on it: xro

Plan is to replace all the power-sucking neon-ceiling-lights with LED strip lights. Furthermore white-light color-temperature should be adjustable. For party and effect purposes the ceiling lights should be dialable to any colour. To accomplish this, 2 LED strips will be installed in each ceiling light. 2.5m RGB+CoolWhite and 3m WarmWhite LED Strip for each light. They will be controled with a ESP8266 based H801 for each light. Thus we can choose colour and white-colour-temp for each light.


Status: All materials bought, H801 deilvered, awaiting delivery of LEDs and power supplies


  1. (done) verify H801 can be flashed with Sming firmware
  2. (skipped) connect 2.5m RGB-CW and 3m WW LEDs to H801 and test with default firmware
  3. (done) Measure power consumption of LED-Driver
    • power consumption in soft-off (H801 stays powered): ~0.36W
    • power consumption in all-on: 62.4W
    • 10m ColdWhite, max duty: 29.1W
    • 10m Blue, max duty: 28.7W
    • 10m Red, max duty: 35.6W
    • 10m Green, max duty: 25W
    • 10m RGB, max duty: 59.8W
    • 10m RGB+CW, max duty, 5m each on a 74W Powersupply: 66.6W (Netzteile am Anschlag)
    • 10m WarmWhite, max duty, 5m each on a74W Powersupply: 61.4W (Netzteile am Anschlag)
    • 10m RGB+CW+WW, Strip1+2,max duty, 5m each on a 74W Powersupply: 124W (Netzteile am Anschlag)
    • 5m RGB on Powersupply1 + 5m CW on Powersupply2: 74W
    • 5m RGB on Powersupply1 (74W) + 5m CW+WW on Powersupply2 (74W): 44.4W
    • 5m RG+WW on Powersupply1 (74W) + 5m B+CW on Powersupply2 (74W): 76W
    • --> RGB+CW Strip1 pro Meter: max(44.4/5,66.6/10)=max(8.88,6.66) = 8.88W/m
    • --> WW Strip2 pro Meter: 61.4W/10 = 6.1W/m
    • RGB+CW Strip1 60LED/m laut Verkäufer: 11.52W/m
    • WW Strip2 60LED/m laut Verkäufer: 14.4w/m
  4. (done)test WIFI reception of H801 in ceiling light without installing it permanently. Test various possibly installation locations to improve WIFI reception. e.g. put H801 outside light-metal-casing and under gypsum-ceiling plates or outside light-metal-casing and visible next to light.
    • tested in Leinwand/Mitgliederregal Ceiling Light, which is known to have worst WiFi reception from years ago TP-link Test.
      Works Flawlessly :)
  5. (done) reflash and write new trusted firmware for H801, so that it can be controlled via MQTT and remembers a default light-setting

    • see HackADay-Artikle
    • see OpenSource Firmware for H801
    • see esp8266 Forum
    • see Protocol Documentation
    • see Ready Made MQTT Firmware
    • (check) use Sming
    • (check) use Sming new PWM Lib with compile flag
    • (done) on power-on default-light setting is used
    • (done) MQTT commands
      • action/ceilingN/light {"r":int, "g":int, "b":int, "cw":int, "ww":int} | N={1..6,All}, int={0..1000}
      • optional: "flash":True or "flash":{"repetitions":x, "cc":[topic2, topic3, ...]}
      • optional: "fade":True or "fade":{"duration":ms, "cc":[topic2, topic3, ...]}
      • specifiyng cc will forward the json message to the next topic in the list after the effect has finished or was interrupted
      • action/ceilingN/defaultlight {"r":int, "g":int, "b":int, "cw":int, "ww":int} | N={1..6,All}, int={0..1000}
    • (done) provide backup interface. e.g. telnet
    • (done) backup telnet interface
  6. (done) test in dry state

    • startup behaviour: PWM pins start in INPUT direction, all channels except R- light up for 700ms \ --> prefer solution where H801 soft-disables the LEDs and itself stays powered versus being powered on/off constantly
    • startup behaviour: configured default light state apply's really fast after about y1.4s (not after blinking due to INPUT direction though)
    • WIFI connection (with DHCP) works really fast. takes about <=6s
    • MQTT works really well
    • Telnet configuration works really well
    • spiffs flash-time pre-configuration works really well 4.(done) test in indirect ceiling illumination configuration
    • Strip1 (RGB+CW) width: 12mm
    • Strip2 (WW) width: 9.5mm
    • all in all not bright enough for that and not diffuse enough
  7. (done) test in ceiling light enclosure
    • WIFI works really well, surprisingly no problem
  8. (done) Testinstall one in ceiling light
    • installed in middle-membeshelp light. Splice power from Lasercutter CeilingLight
    • 3m Warm White (6 individul strips)
    • 2.5m RGB+Coldwhite (6 individual strips)
    • Things learned
    • prefer splice WarmWhite from VCC, not from V+ where it passes the PCB
    • Red and Green is switched on RGB+CW Strip
    • vor-Auflegen funktioniert nicht gut -> aufzeichnen
    • use 12mm 5pin clip-connectors for 12mm wide 5pin RGBW Led strip (not 10mm) -> ordered 12mm
    • some connector cables are too short -> need to be extended --> ordered longer ones
    • use extra double sided tape at ends
    • cut closer to 55cm than 60cm, keep away from edges light wise
    • keep switching power supplies away from WiFi H801
    • WarmWhite Strip needs to split. Looses brightness after 1.5m -> T-Connectors ordered
    • arrange power supply in corner of edges, where they don't cast shadow if possible
    • arrange H801 in center when possible
  9. (almost done) change golightctrl so it can control H801
  10. (1/6 done) install in ceiling lights
  11. put CW-LEDs currently in one ceiling lights into MaSha
    WW-LEDs in all Ceiling lights as Simple-Light RGB+CW+WW-Fancy-Lights int all Ceiling lights
  12. modify 20W RGB+WW Flodding Lights with H801 and indirectly illuminate ceiling

Plan: separate lights which work really really reliably

Working on it: equinox

Status: WIP


  1. (1/6 done) install Tanbaby LED Lights in Ceiling Lights
  2. (presumably done) write firmware for Teensy2.0
  3. (almost done) create enclosure with Teensy2.0 and buttons
  4. install and connect power
  5. interface with RasperryPi in a way that
    • Raspberry can switch lights
    • Teensy2.0 does not depend on Raspberry power
    • Raspberry and Teensy2.0 can be disconnected from each other / from power in case of error on each
realraum Graz, Brockmanngasse 15, 8010 Graz, realraum - Verein für Technik in Kultur und Gesellschaft
  • /var/lib/dokuwiki/data/pages/roomauto/
  • Last modified: 2017-02-15 14:19
  • by xro