83 lines
2.2 KiB
Python
Executable File
83 lines
2.2 KiB
Python
Executable File
import mosquitto
|
|
import os
|
|
import urlparse
|
|
|
|
# External module imports
|
|
import RPi.GPIO as GPIO
|
|
import time
|
|
|
|
led = 12
|
|
MQTT_SERVER = "x.x.x.xxx"
|
|
MQTT_SERVER_PORT = xxx
|
|
MQTT_TOPIC = "/home/tv/backlight"
|
|
MQTT_USERNAME = "mosquitto"
|
|
MQTT_PASSWORD = "xxx"
|
|
|
|
# Pin Setup:
|
|
GPIO.setmode(GPIO.BOARD)
|
|
GPIO.setwarnings(False)
|
|
GPIO.setup(led, GPIO.OUT)
|
|
|
|
# Define event callbacks
|
|
def on_connect(mosq, obj, rc):
|
|
print("Return Code On Connect: " + str(rc))
|
|
|
|
def on_message(mosq, obj, msg):
|
|
print(msg.topic + " " + str(msg.qos) + " " + str(msg.payload))
|
|
if (str(msg.payload) == "on" or str(msg.payload) == "ON"):
|
|
#os.system('python on.py')
|
|
GPIO.output(led, GPIO.LOW)
|
|
time.sleep(1)
|
|
else:
|
|
if (str(msg.payload) == "off" or str(msg.payload) == "OFF"):
|
|
#os.system('python off.py')
|
|
GPIO.output(led, GPIO.HIGH)
|
|
time.sleep(1)
|
|
else:
|
|
if (str(msg.payload) == "FLICKER_TV_OFF"):
|
|
for x in range(0, 3):
|
|
GPIO.output(led, GPIO.HIGH)
|
|
time.sleep(0.25)
|
|
GPIO.output(led, GPIO.LOW)
|
|
time.sleep(0.25)
|
|
else:
|
|
if (str(msg.payload) == "FLICKER"):
|
|
for x in range(0, 3):
|
|
GPIO.output(led, GPIO.LOW)
|
|
time.sleep(0.25)
|
|
GPIO.output(led, GPIO.HIGH)
|
|
time.sleep(0.25)
|
|
time.sleep(1.00)
|
|
else:
|
|
print("Unknown command")
|
|
|
|
|
|
def on_subscribe(mosq, obj, mid, granted_qos):
|
|
print("Subscribed: " + str(mid) + " " + str(granted_qos))
|
|
|
|
def on_log(mosq, obj, level, string):
|
|
print(string)
|
|
|
|
mqttc = mosquitto.Mosquitto()
|
|
|
|
# Assign event callbacks
|
|
mqttc.on_message = on_message
|
|
mqttc.on_connect = on_connect
|
|
mqttc.on_subscribe = on_subscribe
|
|
|
|
# Uncomment to enable debug messages
|
|
#mqttc.on_log = on_log
|
|
|
|
# Connect
|
|
mqttc.username_pw_set(MQTT_USERNAME, MQTT_PASSWORD)
|
|
mqttc.connect(MQTT_SERVER, MQTT_SERVER_PORT)
|
|
|
|
# Start subscribe, with QoS level 0
|
|
mqttc.subscribe(MQTT_TOPIC, 0)
|
|
|
|
# Continue the network loop, exit when an error occurs
|
|
rc = 0
|
|
while rc == 0:
|
|
rc = mqttc.loop()
|
|
print("MQTT Return Code: " + str(rc))
|