HE853 USB Stick (was: C++ Code kompilieren für Anfänger)

  • Hallo,


    für Funksteckdosen die ich bei mir im Einsatz habe, gibt es einen USB Stick zur Ansteuerung.
    Aus der Windows Anwendung wurde wahrscheinlich dieser Code erstellt:


    https://vmi.lmt.ei.tum.de/proj…k/roseasy/homeeasy_dongle


    Ich habe im Anhang denke mal alle wichtigen Files zusammen gefasst.
    Nun habe ich nicht wirklich Ahnung von c++. Ich habe g++ die main.cpp übergeben und einige Fehlermeldungen ala "undefined reference to" bekommen.
    Kann sich bitte jemand das mal anschauen und mir einen Tipp geben.
    Anscheinend fehlen irgendwelche libs oder was auch immer, ich kann da nichts rauslesen :(


    Danke

  • Scheinbar musst du erstmal 'ros' installieren, das scheint ein komplettes extra Paket zu sein: http://www.ros.org
    Außerdem wirst du das ganze Paket benötigen: https://vmi.lmt.ei.tum.de/projects/ros/changeset/321/trunk?old_path=%2F&old=321&format=zip


    Sobald dann alles installiert ist, wirst du evtl. mit 'cmake' die Makefiles aktualisieren müssen. Nicht unbedingt alles anfängertauglich.

  • Scheinbar musst du erstmal 'ros' installieren, das scheint ein komplettes extra Paket zu sein: http://www.ros.org
    Außerdem wirst du das ganze Paket benötigen: https://vmi.lmt.ei.tum.de/projects/ros/changeset/321/trunk?old_path=%2F&old=321&format=zip


    Sobald dann alles installiert ist, wirst du evtl. mit 'cmake' die Makefiles aktualisieren müssen. Nicht unbedingt alles anfängertauglich.


    Dank dem Makefile und den Anpassungen von idl0r habe ich jetzt erstmal ein Binary.
    So wie ich das auslesen konnte wird der Stick als hid Gerät erkannt und durch das senden bestimmter codes das Signal erzeugt.
    Ich denke das ganze "ros" ist nicht notwendig.


    Aber Versuch macht klug. Ich teste es die Woche und schreib hier nochmal.

    HD-VDR:
    HW: ZOTAC D2550-ITX | Mystique SaTiX-S2 Sky Xpress DUAL
    SW: Debian Stretch | vdr-2.3.8

  • ..wär natürlich schicker, wenn's ohne den Overhead läuft. :)

  • Um kurz eine Zwischenmeldung zu geben.
    Den ersten Stick den ich bestellt hatte ist kaputt...
    Ging zurück und ich warte auf einen Neuen.

    HD-VDR:
    HW: ZOTAC D2550-ITX | Mystique SaTiX-S2 Sky Xpress DUAL
    SW: Debian Stretch | vdr-2.3.8

  • Zweiter Stick ist heute angekommen und in einem kurzen Test funktioniert erstmal alles so wie es soll.
    Steckdose konnte "programmiert" werden und schaltet danach das Gerät an oder aus.


    Sehr schön.


    Jetzt mal eine webapp für mein idevice basteln. :rolleyes:

    HD-VDR:
    HW: ZOTAC D2550-ITX | Mystique SaTiX-S2 Sky Xpress DUAL
    SW: Debian Stretch | vdr-2.3.8

  • Hallo,


    ich habe den gleichen Stick zum schalten von Steckdosen gekauft und wollte ihn wie du auch gerne unter Linux nutzen.
    Dabei bin ich dann auch auf deinen Thread hier gestoßen.


    Ich wollte dich fragen ob deine Lösung bei dir aktuell immernoch funktioniert?


    Bei mir will das leider nicht klappen.
    Ich habe mir die Datei hier runtergeladen, und konnte sie auch erfolgreich compilen - das wars dann aber auch.


    Die Steckdose reagiert nicht auf Befehle (unter Windows tut sie es ohne Murren), und wenn ich versuche eine Steckdose zu schalten bekomme ich nur folgendes Ergebnis:


    Der Stick ansich scheint aber erkannt zu werden

    Code
    root@multimedia:~/he853# lsusb
    Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
    Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
    Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
    Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
    Bus 003 Device 002: ID 046d:0b07 Logitech, Inc.
    Bus 003 Device 003: ID 046d:c71e Logitech, Inc.
    Bus 003 Device 004: ID 046d:c71f Logitech, Inc. diNovo Mini Wireless Keyboard
    Bus 002 Device 005: ID 04d9:1357 Holtek Semiconductor, Inc.


    So, bin jetzt etwas weiter, habe die main.cpp so abgeändert:

    Code
    remote = new HE853Controller();
    
    
            remote->sendEU((uint16_t)1, (uint8_t)1);
    
    
            return 0;


    Damit bin ich die Schleife los, und das Programm sendet jetzt genau 1 x on auf dem Kanal 1 wenn ich alles richtig verstanden habe.


    Trotzdem tut sich nix, mache ich das gleiche mit dem Windows Tool dann klappt es.

  • So, Fehler gefunden.


    Ich habe zwar keine Ahnung von C, aber eine Sprache ist ja wie die andere und nach dem lesen des Codes bin ich mal auf die Idee gekommen es anstatt mit

    Code
    remote->sendEU((uint16_t)1, (uint8_t)1);

    einfach mal mit

    Code
    remote->sendAll((uint16_t)1, (uint8_t)1);

    zu versuchen - und siehe dann klappts.


    Anscheinend habe ich ein Modell mit UK bekommen.


    Vielleicht könnt ihr mir aber noch hierbei helfen:
    Wie kann ich die Funktion zum auslesen des Status nutzen?


    Es gibt ja die Eigenschaft "getDeviceStatus" und die liefert anscheinend nen Array zurück.
    Nur wie kann ich das auslesen und vorallem anzeigen? Habe 0 Ahnung von C/C++


    Mein Versuch

    Code
    if (remote->getDeviceStatus())
                    printf("Wahr");
            else
                    printf("Falsch");

    hat gar nicht funktioniert.

  • Ich buddel mal diesen alten Thread wieder hervor, weil ich etwas am Code gebastelt habe.


    Jetzt gibt es Parameter checks, checks ob der USB Stick da ist und auch richtig zugreifbar ist.
    Außerdem jetzt kann man das Protokoll via Buchstabe angeben und muss nicht mehr Code befummeln.
    Den Zustand des Sticks kann man auslesen ohne Parameter angeben zu müssen.


    https://github.com/hphde/he853-cli


    HP

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!