Initial version - ring
This commit is contained in:
parent
c8a86afbd1
commit
f8284b51ef
2
.gitignore
vendored
2
.gitignore
vendored
@ -1,3 +1,5 @@
|
||||
config.py
|
||||
|
||||
# ---> Linux
|
||||
*~
|
||||
|
||||
|
9
.gitmodules
vendored
Normal file
9
.gitmodules
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
[submodule "mqtt"]
|
||||
path = mqtt
|
||||
url = https://git.mount-mockery.de/pylib/mqtt.git
|
||||
[submodule "report"]
|
||||
path = report
|
||||
url = https://git.mount-mockery.de/pylib/report.git
|
||||
[submodule "task"]
|
||||
path = task
|
||||
url = https://git.mount-mockery.de/pylib/task.git
|
26
example_config/config.py
Normal file
26
example_config/config.py
Normal file
@ -0,0 +1,26 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: UTF-8 -*-
|
||||
import os
|
||||
import report
|
||||
|
||||
__BASEPATH__ = os.path.abspath(os.path.dirname(__file__))
|
||||
|
||||
MQTT_USER = "user"
|
||||
MQTT_PASS = "pass"
|
||||
MQTT_SERVER = "host"
|
||||
|
||||
TOPIC = 'topic'
|
||||
PAYLOAD = b'payload'
|
||||
COMMAND = "aplay ring.wav -D plughw:UACDemoV10,0"
|
||||
|
||||
#
|
||||
# Logging
|
||||
#
|
||||
APP_NAME = "exec_command"
|
||||
LOGTARGET = 'stdout' # possible choices are: 'logfile' or 'stdout'
|
||||
LOGLVL = 'DEBUG'
|
||||
|
||||
LOGHOST = 'cutelog'
|
||||
LOGPORT = 19996
|
||||
|
||||
formatter = report.SHORT_FMT
|
49
exec_command.py
Normal file
49
exec_command.py
Normal file
@ -0,0 +1,49 @@
|
||||
import config
|
||||
import logging
|
||||
import mqtt
|
||||
import os
|
||||
import report
|
||||
import task
|
||||
import time
|
||||
|
||||
try:
|
||||
from config import APP_NAME as ROOT_LOGGER_NAME
|
||||
except ImportError:
|
||||
ROOT_LOGGER_NAME = 'root'
|
||||
logger = logging.getLogger(ROOT_LOGGER_NAME).getChild('main')
|
||||
|
||||
|
||||
class exec_command(mqtt.mqtt_client, task.threaded_queue):
|
||||
def __init__(self):
|
||||
self.__block_execution__ = False
|
||||
task.threaded_queue.__init__(self)
|
||||
mqtt.mqtt_client.__init__(self, config.APP_NAME, config.MQTT_SERVER, 1883, config.MQTT_USER, config.MQTT_PASS)
|
||||
self.add_callback(config.TOPIC, self.mqtt_rx)
|
||||
|
||||
def exec_command(self, rt):
|
||||
os.system(config.COMMAND)
|
||||
self.__block_execution__ = False
|
||||
|
||||
|
||||
def mqtt_rx(self, client, userdate, message):
|
||||
if not self.__block_execution__:
|
||||
if message.payload == config.PAYLOAD:
|
||||
logger.debug("Starting execution in background...")
|
||||
self.__block_execution__ = True
|
||||
self.enqueue(5, self.exec_command)
|
||||
else:
|
||||
logger.debug("Execution in progress. Ignoring request...")
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
report.appLoggingConfigure(config.__BASEPATH__, config.LOGTARGET, ((config.APP_NAME, config.LOGLVL), ), fmt=config.formatter, host=config.LOGHOST, port=config.LOGPORT)
|
||||
#
|
||||
ec = exec_command()
|
||||
ec.run()
|
||||
#
|
||||
while True:
|
||||
time.sleep(30)
|
||||
try:
|
||||
ec.join()
|
||||
finally:
|
||||
ec.stop()
|
4
exec_command.sh
Executable file
4
exec_command.sh
Executable file
@ -0,0 +1,4 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
BASEPATH=`dirname $0`
|
||||
$BASEPATH/venv/bin/python $BASEPATH/exec_command.py
|
1
mqtt
Submodule
1
mqtt
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit cf97fa066cdff0e2f7eda0ff4d3c8c0f59c3f2ec
|
1
report
Submodule
1
report
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit 21bac82e0c459ebf6d34783c9249526a657a6bbd
|
1
requirements.txt
Normal file
1
requirements.txt
Normal file
@ -0,0 +1 @@
|
||||
paho-mqtt
|
BIN
sounds/phone-incoming-call.wav
Normal file
BIN
sounds/phone-incoming-call.wav
Normal file
Binary file not shown.
BIN
sounds/suspend-error.wav
Normal file
BIN
sounds/suspend-error.wav
Normal file
Binary file not shown.
1
task
Submodule
1
task
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit 7583bb5f3bd2420c901374ba95b678af6ce88433
|
Loading…
x
Reference in New Issue
Block a user