MQTT mit python am Raspberry

Python auf Einplatinencomputer wie Raspberry Pi, Banana Pi / Python für Micro-Controller
Antworten
frasche06347
User
Beiträge: 1
Registriert: Sonntag 27. Dezember 2020, 17:55

Hallo,
ich möchte an einem Raspberry Zero mehrere Bewegungsmelder anschließen und eine Bewegung per MQTT an einen Broker weiterleiten.
Dazu habe ich ein Beispiel-Script umgebaut, mit einem Bewegungsmelder klappt es:

************************************************************************************
import RPi.GPIO as GPIO
import time
import datetime
import os

#Board Mode: Angabe der GPIO-Nummer
GPIO.setmode(GPIO.BCM)

#GPIO Pin definieren fuer den Dateneingang vom Sensor
PIR_GPIO = 14
GPIO.setup(PIR_GPIO, GPIO.IN)

def MOTION(PIR_GPIO):
# Bewegung erkannt
os.system('mosquitto_pub -h 192.168.0.100 -m true -t /smarthome/Bewegungsmelder1 -u admin -P kennwort')
time.sleep(1)
os.system('mosquitto_pub -h 192.168.0.100 -m false -t /smarthome/Bewegungsmelder1 -u admin -P kennwort')

try:
GPIO.add_event_detect(PIR_GPIO, GPIO.RISING, callback=MOTION)
while 1:
time.sleep(60)
except KeyboardInterrupt:
GPIO.cleanup()
************************************************************************************

Wie muss ich das Scipt jetzt umbauen, um mehrere Bewegungsmelder zu überwachen und jeweils eine andere MQTT-Nachricht zusenden?
Bewegungsmelder1 an GPIO14 ... Nachricht: /smarthome/Bewegungsmelder1 auf "true" ... nach einer Sekunde auf "false"
Bewegungsmelder2 an GPIO15 ... Nachricht: /smarthome/Bewegungsmelder2 auf "true" ... nach einer Sekunde auf "false"
Bewegungsmelder3 an GPIO16 ... Nachricht: /smarthome/Bewegungsmelder3 auf "true" ... nach einer Sekunde auf "false"

Ich bin blutiger python-Newbie ;-(( .... ich weis leider nicht, wie ich das umsetzen muss.
Gibt es jemand der mir helfen kann?

Vielen Dank.

Viele Grüße
Frank
Benutzeravatar
__blackjack__
User
Beiträge: 14325
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@frasche06347: Das würde ich gar nicht umbauen, das müsste man eh von Grund auf neu schreiben. Mit `gpiozero` statt `RPi.GPIO` und beispielsweise `paho-mqtt` statt irgendwelche externen Programme, dann auch noch mit `os.system()` zu starten.
„Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.“ — Brian W. Kernighan
Antworten