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.
pypwrctrl: Python-Programm für UDP-Steuerung
-
- Administrator
- Beiträge: 487
- Registriert: Dienstag 15. Januar 2008, 11:51
- Wohnort: Düsseldorf
- Kontaktdaten:
Re: pypwrctrl: Python-Programm für UDP-Steuerung
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
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
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
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
Thammi, sehr schön, danke! Das können sicherlich noch mehr Leute gebrauchen…
Mit meiner Leiste hat es zunächst nicht funktioniert. Das Problem:
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:
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
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
Änderung in pypwrctrl.py, Zeile 168 in:
Code: Alles auswählen
return data.decode('latin')
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
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
Der Charset wäre auch ein Kandidat für die Dokumentations-Seite
So far, farewell
Thammi