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: 13004
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.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Antworten