Ich habe mir mit einem Raspberry Pi und einem Arduino eine Lampen steuerung gebaut.
Nun habe ich auf dem Raspberry Pi ein python Script laufen um an einem GPIO pin spannung anzulegen oder sie weg zu nehmen.
Server Script:
Code: Alles auswählen
import threading
import socket
import sys
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(21, GPIO.OUT)
PORT = 9898
class Server(threading.Thread):
def __init__(self, port, host = ""):
threading.Thread.__init__(self)
self.host = host
self.port = port
try:
self.server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
except socket.error as err_msg:
print("Unable to instntiate socket. Error code: " + str(err_msg[0]) + "Error message: " + err_msg[1])
sys.exit();
print("[+] Server socket Initialized")
try:
self.server.bind((self.host, self.port))
except socket.error as msg:
print("Unable to bind socket. Error code: " + str(err_msg[0]) + "Error message: " + err_msg[1])
sys.exit()
self.server.listen(10)
print("[+] Server started")
def run_thread(self, conn, addr):
print("Client connect with the ip:", addr[0] + " :" + str(addr[1]))
while True:
light = conn.recv(1024).decode()
if not light:
print("Client with the ip:", addr[0] + ":" + str(addr[1]), "is disconnected")
break
if light == 1:
GPIO.output(21, GPIO.HIGH)
if light == 2:
GPIO.output(21, GPIO.LOW)
conn.close()
def run(self):
print("Waiting for connections on port:" + str(self.port))
while True:
conn, addr = self.server.accept()
threading.Thread(target=self.run_thread, args=(conn, addr)).start()
def main():
server = Server(PORT)
server.run()
if __name__ == "__main__":
main()
Client Script:
Code: Alles auswählen
import socket
import sys
class Client():
def __init__(self):
self.ip = "192.168.178.122"
self.port = "9898"
try:
self.client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
except socket.error as err_msg:
print("Unable to instntiate socket. Error code: " + str(err_msg[0]) + "Error message: " + err_msg[1])
sys.exit();
print("[+] Client socket Initialized")
try:
self.client_socket.connect((self.ip, int(self.port)))
except:
print("connection failed %s" % (socket.error))
sys.exit()
print("[+] Connected to server :", self.ip + ":" + self.port)
def send_light(self):
print("[1] Light On [2] Light off [q] Exit")
light = input("->")
while light != "q":
self.client_socket.send(light.encode())
print("[1] Light On [2] Light off [q] Exit")
light = input("->")
self.client_socket.close
def main():
client = Client()
client.send_light()
if __name__ == "__main__":
main()
Auf der Webseite soll es anfangs nur zwei Buttons geben zum Licht an und aus machen.
Nun habe ich das Problem das ich nicht genau weiss wie ich das umsetzte da her meine frage wie ich das ganze am besten mache.