diff --git a/src/Makefile b/src/Makefile new file mode 100644 index 0000000..9e7eb5a --- /dev/null +++ b/src/Makefile @@ -0,0 +1,11 @@ +dist/energenie: energenie_cmd virtualenv + .env/bin/pyinstaller -F energenie_cmd + +install: dist/energenie + install dist/energenie_cmd /usr/local/bin/energenie + +virtualenv: .env/bin/activate +.env/bin/activate: requirements.txt + test -d .env || virtualenv --python=python2 .env + .env/bin/pip install -q -r requirements.txt + touch .env/bin/activate diff --git a/src/energenie/drv/gpio_rpi.c b/src/energenie/drv/gpio_rpi.c index f57a9a5..9d90866 100644 --- a/src/energenie/drv/gpio_rpi.c +++ b/src/energenie/drv/gpio_rpi.c @@ -74,7 +74,7 @@ /* open /dev/mem */ - if ((mem_fd = open("/dev/mem", O_RDWR|O_SYNC) ) < 0) + if ((mem_fd = open("/dev/gpiomem", O_RDWR|O_SYNC) ) < 0) { printf("can't open /dev/mem \n"); exit(-1); //TODO return a result code diff --git a/src/energenie/drv/radio_rpi.so b/src/energenie/drv/radio_rpi.so index b18de90..2248a31 100755 --- a/src/energenie/drv/radio_rpi.so +++ b/src/energenie/drv/radio_rpi.so Binary files differ diff --git a/src/energenie/radio.py b/src/energenie/radio.py index 56e08cb..05d94f2 100644 --- a/src/energenie/radio.py +++ b/src/energenie/radio.py @@ -28,7 +28,8 @@ DEBUG = False -libradio = ctypes.cdll.LoadLibrary(mydir + "/" + LIBNAME) +#libradio = ctypes.cdll.LoadLibrary(mydir + "/" + LIBNAME) +libradio = ctypes.cdll.LoadLibrary("radio_rpi.so") radio_init_fn = libradio["radio_init"] radio_reset_fn = libradio["radio_reset"] radio_get_ver_fn = libradio["radio_get_ver"] diff --git a/src/energenie_cmd b/src/energenie_cmd new file mode 100755 index 0000000..cb56eba --- /dev/null +++ b/src/energenie_cmd @@ -0,0 +1,24 @@ +#!/bin/env python + +import energenie +import argparse + +parser = argparse.ArgumentParser(description='Control Energenie sockets/lights') +parser.add_argument('action', choices=['on', 'off']) +parser.add_argument('device') + +args = parser.parse_args() + +energenie.init() +energenie.registry.load_from('/etc/energenie') +device = energenie.registry.get(args.device) +if device != None: + if args.action == 'on': + device.turn_on() + else: + device.turn_off() + energenie.finished() +else: + energenie.finished() + parser.error("Device '%s' not found." % args.device) + diff --git a/src/requirements.txt b/src/requirements.txt new file mode 100644 index 0000000..ef376ca --- /dev/null +++ b/src/requirements.txt @@ -0,0 +1 @@ +pyinstaller