So Leute,
ich habe mal etwas hin und her gebastelt und eine mögliche Lösung gebaut, die nach ersten Tests funktioniert. Ausgeweitete Tests müssen natürlich noch folgen. Aber der Anfang ist gemacht.
Hier erstmal die Codes:
#!/usr/bin/python
# UDP Server - Script
# Dateiname: udpserv.py
import socket
import sys
import pifacedigitalio as p
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
p.init()
# Ausgänge mit "Namen" versehen, da das einfacher ist als immer die Nummern zu merken
relais = {"an" : 0, "cd" : 1, "bl" : 2, "so" : 3, "ta1" : 4, "ta2" : 5, "ta3" : 6, "wei" : 7}
try:
s.bind(("", 50000))
while True:
daten, addr = s.recvfrom(1024)
output = daten.split(":")
# Steckdose einschalten
if output[1] == "1":
# Relais Aktivieren und Steckdose einschalten
p.digital_write(relais[output[0]],1,1)
# Steckdosen ausschalten
elif output[1] == "0":
# Relais deaktivieren und Steckdose ausschalten
p.digital_write(relais[output[0]],0,1)
finally:
s.close()
Display More
Den Client wie folgt aufrufen: python udpclient.py ta:1 (ta:1 bildet den Ort und Zustand)
#!/usr/bin/python
# UDP - Client - Script
# Dateiname: udpclient.py
import socket
import sys
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
nachricht = sys.argv[1]
s.sendto(nachricht, ("127.0.0.1", 50000)) # Wenn Server und Client auf unterschiedlichen Pi's laufen anpassen
s.close()
Display More
Hab es ein wenig getestet. Also Steckdosen unterschiedlich schalten und so und es lief alles wie erhofft.
Ich weiß UDP ist nicht immer die erste Wahl, aber ich bin noch am üben und da fängt man denk ich erstmal mit dem leichtesten an.
Michael