Hinweis: Wie die einzelnen Hardware Komponenten so wie die benötigten evtl. weiteren elektronischen Zusatzteile (Widerstände, Transistoren, Stromversorgung) angeschlossen werden, ist in der Rubrik Elektronik nachzuschlagen. In dieser Rubrik wird ausschließlich die Software-Entwicklung betrachtet.
Der Lichtsensor sendet lediglich ein Signal True oder False. Die Empfindlichkeit lässt sich mit dem verbauten Potimeter einstellen.
Der Sensor wird an den GPIO 26 angeschlossen und wird schlicht zyklisch abgefragt. Der Code ist daher "Documentation enough"
import RPi.GPIO as GPIO
import time
#GPIO Modus (BOARD / BCM)
GPIO.setmode(GPIO.BCM)
#GPIO Pins zuweisen
GPIO_light= 26
#Richtung der GPIO-Pins festlegen (IN / OUT)
GPIO.setup(GPIO_light, GPIO.IN)
def light():
lightsensor = GPIO.input(GPIO_light)
return lightsensor
if __name__ == '__main__':
try:
while True:
lightValue = light()
print ("Licht "+ str(lightValue))
time.sleep(1)
except KeyboardInterrupt:
print("Messung vom User gestoppt")
GPIO.cleanup()
Auch für den Sensor muss ein Websocket Client geschrieben werden. Dieser soll zyklisch (jede 0.5 sec.) den gemessenen Wert an die Java-Applikation senden. Auch hier muss der Sensor sich zu Beginn mit seinem Namen beim Websocker-Server melden, so dass später eine Zuordnung der Sensorwerte zu dem Sensor möglich ist.
import asyncio
import websockets
import light_sens
import time
async def wsclient():
async with websockets.connect('ws://localhost:9000') as websocket:
#FirstMessaging - Name
await websocket.send('Name:'+'lightSensor')
while True:
light = light_sens.light()
await websocket.send('lightSensor:'+str(light))
#print ('sending')
time.sleep(0.5)
#This have to be the last line!
asyncio.get_event_loop().run_until_complete(wsclient())