removed zeroconf for now, may be added back later, closes #8
added avahi service configuration file some small improvments
This commit is contained in:
15
ledd.service
Normal file
15
ledd.service
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
<?xml version="1.0" standalone='no'?><!--*-nxml-*-->
|
||||||
|
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
|
||||||
|
|
||||||
|
<!-- Place this file in /etc/avahi/services/ for your clients to find the daemon -->
|
||||||
|
|
||||||
|
<service-group>
|
||||||
|
|
||||||
|
<name>LedD Daemon</name>
|
||||||
|
|
||||||
|
<service>
|
||||||
|
<type>_ledd._tcp</type>
|
||||||
|
<port>1425</port>
|
||||||
|
</service>
|
||||||
|
|
||||||
|
</service-group>
|
@@ -23,9 +23,7 @@ import sys
|
|||||||
import traceback
|
import traceback
|
||||||
import time
|
import time
|
||||||
import asyncio
|
import asyncio
|
||||||
|
|
||||||
import spectra
|
import spectra
|
||||||
from zeroconf import Zeroconf, ServiceInfo
|
|
||||||
|
|
||||||
from ledd import controller, VERSION
|
from ledd import controller, VERSION
|
||||||
from ledd.decorators import ledd_protocol
|
from ledd.decorators import ledd_protocol
|
||||||
@@ -57,10 +55,6 @@ class Daemon:
|
|||||||
except FileNotFoundError:
|
except FileNotFoundError:
|
||||||
log.info("No config file found!")
|
log.info("No config file found!")
|
||||||
|
|
||||||
# create zeroconf service info
|
|
||||||
self.zinfo = ServiceInfo("_ledd._tcp.local.", "LedD Daemon._ledd._tcp.local.",
|
|
||||||
port=self.config.get(self.daemonSection, 'port', fallback=1425))
|
|
||||||
|
|
||||||
# SQL init
|
# SQL init
|
||||||
self.sqldb = sqlite3.connect(self.config.get(self.databaseSection, 'name', fallback='ledd.sqlite'))
|
self.sqldb = sqlite3.connect(self.config.get(self.databaseSection, 'name', fallback='ledd.sqlite'))
|
||||||
self.sqldb.row_factory = sqlite3.Row
|
self.sqldb.row_factory = sqlite3.Row
|
||||||
@@ -75,9 +69,6 @@ class Daemon:
|
|||||||
log.debug(self.controllers)
|
log.debug(self.controllers)
|
||||||
logging.getLogger("asyncio").setLevel(logging.DEBUG)
|
logging.getLogger("asyncio").setLevel(logging.DEBUG)
|
||||||
|
|
||||||
# announce server to network
|
|
||||||
self.register_zeroconf()
|
|
||||||
|
|
||||||
# main loop
|
# main loop
|
||||||
self.loop = asyncio.get_event_loop()
|
self.loop = asyncio.get_event_loop()
|
||||||
coro = self.loop.create_server(LedDProtocol,
|
coro = self.loop.create_server(LedDProtocol,
|
||||||
@@ -87,7 +78,6 @@ class Daemon:
|
|||||||
self.loop.run_forever()
|
self.loop.run_forever()
|
||||||
except (KeyboardInterrupt, SystemExit):
|
except (KeyboardInterrupt, SystemExit):
|
||||||
log.info("Exiting")
|
log.info("Exiting")
|
||||||
self.deregister_zeroconf()
|
|
||||||
self.sqldb.close()
|
self.sqldb.close()
|
||||||
self.server.close()
|
self.server.close()
|
||||||
self.loop.run_until_complete(self.server.wait_closed())
|
self.loop.run_until_complete(self.server.wait_closed())
|
||||||
@@ -127,24 +117,6 @@ class Daemon:
|
|||||||
c.close()
|
c.close()
|
||||||
self.check_db()
|
self.check_db()
|
||||||
|
|
||||||
def register_zeroconf(self):
|
|
||||||
try:
|
|
||||||
zeroconf = Zeroconf()
|
|
||||||
zeroconf.register_service(self.zinfo)
|
|
||||||
log.info("Registered ledd daemon with zeroconf")
|
|
||||||
except OSError as e:
|
|
||||||
log.warning("Failed to register service with ZeroConf: %s", e)
|
|
||||||
pass
|
|
||||||
|
|
||||||
def deregister_zeroconf(self):
|
|
||||||
try:
|
|
||||||
zeroconf = Zeroconf()
|
|
||||||
zeroconf.unregister_service(self.zinfo)
|
|
||||||
log.info("Unregistered ledd daemon with zeroconf")
|
|
||||||
except OSError as e:
|
|
||||||
log.warning("Failed to deregister service with ZeroConf: %s", e)
|
|
||||||
pass
|
|
||||||
|
|
||||||
@ledd_protocol(protocol)
|
@ledd_protocol(protocol)
|
||||||
def start_effect(self, req_json):
|
def start_effect(self, req_json):
|
||||||
"""
|
"""
|
||||||
|
2
setup.py
2
setup.py
@@ -25,6 +25,6 @@ setup(name='LedD',
|
|||||||
license='GPLv3',
|
license='GPLv3',
|
||||||
packages=['ledd'],
|
packages=['ledd'],
|
||||||
install_requires=[
|
install_requires=[
|
||||||
'nose', 'spectra', 'zeroconf',
|
'nose', 'spectra',
|
||||||
],
|
],
|
||||||
zip_safe=False)
|
zip_safe=False)
|
||||||
|
11
start.py
11
start.py
@@ -15,6 +15,9 @@
|
|||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
import ledd.daemon
|
||||||
|
import sys
|
||||||
|
import os
|
||||||
|
|
||||||
from pkgutil import iter_modules
|
from pkgutil import iter_modules
|
||||||
|
|
||||||
@@ -41,15 +44,9 @@ if "smbus" not in (name for loader, name, ispkg in iter_modules()):
|
|||||||
SMBus = SMBus
|
SMBus = SMBus
|
||||||
|
|
||||||
|
|
||||||
import sys
|
|
||||||
|
|
||||||
sys.modules['smbus'] = SMBusModule
|
sys.modules['smbus'] = SMBusModule
|
||||||
sys.modules['smbus'].SMBus = SMBus
|
sys.modules['smbus'].SMBus = SMBus
|
||||||
|
|
||||||
import ledd.daemon
|
|
||||||
import sys
|
|
||||||
import os
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
logging.basicConfig(level=logging.DEBUG,
|
logging.basicConfig(level=logging.DEBUG,
|
||||||
format="[%(asctime)s] %(levelname)s [%(name)s.%(funcName)s:%(lineno)d] %(message)s",
|
format="[%(asctime)s] %(levelname)s [%(name)s.%(funcName)s:%(lineno)d] %(message)s",
|
||||||
@@ -71,4 +68,4 @@ if __name__ == "__main__":
|
|||||||
else:
|
else:
|
||||||
sys.exit()
|
sys.exit()
|
||||||
except OSError as e:
|
except OSError as e:
|
||||||
log.fatal("Forking failed: %s", os.strerror(int(str(e))))
|
log.fatal("Start failed: %s", e)
|
||||||
|
Reference in New Issue
Block a user