Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
README.md 2.60 KiB

skyglow

Python program written for the ecoLux project in the ecoTron to periodically set light-intensities of the LED's in the ecoUnits.

  • Parses a file containing the time and light intensities (mlx) for the moon
  • Converts the lightintensities to a DMX-Value (0-255)
  • Sets the moon-LED and 3-lightpollution LED's for each ecounit
  • logs the time and value

This was tested and run on a Raspberry Pi connected via DMX to the LED's in the ecounits. OLA (Open Light Architecture Framework) is used to write to the DMX-Bus.

##Usage##

	skyglow.py

will look for a file called moon in its directory, to extract the intensities of the moon for the current time. Alternatively you can also pass a file as an argument.

	skyglow.py /path/to/moon/file

If everything worked, a line should be added to skyglow.log:

	#date				moon[mlx] moon[dmx]		lightpollution[mlx]
	2020-07-21 15:00:00 	0.05	11	[15, 54, 4, 19, 0, 1, 5, 0, 40, 12, 123, 123]

The indices of the list containing the lightpollution values refer to the number of the ecounits.

##Setup##

###Building OLA###

In order to get a recent version with python support we need to build OLA. See this and this for details.

Install libraries (Python 2.x):

	sudo apt-get install libcppunit-dev libcppunit-1.15-0 uuid-dev pkg-config libncurses5-dev libtool autoconf automake g++ libmicrohttpd-dev libmicrohttpd12 protobuf-compiler libprotobuf-lite17 python-protobuf libprotobuf-dev libprotoc-dev zlib1g-dev bison flex make libftdi-dev libftdi1 libusb-1.0-0-dev liblo-dev libavahi-client-dev python-numpy

Clone repository:

	git clone https://github.com/OpenLightingProject/ola.git ola
	cd ola

Configure for python:

	autoreconf -i
	configure --enable-python-libs

Build Note: Use jobs to speed up the building process

	nJobs=$((`nproc` * 2))
	make -j${nJobs}
	make -j${nJobs} check
	sudo make install
	sudo ldconfig 

Run the daemon:

	olad

###new moonfile### If you acquire a new moonfile, make sure to replace all occurrences of 24:00 to 00:00. Otherwise python will throw an error.

	sed -i 's/24:00/00:00/g' moonfile

###cron### Set up a cronjob to check for new values every minute. Run

	crontab -e

and insert

	PATH=/usr/bin:/path/to/directory/containing/skyglow/
	* * * * * skyglow.py

Check the skyglow.log to see if it gets updated every minute.

	watch -n1 tail skyglow.log