Abo
  • Services:
Anzeige
Lüfter vor Analysetool
Lüfter vor Analysetool (Bild: Matthias Riegler)

Eine Alternative zum Kernelmodul entsteht

Unter Windows werden alle Geräte von NZXT mit dem hauseigenen CAM-Programm angesprochen. So hat NZXT ihre Steuerungssoftware genannt. Mit der eigentlichen Abkürzung im Industriebereich hat sie wenig gemeinsam. Warum gibt etwas Ähnliches nicht unter Linux? Ich entscheide mich, mein Projekt in Python zu realisieren. Ich arbeite sehr gerne mit der Sprache, habe aber noch nie ein größeres Projekt damit umgesetzt.

Anzeige

Ich erstelle eine neue Bibliothek namens nzxt und füge die Klasse Grid hinzu. Hier implementiere ich alle Funktionen und die Übertragung. Als Argument wird nur ein serieller Port übergeben. Hier trennen sich auch schon Linux und Windows und die Vorteile zeigen sich: Unter Windows wird immer nur ein einziges Gerät einer Reihe unterstützt, unter Linux sind es beliebig viele.

Um mehrere Geräte zu unterstützen muss ich eine Möglichkeit zur Konfiguration bieten. Ich entwickle also eine weitere Klasse camservice, die als Service fungiert. Zunächst kümmere ich mich um die Konfiguration. Ich möchte die Möglichkeit haben, beispielsweise mehrere Lüftersteuerungen zu betreiben. In Linux werden in der Regel Konfigurationsdateien im Unterordner /etc abgelegt. Viel Arbeit möchte ich nicht in einen Parser stecken. Meine Konfigurationsdatei basiert deshalb auf JSON und ich ergänze die Option, Kommentare einzufügen. Diese filtere ich dann mit folgender Prozedur heraus:

  1. def cleanupconfig(str):
  2. buffer = ""
  3. for i in str.splitlines():
  4. if '#' in i:
  5. buffer = buffer + i[0:i.find('#')]
  6. else:
  7. buffer = buffer + i
  8. return buffer

Eingelesen werden kann die Konfiguration danach mit json.loads(). Zurückgeliefert wird ein Wörterbuch (Dictionary), das die in der Konfiguration festgelegten Parameter beinhaltet.

Anhand dieser Parameter wird eine Liste von Geräten erstellt, die zu jedem Zeitpunkt angesteuert oder ausgelesen werden können.

  1. def parseconfig(self, cfg):
  2. for i in cfg.keys():
  3. self.add_device(i, cfg[i])

Um Daten zu übertragen, nutze ich erneut JSON, hier ein Beispiel, um alle Geräte auszulesen:

  1. def getall(self):
  2. returndict = {}
  3. for i in range(len(self.devices)):
  4. returndict[self.devices[i]["name"]] = self.getdevice(i)
  5.  
  6. return json.dumps(returndict)

Jetzt habe ich eine Basisstruktur, eine Klasse für die Lüftersteuerung und eine Klasse, die alle Geräte verwaltet. Was jetzt noch fehlt, ist eine Möglichkeit für die Kommunikation mit der Außenwelt. Diese realisiere ich vorerst mit einer einfachen Netzwerkschnittstelle:

  1. # Create camservice instance
  2. c = nzxt.Camservice("/etc/cam4linux/config.json")
  3.  
  4. # Create socket for server
  5. s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  6. try:
  7. …
  8. while True:
  9. conn, addr = s.accept()
  10. try:
  11. …

 Das Programm testenDie Verbindung zum Nutzer 

eye home zur Startseite
captain_spaulding 27. Mär 2017

Da dieses Teil einen ganz normalen Serial Port benutzt, macht zumindest dieser Teil keine...

Themenstart

aha47 26. Mär 2017

Welche jetzt konkret? Stimmt, leider sind die "meisten Linux User" offenbar aus der...

Themenstart

scheuerseife 25. Mär 2017

Eine Alternative Java Software für das NZXT Grid+ Hat RoelGo schon 2016 unter der MIT...

Themenstart

1ras 24. Mär 2017

Ja, kenne ich. Von den USB nach RS-232 Wandlern gibt es leider ziemlich viele...

Themenstart

neocron 23. Mär 2017

was hat der hier legale Teil "Reverse Engineering" mit dem resultierenden Code zu tun...

Themenstart

Kommentieren



Anzeige

Stellenmarkt
  1. Universität Passau, Passau
  2. Phoenix Pharmahandel GmbH & Co KG, Mannheim
  3. Daimler AG, Stuttgart
  4. Hochschule für angewandte Wissenschaften Ansbach, Ansbach


Anzeige
Top-Angebote
  1. und bis zu 8 Tage früher erhalten
  2. 37,99€
  3. 11,01€ USK 18 (Versand über Amazon)

Folgen Sie uns
       


  1. Extremistische Inhalte

    Google hat weiter Probleme mit Werbeplatzierungen

  2. SpaceX

    Für eine Raketenstufe geht es zurück ins Weltall

  3. Ashes of the Singularity

    Patch beschleunigt Ryzen-Chips um 20 Prozent

  4. Thimbleweed Park im Test

    Mord im Pixelparadies

  5. Bundesgerichtshof

    Eltern müssen bei illegalem Filesharing ihre Kinder verraten

  6. Gesetz beschlossen

    Computer dürfen das Lenkrad übernehmen

  7. Neue Bildersuche

    Fotografenvereinigung Freelens klagt gegen Google

  8. FTTB

    Unitymedia baut zwei Gemeinden mit Glasfaser aus

  9. Hashfunktion

    Der schwierige Abschied von SHA-1

  10. Cyberangriff auf Bundestag

    BSI beschwichtigt und warnt vor schädlichen Werbebannern



Haben wir etwas übersehen?

E-Mail an news@golem.de


Anzeige
Vikings im Kurztest: Tiefgekühlt kämpfen
Vikings im Kurztest
Tiefgekühlt kämpfen
  1. Future Unfolding im Test Adventure allein im Wald
  2. Nier Automata im Test Stilvolle Action mit Überraschungen
  3. Nioh im Test Brutal schwierige Samurai-Action

Logitech UE Wonderboom im Hands on: Der Lautsprecher, der im Wasser schwimmt
Logitech UE Wonderboom im Hands on
Der Lautsprecher, der im Wasser schwimmt
  1. Playbase im Hands on Sonos bringt kraftvolles Lautsprechersystem fürs Heimkino
  2. Mikrosystem Usound baut Mems-Lautsprecher für Kopfhörer
  3. Automute Stummschalten beim Ausstöpseln der Kopfhörer

Forensik Challenge: Lust auf eine Cyber-Stelle beim BND? Golem.de hilft!
Forensik Challenge
Lust auf eine Cyber-Stelle beim BND? Golem.de hilft!
  1. Reporter ohne Grenzen Verfassungsklage gegen BND-Überwachung eingereicht
  2. Selektorenaffäre BND soll ausländische Journalisten ausspioniert haben
  3. Ex-Verfassungsgerichtspräsident Papier Die Politik stellt sich beim BND-Gesetz taub

  1. Wie "gefunden hat den niemand"?

    gadthrawn | 20:25

  2. Re: Und wo kann man sich bewerben...

    scrumdideldu | 20:23

  3. Re: Bei solchen Gesetzen sind sie immer schnell...

    pampernickel | 20:18

  4. Gegen Deutsche Glasfaser entschieden und jetzt...

    DerDy | 20:10

  5. Re: Ein Hoch auf die Adblocker

    SmokeMaster | 20:08


  1. 19:00

  2. 18:40

  3. 18:20

  4. 18:00

  5. 17:08

  6. 16:49

  7. 15:55

  8. 15:27


  1. Themen
  2. A
  3. B
  4. C
  5. D
  6. E
  7. F
  8. G
  9. H
  10. I
  11. J
  12. K
  13. L
  14. M
  15. N
  16. O
  17. P
  18. Q
  19. R
  20. S
  21. T
  22. U
  23. V
  24. W
  25. X
  26. Y
  27. Z
  28. #
 
    •  / 
    Zum Artikel