Re: piloter smart plug générique type Horsky (SWA1)
Publié : 10 oct. 2018, 16:58
Première bonne nouvelle (sans flasher quoi que ce soit) :
En écoutant le port 20003 multicasté du réseau local, on voit passer les messages de notifications des prises (j'en ai 3 sur 3 IP) !
Par exemple :
En en filtrant une à partir de son IP, on voit de quoi identifier le plug (le nom que j'ai choisi et son nom d'usine) et surtout un bit qui change suivant l'état on/off (0100 = off, 0101 = on) du plug en ligne 0x00b0.
$ sudo tcpdump -Xn "src host 192.168.0.65 and dst port 20003"
tcpdump: data link type PKTAP
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on pktap, link-type PKTAP (Apple DLT_PKTAP), capture size 262144 bytes
16:47:53.313496 IP 192.168.0.65.4295 > 255.255.255.255.20003: UDP, length 159
0x0000: ffff ffff ffff 2c3a e843 f115 0800 4500 ......,:.C....E.
0x0010: 00bb 1be7 0000 8011 5d62 c0a8 0041 ffff ........]b...A..
0x0020: ffff 10c7 4e23 00a7 3514 fef0 9f00 0305 ....N#..5.......
0x0030: 0200 0000 0000 bf1a 0100 0000 17b7 2700 ..............'.
0x0040: 0000 1811 be5b 0000 0000 0000 0000 0000 .....[..........
0x0050: f0fe 0200 506f 6d70 6520 7069 7363 696e ....Pompe.piscin
0x0060: 6500 0000 0000 0000 0000 0000 0000 0000 e...............
0x0070: 0000 0000 0105 00c0 a800 412c 3ae8 43f1 ..........A,:.C.
0x0080: 1500 0000 0000 0000 0302 5354 506c 7567 ..........STPlug
0x0090: 5f46 3131 3500 0000 0000 0000 0000 0000 _F115...........
0x00a0: 0000 0000 0000 0000 0000 0204 0000 1500 ................
0x00b0: 0101 0000 0000 0000 0000 0000 0000 0000 ................
0x00c0: 0000 0000 0024 0bb1 e5 .....$...
16:47:54.980437 IP 192.168.0.65.4295 > 255.255.255.255.20003: UDP, length 159
0x0000: ffff ffff ffff 2c3a e843 f115 0800 4500 ......,:.C....E.
0x0010: 00bb 1bed 0000 8011 5d5c c0a8 0041 ffff ........]\...A..
0x0020: ffff 10c7 4e23 00a7 141d fef0 9f00 0305 ....N#..........
0x0030: 0200 0000 0000 c31a 0100 0000 17b7 2700 ..............'.
0x0040: 0000 1a11 be5b 0000 0000 0000 0000 0000 .....[..........
0x0050: f0fe 0200 506f 6d70 6520 7069 7363 696e ....Pompe.piscin
0x0060: 6500 0000 0000 0000 0000 0000 0000 0000 e...............
0x0070: 0000 0000 0105 00c0 a800 412c 3ae8 43f1 ..........A,:.C.
0x0080: 1500 0000 0000 0000 0302 5354 506c 7567 ..........STPlug
0x0090: 5f46 3131 3500 0000 0000 0000 0000 0000 _F115...........
0x00a0: 0000 0000 0000 0000 0000 0204 0000 1500 ................
0x00b0: 0100 0000 0000 0000 0000 0000 0000 0000 ................
0x00c0: 0000 0000 00f6 2dd7 dd ......-..
C'est un début, déjà de quoi faire un plugin qui scanne des devices et connait leur état.
Je vais continuer à faire les grandes oreilles pour essayer de trouver quoi envoyer à qui pour changer d'état.
En écoutant le port 20003 multicasté du réseau local, on voit passer les messages de notifications des prises (j'en ai 3 sur 3 IP) !
Par exemple :
En en filtrant une à partir de son IP, on voit de quoi identifier le plug (le nom que j'ai choisi et son nom d'usine) et surtout un bit qui change suivant l'état on/off (0100 = off, 0101 = on) du plug en ligne 0x00b0.
$ sudo tcpdump -Xn "src host 192.168.0.65 and dst port 20003"
tcpdump: data link type PKTAP
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on pktap, link-type PKTAP (Apple DLT_PKTAP), capture size 262144 bytes
16:47:53.313496 IP 192.168.0.65.4295 > 255.255.255.255.20003: UDP, length 159
0x0000: ffff ffff ffff 2c3a e843 f115 0800 4500 ......,:.C....E.
0x0010: 00bb 1be7 0000 8011 5d62 c0a8 0041 ffff ........]b...A..
0x0020: ffff 10c7 4e23 00a7 3514 fef0 9f00 0305 ....N#..5.......
0x0030: 0200 0000 0000 bf1a 0100 0000 17b7 2700 ..............'.
0x0040: 0000 1811 be5b 0000 0000 0000 0000 0000 .....[..........
0x0050: f0fe 0200 506f 6d70 6520 7069 7363 696e ....Pompe.piscin
0x0060: 6500 0000 0000 0000 0000 0000 0000 0000 e...............
0x0070: 0000 0000 0105 00c0 a800 412c 3ae8 43f1 ..........A,:.C.
0x0080: 1500 0000 0000 0000 0302 5354 506c 7567 ..........STPlug
0x0090: 5f46 3131 3500 0000 0000 0000 0000 0000 _F115...........
0x00a0: 0000 0000 0000 0000 0000 0204 0000 1500 ................
0x00b0: 0101 0000 0000 0000 0000 0000 0000 0000 ................
0x00c0: 0000 0000 0024 0bb1 e5 .....$...
16:47:54.980437 IP 192.168.0.65.4295 > 255.255.255.255.20003: UDP, length 159
0x0000: ffff ffff ffff 2c3a e843 f115 0800 4500 ......,:.C....E.
0x0010: 00bb 1bed 0000 8011 5d5c c0a8 0041 ffff ........]\...A..
0x0020: ffff 10c7 4e23 00a7 141d fef0 9f00 0305 ....N#..........
0x0030: 0200 0000 0000 c31a 0100 0000 17b7 2700 ..............'.
0x0040: 0000 1a11 be5b 0000 0000 0000 0000 0000 .....[..........
0x0050: f0fe 0200 506f 6d70 6520 7069 7363 696e ....Pompe.piscin
0x0060: 6500 0000 0000 0000 0000 0000 0000 0000 e...............
0x0070: 0000 0000 0105 00c0 a800 412c 3ae8 43f1 ..........A,:.C.
0x0080: 1500 0000 0000 0000 0302 5354 506c 7567 ..........STPlug
0x0090: 5f46 3131 3500 0000 0000 0000 0000 0000 _F115...........
0x00a0: 0000 0000 0000 0000 0000 0204 0000 1500 ................
0x00b0: 0100 0000 0000 0000 0000 0000 0000 0000 ................
0x00c0: 0000 0000 00f6 2dd7 dd ......-..
C'est un début, déjà de quoi faire un plugin qui scanne des devices et connait leur état.
Je vais continuer à faire les grandes oreilles pour essayer de trouver quoi envoyer à qui pour changer d'état.