KAKU – TPC-300 laten schakelen via Linux

linux logo

klikaanklikuit logo
Op deze pagina vind je een Python (2.x) script om de TPC-200 en TPC-300 te schakelen in een Linux omgeving, we maken daarvoor gebruik van python en pyUSB om de TPC kastjes aan te sturen met een “bit-reeks”, om erachter te komen welkte bit-reeks er verstuurd wordt, gaan we dit aftappen met USBPcap, en bekijken/analyseren we het resultaat in Wireshark.

Wat heb je nodig?

1) Python 2.x met pyUSB
2) Wireshark
3) USBPcap
4) KAKUcli

USB Sniffen op de TPC-300

Omdat de KAKU TPC software alleen op Windows werkt, moeten we via Windows de bit-reeks achterhalen wat naar de TPC-300 gezonden wordt, start daarvoor USBPcapCMD.exe

Ontvangers met codeschijfjes

1) Selecteer het juiste USB apparaat (de TPC-300) kan lastig zijn te vinden, anders moet je even wat apparaten uitproberen ;-)
2) Als uitvoer vul je in “tpc300.pcap“.

tpc-300_usb_sniffing

3) Nadat je op enter hebt gedrukt wordt het desbetreffende apparaat “afgeluisterd”.
4) Gebruik KAKUcli.exe om nu schakel commando’s van het oude draaischijfjes systeem naar de TPC-300 te sturen:

5) Nu hebben we een 6-tal commando’s uitgevoerd om gegevens te vergaren, sluit “USBPcapCMD.exe” door op het kruisje te drukken.
6) Er is nu een bestandje tpc300.pcap aangemaakt, deze kun je openen in Wireshark:

tpc-300_usb_sniffing_wireshark

We kijken naar wat er gestuurd (URB_INTERRUPT_OUT) wordt van de HOST naar DESTINATION, als je de regel aanklikt, zie je staan:
Leftover Capture Data: 5a0002050000000000000000000000000000000000000000...

Dit is een byte-reeks van 64 byte (achteraf hebben we maar de eerste 4 byte nodig), als we nu alle 6 commando uitlezen, komen we tot het volgende:

Hieruit kunnen we concluderen dat de eerste 4 bytes veranderen, (de laatste reeks zijn allemaal 0x00):

Byte 1 > Startbyte
Byte 2 > Kanaal (1e nibble 0 t/m F = Kanaal, 2e nibble 0 t/m F = Letter)
Byte 3 > Aan/Uit (0x02 = Aan, 0x00 = Uit)
Byte 4 > Eindbyte

Nieuwe zelflerende ontvangers

1) Selecteer het juiste USB apparaat (de TPC-300) kan lastig zijn te vinden, anders moet je even wat apparaten uitproberen ;-)
2) Als uitvoer vul je in “tpc300.pcap“.

tpc-300_usb_sniffing

3) Nadat je op enter hebt gedrukt wordt het desbetreffende apparaat “afgeluisterd”.
4) Gebruik KAKUcli.exe om nu schakel commando’s van het oude draaischijfjes systeem naar de TPC-300 te sturen:

5) Nu hebben we een 6-tal commando’s uitgevoerd om gegevens te vergaren, sluit “USBPcapCMD.exe” door op het kruisje te drukken.
6) Er is nu een bestandje tpc300.pcap aangemaakt, deze kun je openen in Wireshark:

tpc-300_usb_sniffing_wireshark_nieuw_ontvangers

We kijken naar wat er gestuurd (URB_INTERRUPT_OUT) wordt van de HOST naar DESTINATION, als je de regel aanklikt, zie je staan:
Leftover Capture Data: 5a6923050000000000000000000000000000000000000000...

Dit is een byte-reeks van 64 byte (achteraf hebben we maar de eerste 4 byte nodig), als we nu alle 6 commando uitlezen, komen we tot het volgende:

Hieruit kunnen we concluderen dat de eerste 4 bytes veranderen, (de laatste reeks zijn allemaal 0x00):

Byte 1 > Startbyte
Byte 2 > Kanaal (0x00 = 0 / 0x69 = 105 (6x16+9) / 0xFF = 256)
Byte 3 > Aan/Uit (0x23 = Aan, 0x01 = Uit)
Byte 4 > Eindbyte

Dimstanden:

Het script

Het script hieronder is een “kant-en-klaar” voorbeeld van pyUSB, we laten de byte-reeks verzenden naar de TPC op de USB poort.

Nu het script werkt kunnen we het makkelijker maken door een commandolijn parameter te gebruiken:

sudo python kakutpc.py [kanaal] [actie]

Schakelvoorbeelden:
kakutpc.py c7 aan   > schakelt op een codeschijfjes ontvanger kanaal c7 aan.
kakutpc.py k13 0   > schakelt op een codeschijfjes ontvanger kanaal k13 uit.
kakutpc.py 25 17  > schakelt op een automatisch codesysteem ontvanger kanaal 25 aan.
kakutpc.py 63 uit   > schakelt op een automatisch codesysteem ontvanger kanaal 63 uit.
kakutpc.py 215 11   > schakelt op een automatisch codesysteem ontvanger kanaal 215 aan in dimstand 11.


TPC informatie (Linux)