Я запускаю простой скрипт на Python на Raspberry Pi, подписываюсь на тему MQTT для включения и выключения света.
import RPi.GPIO as GPIO
import context
import paho.mqtt.client as mqtt
import paho.mqtt.publish as publish
import time
time.sleep(30)
host="192.168.1.25"
clientID="RPiZero"
topic="bedroom/lighting"
# Set GPIO pins
# Lights
GPIO.setmode(GPIO.BCM)
GPIO.setup(17, GPIO.OUT)
GPIO.setup(22, GPIO.OUT)
GPIO.setup(27, GPIO.OUT)
GPIO.setup(23, GPIO.OUT)
GPIO.setup(24, GPIO.OUT)
GPIO.setup(25, GPIO.OUT)
# Set GPIO states
GPIO.output(17, GPIO.LOW)
GPIO.output(22, GPIO.LOW)
GPIO.output(27, GPIO.LOW)
GPIO.output(23, GPIO.LOW)
GPIO.output(24, GPIO.LOW)
GPIO.output(25, GPIO.LOW)
client=mqtt.Client(clientID)
client.connect(host)
client.subscribe(topic)
message=""
def on_message(client, userdata, message):
message=str(message.payload.decode("utf-8"))
#every light
if message=="aan":
GPIO.output(17, GPIO.HIGH)
GPIO.output(22, GPIO.HIGH)
GPIO.output(27, GPIO.HIGH)
GPIO.output(23, GPIO.HIGH)
GPIO.output(24, GPIO.HIGH)
GPIO.output(25, GPIO.HIGH)
elif message=="uit":
GPIO.output(17, GPIO.LOW)
GPIO.output(22, GPIO.LOW)
GPIO.output(27, GPIO.LOW)
GPIO.output(23, GPIO.LOW)
GPIO.output(24, GPIO.LOW)
GPIO.output(25, GPIO.LOW)
#individual lights
if message=="bedaan":
GPIO.output(24, GPIO.HIGH)
GPIO.output(25, GPIO.HIGH)
elif message=="beduit":
GPIO.output(24, GPIO.LOW)
GPIO.output(25, GPIO.LOW)
if message=="hoekaan":
GPIO.output(17, GPIO.HIGH)
GPIO.output(27, GPIO.HIGH)
elif message=="hoekuit":
GPIO.output(17, GPIO.LOW)
GPIO.output(27, GPIO.LOW)
client.on_message=on_message
client.loop_forever()
loop_flag=1
counter=0
while loop_flag==1:
time.sleep(0.1)
counter+=1
time.sleep(4)
# Clean up GPIO
GPIO.cleanup()
Скрипт запускается как служба systemd и отлично работает примерно12 часов, после чего служба все еще заявляет, что она загружена:
● receiver.service - Openhab Receiver
Loaded: loaded (/lib/systemd/system/receiver.service; enabled; vendor preset:
Active: active (running) since Fri 2019-10-18 01:35:24 CEST; 13h ago
Main PID: 421 (python)
Memory: 10.0M
CGroup: /system.slice/receiver.service
└─421 /usr/bin/python /home/pi/paho.mqtt.python/examples/receiver.py
Oct 18 01:35:24 raspberrypi systemd[1]: Started Openhab Receiver.
Однако индикаторы больше не отвечают. Я застрял в том, как бы я решил эту проблему, не зная, с чего начать, или что-то еще делать. Насколько я знаю, это может быть проблема с памятью, что-то не так с циклом или что-то совершенно другое. Все советы по способам устранения этой проблемы будут с благодарностью.