Detektera TellStick in/urkopplad

Moderator: Telldus

Post Reply
krambriw
Posts: 654
Joined: Fri Mar 17, 2023 9:45 am

Detektera TellStick in/urkopplad

Post by krambriw »

Hej,

Jag lägger för närvarande in lite kod i applikationen (plugin för EventGhost) för att detektera när man kopplar ur/in en TellStick (Duo i detta fall) till USB porten. Det fungerar så tillvida att jag får in controller events via callback funtionen.
Skulle behöva hjälp med tolkningen av dessa, tycker inte att jag hittar info i header filerna...

Så här ser det ut, följande förenklade test python kod erhåller eventen via callback och utvärderar

Code: Select all

    def controllerEventCallback(self, controllerId, changeEvent, changeType, p1, i3, p2):
        self.controller = []
        self.controller.append(controllerId)
        self.controller.append(changeEvent)
        self.controller.append(changeType)
        self.controller.append(string_at(p1))
        self.controller.append(i3)
        self.controller.append(p2)
        print self.controller
Resultatet i loggfilen i EG blir så här när jag rycker ur /sätter in stickan

Code: Select all

2015-02-12 21:21:18  EVENT: System.DeviceRemoved [u'\\\\?\\USB#VID_1781&PID_0C31#8&3c70f5f&0&2#{a5dcbf10-6530-11d2-901f-00c04fb951ed}']
2015-02-12 21:21:18  [1, 4, 5, '0', 5, None]
2015-02-12 21:21:18  TellStickDuo.Communication with controller is down
.
.
.
2015-02-12 21:21:32  EVENT: System.DeviceAttached [u'\\\\?\\USB#VID_1781&PID_0C31#8&3c70f5f&0&2#{a5dcbf10-6530-11d2-901f-00c04fb951ed}']
2015-02-12 21:21:32  [1, 4, 5, '1', 5, None]
2015-02-12 21:21:34  [1, 2, 6, '12', 5, None]
2015-02-12 21:21:34  TellStickDuo.Communication with controller is up
Från telldus-core.h hämtar jag

Code: Select all

typedef void (WINAPI *TDControllerEvent)(int controllerId, int changeEvent, int changeType, const char *newValue, int callbackId, void *context);
Om jag mappar dessa till värdena i min lista

Code: Select all

int controllerId                  alltid 1 i mitt fall
int changeEvent                 4 urkopplad sticka, 2 inkopplad
int changeType                  5 urkopplad, 6 inkopplad
const char *newValue         0 urkopplad, 1 inkoppling pågår ???, 12 inkopplad och i drift ???
int callbackId                    5 i detta fall
void *context                     None
Hur skall man tolka värdena? Just nu detekterar jag [1, 4, 5, '0', 5, None] som urkopplad och [1, 2, 6, '12', 5, None] som återinkopplad men frågan är om detta är korrekt?
micke.prag
Site Admin
Posts: 2243
Joined: Fri Mar 17, 2023 9:45 am
Location: Lund
Contact:

Re: Detektera TellStick in/urkopplad

Post by micke.prag »

changeEvent:

Code: Select all

// Device changes
#define TELLSTICK_DEVICE_ADDED                  1
#define TELLSTICK_DEVICE_CHANGED                2
#define TELLSTICK_DEVICE_REMOVED                3
#define TELLSTICK_DEVICE_STATE_CHANGED  4
changeType:

Code: Select all

// Change types
159	#define TELLSTICK_CHANGE_NAME                   1
160	#define TELLSTICK_CHANGE_PROTOCOL               2
161	#define TELLSTICK_CHANGE_MODEL                  3
162	#define TELLSTICK_CHANGE_METHOD                 4
163	#define TELLSTICK_CHANGE_AVAILABLE              5
164	#define TELLSTICK_CHANGE_FIRMWARE               6
Första gången en ny TellStick ansluts skickas signalen added och servicen tilldelar den ett id-nummer. 1 i ditt fall.

När du kopplar ur skickas signalen att "available" ändrats till 0. När du sedan återansluter är det inte en ny som ansluts utan en redan konfigurerad som sätts till available=1

Hoppas det klarnar något av min förklaring?
Micke Prag
Software
Telldus Technologies
krambriw
Posts: 654
Joined: Fri Mar 17, 2023 9:45 am

Re: Detektera TellStick in/urkopplad

Post by krambriw »

Hej Micke, tack för informationen, min detektering fungerar bra nu

mvh Walter
Post Reply