hänge jetzt schon seit tagen an einem Problem wo ich nicht mehr weiter komme.
Ich habe mir ein Skript zur Steuerung eines Triac geschrieben welcher Serial angesprochen wird.
Soweit so gut.
Jetzt habe ich das Phänomen das das Skript in unregelmäßigen Abständen (mal 5 min oder 30min) hängen bleibt und die CPU auf 100 Prozent geht.
Ich kann es mit Strg+C noch abbrechen und das Skript durchläuft noch den except.
Also, es hängt immer am ser.write(serial.to_bytes(cw))
Als wenn pyserial ein Problem hätte.
Im Syslog usw konnte ich keine Fehler finden die auf Hardware deuten.
Hier ein Ausschnitt:
Code: Alles auswählen
elif mqttwatt < -35 and Verbraucher == 1:
# print("Start Verbraucher zum zweiten..")
# print("Leistung:", mqttwatt)
# print("Letzer Winkel:", angle)
verbaktuell = wattinwinkel[angle]
# print("Aktueller Verbrauch in Watt:", verbaktuell)
while i <= 98:
#watt_rechnung = mqttwatt - wattinwinkel[angle]
watt_gesammt = mqttwatt - verbaktuell
watt_rechnung = watt_gesammt + wattinwinkel[i]
if watt_rechnung < -35:
i += 1
# print("Da geht noch was. Die zweite", i)
if watt_rechnung >= -35 and watt_rechnung <= -15:
angle = i
cw = [255,0,129,angle]
print(cw)
time.sleep(0.5)
######### Hier bleibt es mit 100% CPU Last hängen
ser.write(serial.to_bytes(cw))
time.sleep(3)
break
if i == 99:
print("Volle Pulle.")
cw = [255,0,129,99]
ser.write(serial.to_bytes(cw))
i = 98
time.sleep(3)
break
Ich würde es gern über os.system probieren. Da kommen ich mit der Hochkomma Aktion nicht weiter.
Code: Alles auswählen
import os
test = 'echo -en "\xFF\x00\x80\x00" > /dev/ttyUSB0'
os.system(test)
Gruß
Chris