Frage von Hondoldar, 67

Knöpfe und Schalter programmieren (c++)?

Nabend , ich möchte gerne wissen wie ich mit einem C++ Code z.b. eine Lampe ansteuern kann wenn ein Knopf gedrückt wird...

Freue mich auf Ideen ^^

Antwort
von TeeTier, 24

Du kannst dir bei Pearl oder so einfach billige Funksteckdosen mit USB-Dongle kaufen, und diesen USB-Dongle dann über dein C++ Programm ansteuern.

Deine Lampe muss nur in der Funksteckdose stecken, und mit mit einer einfachen C++ Funktion wie "lamp(bool on)" kannst du dann ein- und ausschalten.

Das Problem dabei ist, dass die Spezfikation für solche USB-Funksteckdosen meist nicht offen ist, und man die grottige vom Hersteller mitgelieferte Software erst mal reversen muss.

Ich habe mit einem USB-Sniffer einfach alles mitgeschnitten, was ich mit der Software machen konnte (Steckdose auf Kanal 1 an, Steckdose auf Kanal 4 aus, Steckdosen auf allen Kanälen an, etc.) und konnte dann daran sehen, welche Daten an den USB-Dongle gesendet werden: Insgesamt nur 8 Byte, die Kanalnummer, On-/Off-Flag, eine Prüfsumme und eine Magic-Nummer enthielten.

Das ganze war dann mit libusb binnen 5 Minuten implementiert, und voila: Ich kann jetzt unter Linux diese Funksteckdosen ansteuern.

Dabei ist mir aufgefallen, dass die Herstellersoftware maximal 8 Steckdosen pro USB-Dongle unterstützt. Diese Beschränkung konnte ich aber leicht umgehen, und jetzt bis zu 256 USB-Steckdosen per Dongle steuern.

Bei mir hängen dort übrigens auch Lampen dran, ein Radio, eine Sirene und ein Ventilator. Ich benutze das als XFD (eXtreme Feedback Device) und wenn z. B. festgestellt wird, dass sich jemand auf einem Server eingeloggt hat, geht die Lampe an. Falls eine Testsuite fehlschlägt, geht die Sirene an und wenn Google-Wetter sagt, dass es über 25°C sind, geht der Ventilator an. :)

Das ist zwar eine sehr schöne Lösung, aber viele Leute sind mit Reverse Engineering überfordert, selbst wenn es nur um das sniffen von USB-Traffic geht. Von daher würde ich dir evtl. raten, dir einen RasPi oder Arduino mit entsprechendem Shield zu besorgen. Die Dinger für die Ansteuerung mit großer Leistung kosten nur ein paar Euro. :)

Viel Spaß! ;)

Antwort
von Borgler94, 13

also benutze für sowas einen Arduino (einfach mal googln)

Antwort
von icekeuter, 27

lamp.light = true;

Nein, Spaß bei seite.

Die Frage macht keinen sinn. Es gibt keinen einfachen Befehl um eine beliebige Lampe anzusteuern. So wie die Frage gestellt ist kann dir auch niemand weiterhelfen.

Lies dich in Interfaces ein und Informier dich auf der Herstellerseite nach einer API und der entsprechenden Dokumentation, oder gib den Leuten hier zumindestens genauere Informationen.

MfG.

icekeuter

Kommentar von Hondoldar ,

Ja aber wie zum a*** Soll ich denn eine kack Lampe in C++ ansteuern ist mir klar dass das nicht ohne libary etc. gehen kann

Antwort
von Junkpilepunk, 38

Ganz so einfach geht es nicht. es kommt stark darauf an mit welchem Gerät du die lampe steuern willst. und je nachdem wie du die schaltung realisierst, brauchst du andere bibliotheken.

Aus Erfahrung kann ich sagen, das soetwas sehr einfach mit Hilfe eines Microcontrollers oder mini pcs und einem einfachen relais zu bewerkstelligen ist. google einfach ml ardouino oder raspberry pi. Da  gibt es Massenhaft anleitungen zu.

Antwort
von ByteJunkey, 44

Also die Lampe soll sozusagen Hardware sein?

Kommentar von Hondoldar ,

Naja , wohl kaum Software ;)

Keine passende Antwort gefunden?

Fragen Sie die Community