pypwrctrl: Python-Programm für UDP-Steuerung

thammi
Beiträge: 3
Registriert: Samstag 13. Juli 2013, 17:52

pypwrctrl: Python-Programm für UDP-Steuerung

Beitrag von thammi » Samstag 13. Juli 2013, 19:06

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.

andy
Administrator
Beiträge: 486
Registriert: Dienstag 15. Januar 2008, 11:51
Wohnort: Düsseldorf
Kontaktdaten:

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

Beitrag von andy » Sonntag 14. Juli 2013, 10:04

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

thammi
Beiträge: 3
Registriert: Samstag 13. Juli 2013, 17:52

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

Beitrag von thammi » Sonntag 14. Juli 2013, 12:42

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

Thorsten
Beiträge: 2
Registriert: Mittwoch 29. Mai 2013, 10:47

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

Beitrag von Thorsten » Montag 15. Juli 2013, 15:46

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

thammi
Beiträge: 3
Registriert: Samstag 13. Juli 2013, 17:52

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

Beitrag von thammi » Dienstag 16. Juli 2013, 10:22

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

Antworten