Abo
  • Services:

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.

Stellenmarkt
  1. Fraunhofer-Institut für Arbeitswirtschaft und Organisation IAO, Stuttgart, Esslingen
  2. eco Verband der Internetwirtschaft e.V., Köln

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 
  1.  
  2. 1
  3. 2
  4. 3
  5. 4
  6. 5
  7.  


Anzeige
Spiele-Angebote
  1. (-80%) 5,99€
  2. 23,49€
  3. 32,99€ (erscheint am 25.01.)
  4. 32,99€ (erscheint am 15.02.)

lespocky 04. Apr 2017

Der scheinbar komische Wert 192, der fest mitgegeben werden muss, ist vermutlich ein Byte...

captain_spaulding 27. Mär 2017

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

aha47 26. Mär 2017

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

scheuerseife 25. Mär 2017

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

1ras 24. Mär 2017

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


Folgen Sie uns
       


Landwirtschafts-Simulator C64 - Fazit

Der Landwirtschaftssimulator kommt auf den C64: Giants Software legt der Collector's Edition des Landwirtschafts-Simulators 19 eine Version für den Heimcomputer von Commodore bei. Wir haben das gar nicht mal schlechte Spiel auf originaler Hardware gespielt.

Landwirtschafts-Simulator C64 - Fazit Video aufrufen
Schwer ausnutzbar: Die ungefixten Sicherheitslücken
Schwer ausnutzbar
Die ungefixten Sicherheitslücken

Sicherheitslücken wie Spectre, Rowhammer und Heist lassen sich kaum vollständig beheben, ohne gravierende Performance-Einbußen zu akzeptieren. Daher bleiben sie ungefixt. Trotzdem werden sie bisher kaum ausgenutzt.
Von Hanno Böck

  1. Sicherheitslücken Bauarbeitern die Maschinen weghacken
  2. Kilswitch und Apass US-Soldaten nutzten Apps mit fatalen Sicherheitslücken
  3. Sicherheitslücke Kundendaten von IPC-Computer kopiert

CES 2019: Die Messe der unnützen Gaming-Hardware
CES 2019
Die Messe der unnützen Gaming-Hardware

CES 2019 Wer wollte schon immer dauerhaft auf einem kleinen 17-Zoll-Bildschirm spielen oder ein mehrere Kilogramm schweres Tablet mit sich herumtragen? Niemand! Das ficht die Hersteller aber nicht an - im Gegenteil, sie denken sich immer mehr Obskuritäten aus.
Ein IMHO von Oliver Nickel

  1. Slighter im Hands on Wenn das Feuerzeug smarter als der Raucher ist
  2. Sonos Keine Parallelnutzung von Alexa und Google Assistant geplant
  3. Hypersense-Prototypen ausprobiert Razers Rumpel-Peripherie sorgt für Immersion

Datenschutz: Nie da gewesene Kontrollmacht für staatliche Stellen
Datenschutz
"Nie da gewesene Kontrollmacht für staatliche Stellen"

Zur G20-Fahndung nutzt Hamburgs Polizei eine Software, die Gesichter von Hunderttausenden speichert. Schluss damit, sagt der Datenschutzbeauftragte - und wird ignoriert.
Ein Interview von Oliver Hollenstein

  1. Brexit-Abstimmung IT-Wirtschaft warnt vor Datenchaos in Europa
  2. Österreich Post handelt mit politischen Einstellungen
  3. Digitalisierung Bär stößt Debatte um Datenschutz im Gesundheitswesen an

    •  /