Seite 1 von 1

pypwrctrl: Python-Programm für UDP-Steuerung

Verfasst: Samstag 13. Juli 2013, 19:06
von thammi
Hi,
ich wollte nur mal kurz auf das kleine Projekt aufmerksam machen, dass ich in den letzten Tagen zusammengebaut habe:
https://github.com/thammi/pypwrctrl

pypwrctrl ist ein Python-Programm um Geräte im Netzwerk über das UDP-Protokoll zu finden und anzusprechen. Es bietet ein Kommandozeilen-Interface und ist auch als Python-Bibliothek nutzbar. Getestet bzw entwickelt habe ich auf Linux, sollte aber auch auf Mac OS X, Windows usw laufen.

Ich habe das Programm unter der GPLv3 veröffentlicht. Anmerkungen, Bug-Reports etc. sind natürlich willkommen.

An Anel danke für das coole Produkt. Auch wenn es kleine Schwächen hat kann man damit einigen Spaß haben.

So far, farewell
Thammi

PS: Ich hoffe diese Art Eintrag ist hier im richtigen Unterforum bzw allgemein erwünscht.

Re: pypwrctrl: Python-Programm für UDP-Steuerung

Verfasst: Sonntag 14. Juli 2013, 10:04
von andy
Hi thammi,

Interessant. Danke. Ich werde es mir anschauen.

Der Git Link funktioniert nicht, bitte nachschauen.

Danke für das Lob, die kleine Schwächen sind aber besonders interessant. Bitte benennen. :)

LG Andy

Re: pypwrctrl: Python-Programm für UDP-Steuerung

Verfasst: Sonntag 14. Juli 2013, 12:42
von thammi
Hi,
bei mir funktioniert der Git-Link und habe bisher auch noch keine Probleme mit Github gehabt. Als alternativen Download kann ich aber noch PyPi anbieten:
https://pypi.python.org/pypi/pypwrctrl (Download als .tar.gz unten)

Zu den kleinen Schwächen: Es geht mir dabei hauptsächlich um das UDP-Protokoll und dessen Dokumentation. Das Passwort im Klartext zu übertragen ist gewagt. Auch die Auswahl der Default-Ports finde ich eher unglücklich. Da es sich um priviligierte Ports handelt kann man die Antworten nicht ohne Admin-Rechte erhalten. Bei der Dokumentation fehlte mir z.B. die Information ob und wie auf die Sw_ Befehle geantwortet wird. Auch fehlen Kleinigkeiten über das Verhalten der einzelnen Befehle. Kann man z.B. einen einmal eingeleiteten 'St_off' durch einen weiteren abbrechen und somit eine Art Watchdog implementieren? Auch was genau ein Reset ist wird dort nicht beschrieben.

Ich muss allerdings dazu sagen, dass ich beruflich häufig Protokoll-Dokumentation lese (und implementiere) und diese selten wirklich vollständig ist. Ein bisschen Reverse-Engineering ist aber auch immer wieder interessant ;)

So far, farewell
Thammi

Re: pypwrctrl: Python-Programm für UDP-Steuerung

Verfasst: Montag 15. Juli 2013, 15:46
von Thorsten
Thammi, sehr schön, danke! :) Das können sicherlich noch mehr Leute gebrauchen…

Mit meiner Leiste hat es zunächst nicht funktioniert. Das Problem:

Code: Alles auswählen

Traceback (most recent call last):
  File "<interactive input>", line 1, in <module>
  File "Lib\encodings\utf_8.py", line 16, in decode
    return codecs.utf_8_decode(input, errors, True)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xb0 in position 279: unexpected code byte
Auslöser ist das Zeichen „°“ bei den neueren Geräten, die auch die Temperatur melden. Das Grad-Zeichen ist nicht in „utf8“ kodiert - daher ist es keine gute Idee, bei der PwrCtrl-Antwort eine utf8 Kodierung vorauszusetzen.
Änderung in pypwrctrl.py, Zeile 168 in:

Code: Alles auswählen

return data.decode('latin')
behebt das Problem bei mir. In der Send-Funktion (Zeile 127) sollte analog ebenfalls kein utf8 verwendet werden…

Und in Zeile 93 sollte als Input-Default-Port „75“ (nicht 74) stehen.

Bei mir funktioniert es ansonsten aber... :)

Thx,
Thorsten

Re: pypwrctrl: Python-Programm für UDP-Steuerung

Verfasst: Dienstag 16. Juli 2013, 10:22
von thammi
Danke für das Feedback Thorsten. Beide Probleme sind in der neuen Version 0.1.3 behoben.

Der Charset wäre auch ein Kandidat für die Dokumentations-Seite ;)

So far, farewell
Thammi