EUC-Dash-ESP32 icon indicating copy to clipboard operation
EUC-Dash-ESP32 copied to clipboard

S18 lights/lock

Open enaon opened this issue 4 years ago • 12 comments

Hi, nice work. :)

those are the commands for the lights and the lock for the S18.

Lights on 0xAA,0x55,0x12,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x73,0x14,0x5A,0x5A lights off 0xAA,0x55,0x13,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x73,0x14,0x5A,0x5A lights auto 0xAA,0x55,0x14,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x73,0x14,0x5A,0x5A lock 0xAA,0x55,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x5d,0x14,0x5A,0x5A unlock 0xAA,0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x37,0x37,0x33,0x35,0x32,0x35,0x5d,0x14,0x5A,0x5A

enaon avatar Jan 29 '21 13:01 enaon

also I found this one useful:

"pass" [0xAA,0x55,0x31,0x32,0x33,0x34,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x14,0x5A,0x5A] the pass is 1234 in the example above.

enaon avatar Feb 01 '21 04:02 enaon

Thanks, I'll have a look and will add some more granular lights settings. Lock/unlock plus password would be very useful as well, I'll try to implement it as soon as the BT and dash code is stable

Pickelhaupt avatar Apr 01 '21 14:04 Pickelhaupt

nice, I got the bridge kind of working, it is very doable RF wise :)

https://www.youtube.com/watch?v=veTZA-ubmdA

enaon avatar Apr 01 '21 14:04 enaon

very cool, might have a look at the code to see if I could implement something similar. It would be nice to implement an EUC World/Wheellog connector as well.

Pickelhaupt avatar Apr 01 '21 14:04 Pickelhaupt

Do you have the command for setting full/dimmed beam in the S18 as well? 0x15, 0x16?

Pickelhaupt avatar Apr 01 '21 14:04 Pickelhaupt

I am seriously thinking about getting an S18 very soon, just have to try one out first, how do you like it?

Pickelhaupt avatar Apr 01 '21 14:04 Pickelhaupt

Sebastian from EucWorld suggested such a solution, he offered to make a protocol for the a new "wheel", the watch. I will get to it in a few days, if you have any ideas it will be good.

enaon avatar Apr 01 '21 14:04 enaon

I am seriously thinking about getting an S18 very soon, just have to try one out first, how do you like it?

I was unhappy till I got a pirelli tire for it, the tire bending along the suspension was making it unstable. I now am very happy about it, very nice wheel.

enaon avatar Apr 01 '21 14:04 enaon

Do you have the command for setting full/dimmed beam in the S18 as well? 0x15, 0x16?

no, I couldn't find them, they were not on eucworld, and I didn't look if the kingsong app does it. The auto light is very nice though, except for one thing, they have made a mistake I believe.

when on any mode other that off/auto. the tail light blinks while riding, but does not give a break indication. When on auto/off, the tail light gives a break indication, but stays off when moving.

So there is no way to have both a tail light, and a brake indicator. one has to change modes on the fly based on amperage, this is what I do :)

https://github.com/enaon/eucWatch/blob/62511958c819e96cc48e1b77d0b22c3a6b31993e/P8-testing/eucKingsong/eucKingsong.js#L73

enaon avatar Apr 01 '21 14:04 enaon

I hope they sort it in the next firmware release, it doesn't sound like that would be the intended brake light behaviour. Nice workaround, can you send commands to the S18 without getting beeps? A question about the unlock package: are the 6 bytes to the left of 0x5d the pin code?

Pickelhaupt avatar Apr 02 '21 14:04 Pickelhaupt

yes it beeps, but better than having no tail light :)

the code is the 3 bytes right of 0x55, if you also want to change it, the old pass goes to the next 3.

have a look here:

case "passSend":return [0xAA,0x55,0x30+Number(euc.dash.pass[0]),0x30+Number(euc.dash.pass[1]),0x30+Number(euc.dash.pass[2]),0x30+Number(euc.dash.pass[3]),0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x14,0x5A,0x5A];

case "passChange": return [0xAA,0x55,0x30+Number(euc.dash.pass[0]),0x30+Number(euc.dash.pass[1]),0x30+Number(euc.dash.pass[2]),0x30+Number(euc.dash.pass[3]),0x30+Number(euc.dash.passOld[0]),0x30+Number(euc.dash.passOld[1]),0x30+Number(euc.dash.passOld[2]),0x30+Number(euc.dash.passOld[3]),0x00,0x00,0x00,0x00,0x00,0x00,0x41,0x14,0x5A,0x5A]; //rf 43

case "passClear": return [0xAA,0x55,0x30+Number(euc.dash.pass[0]),0x30+Number(euc.dash.pass[1]),0x30+Number(euc.dash.pass[2]),0x30+Number(euc.dash.pass[3]),0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x42,0x14,0x5A,0x5A]; //rf 43

case "passSet": return [0xAA,0x55,0x30+Number(euc.dash.pass[0]),0x30+Number(euc.dash.pass[1]),0x30+Number(euc.dash.pass[2]),0x30+Number(euc.dash.pass[3]),0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,0x14,0x5A,0x5A]; //rf 43

enaon avatar Apr 02 '21 14:04 enaon

also, there is a security hole in the implementation:

Once a pass is send, the wheel accepts write commands till it is rebooted, so if you lock it and leave it unattended, anyone can connect and unlock it, no pass is needed. One solution is to send a shutdown too, till they fix the pass token behavior.

enaon avatar Apr 02 '21 14:04 enaon