71 lines
1.4 KiB
Python
71 lines
1.4 KiB
Python
import paho.mqtt.client as mqtt
|
|
import ssl
|
|
from threading import Thread
|
|
from daemonize import Daemonize
|
|
import redis
|
|
import time
|
|
import signal
|
|
import sys
|
|
import os
|
|
|
|
|
|
|
|
def sigint_handler(signal, frame):
|
|
print 'Interrupted'
|
|
sys.exit(0)
|
|
os._exit(0)
|
|
|
|
|
|
def on_connect(client, userdata, flags, rc):
|
|
print("Connected with result code "+str(rc))
|
|
client.subscribe("$SYS/#")
|
|
|
|
|
|
|
|
def on_publish(client, userdata, mid):
|
|
pass
|
|
|
|
|
|
|
|
def getRedis(i, client):
|
|
r = redis.StrictRedis(host='localhost', port=6379, db=0)
|
|
while 1:
|
|
time.sleep(0)
|
|
data = r.brpop("events", 10)
|
|
if data:
|
|
info = data[1].split('|')
|
|
print "Channel: " + info[0] + " message: " + info[1]
|
|
client.publish(info[0], info[1])
|
|
|
|
|
|
|
|
def sigint_handler(signal, frame):
|
|
print 'Interrupted'
|
|
sys.exit(0)
|
|
|
|
|
|
def main():
|
|
client = mqtt.Client()
|
|
client.on_connect = on_connect
|
|
client.on_publish = on_publish
|
|
|
|
|
|
|
|
client.tls_set(
|
|
"/etc/letsencrypt/live/resqaws.jankstudio.com/fullchain.pem", cert_reqs=ssl.CERT_NONE,
|
|
tls_version=ssl.PROTOCOL_TLSv1)
|
|
|
|
client.connect("resqaws.jankstudio.com", 8883, 60)
|
|
t = Thread(target=getRedis, args=(1, client))
|
|
|
|
t.start()
|
|
|
|
signal.signal(signal.SIGINT, sigint_handler)
|
|
client.loop_forever()
|
|
|
|
|
|
|
|
#pid = "/tmp/mqtt_sender.pid"
|
|
#daemon = Daemonize(app="mqtt_sender", pid=pid, action=main)
|
|
#daemon.start()
|
|
main()
|