Kurz am Anfang was das ganze Programm macht:
Eine UDP Client soll sich Daten von einem Arduino Server holen und diese dann weiter verarbeiten wie z.B. An einen Server weitergeben der auf eine Android App hört. Ebenfalls wird dadurch Ventilator, Rolladen usw. im Zimmer gesteuert.
Jetzt zu meinem Problem: Da man bei einem UDP Socket keine Strings versenden kann muss das ganze ja mit
Code: Alles auswählen
bytes(message, 'UTF-8')
Code: Alles auswählen
import socket #for sockets
import sys #for exit
import time
# create dgram udp socket
try:
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
except socket.error:
print ('Failed to create socket')
sys.exit()
host = "192.168.178.91"
port = 8888
while(1) :
msg = "stat"
try :
#Set the whole string
print("sende String")
s.sendto(bytes(msg, 'UTF-8'), (host, port))
print("String gesendet")
# receive data from client (data, addr)
print("Warte auf eingang")
d = s.recvfrom(1024)
reply = d[0]
print ('Server reply : ' + reply.decode("utf-8"))
except socket.error:
print ('Error Code : ' + str(msg[0]) + ' Message ' + msg[1])
sys.exit()
time.sleep(2)
SyntaxError: Non-UTF-8 code starting with '\xe4' in file I:\Programmieren\Phyton\Raspberrypi\Main.py on line 38, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
Die Website hilft mir nicht wirklich weiter.
Das Hauptprogramm sieht so aus:
Code: Alles auswählen
'''
Created on 20.08.2013
@author: Tom
'''
#!/usr/bin/python
import sys, os
from socket import *
import time
import threading
import Arduino
import Rolladen
import Android
Arduino_status = False
Rolladen_status = False #False = oben True = unten
Ventilator_status = False #False = aus True = an
exit = False
infos_raw = ""
infos_array = {}
infos = ""
host = "192.168.178.91"
port = 8888
#if len(sys.argv) < 3:
# sys.exit("Usage: Main.py XX/XX/XX XX/XX/XX")
zeit_morgen_string = sys.argv[1].split("/", 3)
zeit_abend_string = sys.argv[2].split("/", 3)
print("Connecting to Arduino")
#ping = Arduino.Ping()
#ping.start()
#ätime.sleep(3)
#if Arduino.Ping == False:
#sys.exit("Arduino Server fehlt")
print("[OK] Verbindung zum Arduino aufgebaut")
print("Zeit Thread wird gestartet")
rolladen = Rolladen.Rolladen1(zeit_morgen_string, zeit_abend_string)
rolladen.start()
print("Android Server wird gestartet")
android = Android.Android_Server()
android.start()
while True:
msg = "stat"
try:
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
except socket.error:
print ('Failed to create socket')
sys.exit()
try :
#Set the whole string
print("sende String")
s.sendto(bytes(msg, 'UTF-8'), (host, port))
print("String gesendet")
# receive data from client (data, addr)
print("Warte auf eingang")
d = s.recvfrom(1024)
reply = d[0]
print ('Server reply : ' + reply.decode("utf-8"))
except socket.error:
print ('Error Code : ' + str(msg[0]) + ' Message ' + msg[1])
sys.exit()
Android.Temp = infos_array[0]
Android.Licht = infos_array[1]
Android.Rolladen_status = Rolladen_status
Android.Ventilator_status = Ventilator_status
time.sleep(2)
if Android.main_exit:
break
c = input()
Rolladen.exit = True
Arduino.exit = True
Android.exit = True