Ein UDP-Client der den Status eines GPIO-Pins auf dem Raspberry meldet
Das folgende Script sendet die Steuermeldungen für den Server im letzten Post.
Es initialisert Pin 4 als Eingang und setzt einen UDP Socket auf. Dann geht es in eine Endlosschleife wo der Eingang gelesen und sein Zustand als UDP-Paket geschickt wird. Ein sleep verhindert, dass das Netz mit Meldungen geflutet wird und die CPU überhitzt.
Achtung
Genau wie im Server gibt es keinerlei Sicherheitsvorkehrungen.
""" This script initializes pin 4 on the raspberry pi as an input. After that, it sets up a UDP socket and starts an endless loop. In the loop, it reads the status of pin 4 every second and sends a packet with the state to the server. V0.01 28-AUG-2014 Te """ import RPi.GPIO as GPIO import socket import time pin = 4 GPIO.setmode( GPIO.BCM ) GPIO.setup( pin, GPIO.IN ) ip = "192.168.1.203" port = 54345 sock = socket.socket( socket.AF_INET, socket.SOCK_DGRAM ) while True: if GPIO.input(pin): sock.sendto( "on", (ip,port) ) else: sock.sendto( "off", (ip,port) ) time.sleep( 1 )
Sie können PinClient.py hier herunterladen.
Test
Um das Script einfach zu halten, ist die IP-Adresse des Servers fest eincodiert (Zeile 23). Vor dem ersten Test muss diese Zeile höchst wahrscheinlich geändert werden.
Die GPIO-Funktionen von Python brauchen Root-Rechte. Diese Rechte bekommt das Script zum Beispiel beim Start mit sudo:
sudo python PinClient.py
Ein passender Server
Das Script für einen passenden Server finden Sie hier.