Skip to content

Instantly share code, notes, and snippets.

@PaulWieland
Last active October 14, 2023 15:04
Show Gist options
  • Save PaulWieland/f7018cc016711998cca7fc99d6b8f986 to your computer and use it in GitHub Desktop.
Save PaulWieland/f7018cc016711998cca7fc99d6b8f986 to your computer and use it in GitHub Desktop.
// Parses a new line separated string of micros() captured from an arduino
// Each entry is a switch from LOW to HIGH or HIGH to LOW
// The line always starts and finishes HIGH.
function parseBtnMessage(timeString){
// Turn the string of times into an array
times = timeString.split("\n");
// Find the start of the first message sent by the button
// The button sends two long pulses which are approx 1300 and 1200 each.
var btnMsgStartIndex = times.findIndex((t, i) => {
let first = times[i + 1] - times[i];
let second = times[i + 2] - times[i + 1];
return (first + second >= 2460 && first + second <= 2560);
});
btnMsgStartIndex += 2;
// Find the first interval which is over length. This indicates the end of the message
var btnMsgEndIndex = times.findIndex((t,i) => {
return (i > btnMsgStartIndex && times[i] - times[i - 1] > 3000);
});
// if none found, assume the last item is the end of the message
if(btnMsgEndIndex === -1){
btnMsgEndIndex = times.length;
}
console.log(`Start: ${btnMsgStartIndex}; End: ${btnMsgEndIndex}`);
// Now chop the button message out of the array of timestamps
var btnMsg = times.slice(btnMsgStartIndex, btnMsgEndIndex);
var duration = 0; // the duration between each micros()
var stream = []; // An array to hold the stream of bits
// Since the arduino's interrupt is triggered on the first change, the first bit we detect is low
var bit = 0;
// Convert the array of times into an array of bits
btnMsg.forEach((t,i) => {
// duration is the time between the next timestamp and the current timestamp
duration = btnMsg[i+1] - btnMsg[i];
// A duration of 207 means two bits of the same value
for(var i = 0; i < Math.round(duration / 100); i++){
stream.push(bit);
}
// Now flip the bit
bit = bit ? 0 : 1;
});
// Each frame is 11 bits. 1 start (low) followed by 8 data then 2 stop
var frameCount = Math.round(stream.length / 11);
var frames = []; // Array to hold each 11 bit message
var start = 0;
var stop = 11;
for(var i = 1; i <= frameCount; i++){
// pull the 11 bits for this frame of the message out of the stream
var bits = stream.slice(start,stop);
// The last frame migth be cut short. assuming this happens when the last few bits are HIGH, as they get lost in the next long duration
while(bits.length < 11) bits.push(1);
// Skip the first bit which is always low
// Take the next 8 bits as the data
var binary = bits.slice(1,9).join("");
var decimal = parseInt(binary, 2); // Convert binary to decimal
var hex = decimal.toString(16).toUpperCase(); // Convert decimal to hex
// The data doesn't seem to use parity
// var parityBit = bits[8]; // even = 0 parity, odd = 1 parity
// var parityPass = (bits[1] + bits[2] + bits[3] + bits[4] + bits[5] + bits[6] + bits[7]) % 2 === parityBit;
frames.push({
bits: bits.join(""),
binary,
// parityBit,
// parityPass,
decimal,
hex
});
start += 11;
stop += 11;
}
return frames;
}
// A set of button "hand shake" messages to be parsed by the parseBtnMessage routine
// Each time a door opener button is given power, it broadcasts a message
// This array contains a bunch of samples that were captured by an arduino listening to the signal
times = [`9468399
9469702
9470955
9471062
9471163
9471271
9471371
9471479
9471579
9471687
9471788
9471895
9472100
9472207
9472308
9473039
9473244
9474184
9474388
9474600
9474701
9474808
9474909
9475328
9475533
9475849
9476261
9476472
9476677
9476889
9477093
9477201
9477301
9477409
9477510
9477617
9477822
9477929
9478134
9478241
9478342
9478449
9478550
9478761
9478966
9479073
9479174
9479281
9479486
9479594
9479694
9479906
9480111
9480322
9480527
9480634
9480839
9480947
9481255
9481363
9481880
9481987
9482400
9482507
9482608
9482715
9483232
9483340
9483544
9483860
9483961
9484172
9484273
9484380
9484689
9484796
9485105
9485212
9485313
9485629
9485834
9486045
9486145
9486253
9486562
9486773
9486978
9487189
9487602
9487813
9488122
9488334
9488747
9488854
9489267
9489374
9489475
9489582
9489787
9490102
9490411
9490518
9490723
9490831
9491244
9491351
9491556
9491663
9491764
9491975
9492076
9492183
9492284
9492391`,
`9522237
9526916
9526926
9526930
9526939
9526946
9526950
9526954
14105825
14107129
14108384
14108491
14108592
14108699
14108800
14108907
14109009
14109116
14109217
14109324
14109529
14109636
14109737
14110470
14110675
14111615
14111821
14112032
14112237
14112449
14112550
14112657
14112966
14113073
14113175
14113386
14113591
14113907
14114112
14114532
14114633
14114740
14114841
14114948
14115258
14115469
14115674
14115781
14115883
14115990
14116091
14116198
14116403
14116615
14116716
14116823
14117028
14117344
14117549
14117656
14117757
14117864
14118070
14118281
14118382
14118489
14118695
14118906
14119111
14119218
14119424
14119635
14119840
14119948
14120153
14120364
14120465
14120677
14120986
14121406
14121507
14121927
14122132
14122447
14122548
14122656
14122757
14123072
14123277
14123385
14123590
14123801
14124006
14124218
14124423
14124843
14125048
14125259
14125569
14125884
14125986
14126509
14126714
14127343
14127443
14127551
14127860
14127967
14128381
14128592
14128693
14128800
14129006
14129113
14129214
14129425
14129526
14129634
14129735
14129946
14212943
14214473
14214575
14214681
14214783
14214888
14214991
14215096
14215199
14215305
14215407
14215512
14215615
14215720
14215823
14216552
14216758
14217695
14217798
14218007
14218110
14218215
14218422
14218735
14219045
14219255
14219773
14219982
14220085
14220294`,
`7725302
7729446
7729450
7729463
7729473
7729480
7729484
7729491
7729528
7729535
12309020
12310324
12311578
12311686
12311787
12311894
12311995
12312102
12312203
12312310
12312411
12312519
12312724
12312831
12312932
12313664
12313870
12314809
12315014
12315122
12315223
12315330
12315431
12315642
12315743
12315851
12316160
12316267
12316577
12316788
12316889
12317100
12317305
12317412
12317722
12317829
12318138
12318245
12318451
12318558
12318763
12318870
12319179
12319391
12319596
12319911
12320117
12320224
12320741
12320953
12321158
12321265
12321366
12321577
12321887
12321994
12322199
12322306
12322511
12322619
12322720
12322827
12323032
12323347
12323552
12323660
12323761
12323972
12324177
12324284
12324385
12324597
12324698
12324805
12324906
12325014
12325323
12325742
12325843
12325951
12326052
12326263
12326468
12326575
12326676
12326784
12326885
12327200
12327614
12327721
12327822
12328241
12328759
12328866
12328967
12329387
12329488
12329699
12329904
12330116
12330217
12330428
12330737
12330845
12331050
12331261
12331466
12331886
12332195
12332302
12332612
12332719
12332820
12333135
12416188
12417639
12417742
12417847
12417950
12418055
12418158
12418263
12418366
12418471
12418574
12418679
12418782
12418888
12418990
12419719
12419822
12420759
12421069
12421487
12421590
12421695
12421797
12421903
12422109
12422319`,
`8713514
8717902
8717906
8717910
8717914
8717921
13296608
13297912
13299166
13299274
13299374
13299482
13299583
13299690
13299791
13299898
13299999
13300106
13300312
13300419
13300520
13301252
13301457
13302397
13302602
13302918
13303019
13303438
13303748
13303855
13304060
13304167
13304476
13304688
13304893
13305000
13305101
13305208
13305518
13305625
13305726
13305833
13306038
13306250
13306559
13306874
13307183
13307291
13308016
13308123
13308328
13308436
13309057
13309164
13309474
13309581
13310619
13310726
13311452
13311559
13311764
13312183
13312388
13312600
13312909
13313225
13313429
13313849
13314054
13314161
13314262
13314578
13314887
13314994
13315199
13315306
13315407
13315619
13316032
13316139
13316344
13316660
13316865
13316972
13317177
13317284
13317489
13317701
13317905
13318013
13318114
13318221
13318322
13318429
13318634
13318741
13318843
13318950
13319051
13319470
13319779
13319887
13320196
13320303
13320508
13320720
13405398
13406901
13407004
13407109
13407212
13407317
13407420
13407525
13407628
13407734
13407836
13407941
13408148
13408253
13408356
13409085
13409292
13410229
13410332
13410542
13410644
13410853
13410956
13411061
13411164
13411269
13411476
13411581
13411892
13411997
13412100
13412413
13412516
13412725
13412828
13413141
13413244
13413453
13413556
13413765
13413868
13414077
13414284
13414493`,
`5788388
5792962
5792966
5792973
5792980
5792984
10371522
10372826
10374080
10374187
10374288
10374395
10374496
10374603
10374704
10374812
10374913
10375020
10375225
10375332
10375433
10376166
10376371
10377311
10377516
10377728
10377829
10378353
10378662
10378769
10379183
10379602
10379808
10380019
10380224
10380540
10380953
10381060
10381266
10381581
10382099
10382206
10382411
10382518
10382620
10382831
10383244
10383560
10383661
10383872
10384077
10384185
10384390
10384601
10384702
10384914
10385015
10385226
10385536
10385643
10385744
10385955
10386161
10386268
10386369
10386476
10386681
10386789
10386890
10387101
10387202
10387518
10387827
10388247
10388348
10388768
10388972
10389080
10389285
10389600
10389702
10389809
10390118
10390642
10390743
10390850
10390951
10391059
10391264
10391475
10391576
10391684
10391785
10391996
10392097
10392204
10392409
10392725
10392826
10393142
10393555
10393870
10394076
10394391
10394700
10394808
10395117
10395328
10395430
10395641
10479004
10480537
10480640
10480745
10480848
10480953
10481056
10481161
10481264
10481370
10481472
10481577
10481680
10481785
10481888
10482617
10482719
10483657
10483759
10483865
10483967
10484281
10484383
10484489
10484591
10484697
10484799
10484905
10485007
10485113
10485215
10485737
10485839
10485945
10486151
10486257
10486359
10486569
10486671
10486777`,
`6115729
6115758
6116005
6120456
6120460
6120467
10699139
10700443
10701697
10701804
10701905
10702012
10702113
10702220
10702321
10702428
10702529
10702637
10702842
10702949
10703050
10703782
10703987
10704927
10705132
10705239
10705340
10705551
10705757
10706072
10706277
10706384
10706485
10706593
10706693
10707217
10707422
10708050
10708255
10708362
10708567
10709091
10709296
10709404
10709713
10710341
10710546
10710653
10710858
10711798
10712004
10712423
10712524
10712735
10712836
10712943
10713148
10713464
10713565
10714089
10714294
10714401
10714502
10714713
10714814
10714922
10715022
10715234
10715439
10715546
10715647
10716067
10716168
10716379
10716584
10716692
10716792
10716900
10717001
10717316
10717729
10717837
10717938
10718357
10718875
10719503
10719603
10719815
10720020
10720232
10720332
10720544
10720644
10720752
10720853
10720960
10721165
10721376
10721582
10722001
10722310
10722418
10722727
10722834
10722935
10723251
10806897
10808428
10808530
10808636
10808738
10808844
10808946
10809052
10809154
10809259
10809362
10809467
10809570
10809675
10809778
10810507
10810610
10811547
10811753
10812171
10812377
10812587
10812897
10813003
10813417
10813523
10813625
10813835
10814041
10814147
10814353
10814563
10814665
10814875
10815081
10815499
10815705
10815811
10815913
10816019
10816121
10816226
10816537
10816746`,
`7119533
7123689
7123693
7123696
7123700
7123704
7123708
7123718
7123743
7123753
7123763
7123767
7123776
7123780
11702914
11704218
11705472
11705579
11705679
11705787
11705888
11705995
11706096
11706203
11706305
11706412
11706617
11706724
11706825
11707557
11707762
11708702
11708907
11709327
11709532
11709848
11710053
11710160
11710261
11710368
11710469
11710993
11711198
11711409
11711510
11711722
11712031
11712138
11712343
11712451
11712552
11712763
11713489
11713804
11713905
11714221
11714322
11714429
11714634
11714845
11714946
11715158
11715259
11715470
11715779
11715886
11715988
11716719
11716924
11717240
11717341
11717553
11717653
11717865
11718070
11718281
11718382
11718489
11718695
11719010
11719215
11719323
11719423
11719635
11719944
11720155
11720361
11720676
11720777
11720884
11720985
11721093
11721193
11721301
11721506
11721613
11721818
11721925
11722026
11722134
11722339
11722446
11722651
11722758
11722859
11723071
11723796
11723904
11724421
11724632
11724942
11725049
11725150
11725465
11725566
11725778
11726087
11726298
11726503
11726819
11726920
11727027
11810884
11812373
11812476
11812581
11812684
11812789
11812891
11812997
11813099
11813205
11813307
11813413
11813515
11813621
11813723
11814453
11814555
11815493
11815699
11815909
11816115
11816221
11816323
11816533
11816739
11817053
11817155
11817261`,
`6324453
6328824
6328828
6328835
6328853
6328857
10906820
10908124
10909378
10909485
10909586
10909693
10909794
10909901
10910002
10910109
10910210
10910318
10910523
10910630
10910731
10911463
10911668
10912608
10912813
10913024
10913125
10913440
10913645
10913753
10913957
10914065
10914478
10914897
10915103
10915210
10915311
10915418
10915519
10915626
10915727
10915834
10915935
10916043
10916248
10916459
10916560
10916875
10917393
10917500
10917601
10917812
10917913
10918125
10918538
10918749
10918954
10919061
10919266
10919477
10919682
10919894
10919995
10920206
10920307
10920518
10920827
10920934
10921035
10921247
10921348
10921455
10921660
10921767
10921972
10922392
10922493
10922808
10923117
10923328
10923637
10923745
10923846
10924057
10924262
10924786
10925095
10925202
10925407
10925514
10925615
10925826
10926031
10926347
10926552
10926867
10927072
10927179
10927697
10927908
10928113
10928220
10928321
10928429
10928530
10928637
10928842
10928949
10929050
10929157
10929258
10929574
10929987
10930094
10930195
10930927
11013976
11015504
11015606
11015712
11015814
11015920
11016022
11016128
11016230
11016336
11016438
11016544
11016646
11016752
11016854
11017584
11017686
11018623
11018726
11018831
11018934
11019455
11019558
11019663
11019766
11019872
11020390
11020703
11020806
11020911
11021118
11021223
11021326
11021743`
];
x = times.map(t => parseBtnMessage(t));
// Dump hex strings
x.map(e => e.map(y => y.hex).map(hex => hex.padStart(2,"0")).join(" ")).forEach(s => console.log(s))
// A set of button trigger messages (each time the door opener button is pressed)
times = [`4423926
4425232
4426455
4426562
4426663
4426771
4426872
4426979
4427081
4427188
4427289
4427396
4427602
4427709
4427810
4428543
4428749
4429690
4429895
4430524
4430729
4430837
4431042
4431150
4431251
4431358
4431668
4431984
4432189
4432505
4432919
4433026
4433336
4433443
4433545
4433652
4433858
4433965
4434170
4434278
4434483
4434695
4434900
4435007
4435109
4435424
4435630
4435737
4435838
4436050
4436151
4436363
4436777
4436884
4436985
4437093
4437298
4437405
4437611
4437718
4437924
4438031
4438341
4438448
4438654
4438761
4439071
4439178
4439279
4439491
4439592
4439803
4439905
4440012
4440218
4440637
4440739
4441159
4441364
4441472
4441677
4441784
4441886
4441993
4442094
4442202
4442511
4443036
4443137
4443244
4443345
4443453
4443658
4443870
4443971
4444078
4444179
4444391
4444805
4445225
4445326
4445433
4445535
4445642
4445952
4446268
4446369
4446476
4446577
4446893
4447098
4447310
4447411
4448040
4525069
4526598
4526701
4526806
4526909
4527015
4527117
4527222
4527325
4527430
4527532
4527638
4527740
4527846
4527948
4528677
4528780
4529717
4530027
4530132
4530235
4530444
4530651
4530964
4531170
4531276
4531586
4531691
4531794
4532107
4532210
4532419
4532521
4532731
4532833
4533147`,
`3173634
3174940
3176150
3176257
3176358
3176465
3176567
3176674
3176775
3176882
3176983
3177091
3177296
3177404
3177505
3178238
3178443
3179384
3179589
3179697
3179798
3180531
3180736
3180844
3181153
3181260
3181466
3181677
3181883
3181990
3182091
3182407
3183029
3183345
3183551
3183658
3183759
3183867
3184176
3184388
3184489
3184700
3184802
3184909
3185010
3185117
3185323
3185430
3185531
3185743
3185844
3186056
3186157
3186264
3186470
3186785
3186886
3187098
3187199
3187411
3187616
3187723
3187825
3187932
3188033
3188140
3188242
3188453
3188763
3189183
3189388
3189496
3189597
3189704
3189910
3190017
3190118
3190225
3190326
3190434
3190639
3190851
3191056
3191580
3191681
3191789
3191890
3191997
3192203
3192310
3192411
3192623
3192724
3192831
3192933
3193144
3193349
3193665
3193766
3193874
3194079
3194186
3194496
3194708
3194913
3195020
3195122
3195229
3195330
3195437
3195643
3195750
3195955
3196063
3196268
3196376
3196477
3196584
3196789
3197105
3197206
3197314
3197519
3197731
3293690
3295154
3295256
3295362
3295464
3295570
3295672
3295778
3295880
3295986
3296088
3296193
3296296
3296402
3296504
3297233
3297335
3298273
3298375
3298896
3298999
3299104
3299207
3299312
3299415
3299832`,
`3895353
3896659
3897869
3897976
3898077
3898184
3898285
3898393
3898494
3898601
3898702
3898810
3899015
3899122
3899224
3899956
3900162
3901103
3901308
3902250
3902455
3902562
3902768
3903396
3903602
3903709
3903914
3904022
3904123
3904230
3904436
3904543
3904748
3904856
3904957
3905064
3905165
3905377
3905895
3906107
3906312
3906419
3906729
3906836
3907042
3907149
3907354
3907462
3907667
3907775
3908189
3908296
3908397
3908504
3908709
3908817
3909023
3909130
3909335
3909442
3909648
3909859
3910065
3910172
3910482
3910589
3910690
3910902
3911003
3911214
3911315
3911423
3911628
3911840
3911941
3912048
3912149
3912570
3912775
3912986
3913088
3913195
3913296
3913404
3913505
3913612
3913922
3914446
3914547
3914655
3914755
3914863
3915068
3915280
3915381
3915488
3915589
3915801
3915902
3916009
3916215
3916635
3916736
3916844
3916944
3917052
3917361
3917677
3917779
3918303
3918508
3918720
3918821
3918928
3919029
3919449
3987078
3988606
3988709
3988814
3988916
3989022
3989124
3989230
3989332
3989438
3989540
3989646
3989748
3989854
3989956
3990685
3990788
3991725
3991827
3992037
3992139
3992245
3992347
3992452
3992555
3992764
3992867
3992972
3993179
3993284
3993387
3993804
3993906
3994012`,
`4081476
4082782
4084031
4084138
4084239
4084346
4084448
4084555
4084656
4084764
4084864
4084972
4085177
4085285
4085386
4086118
4086324
4087265
4087470
4087682
4087887
4087995
4088096
4088203
4088304
4088412
4088617
4088933
4089138
4089558
4089763
4089871
4090180
4090392
4090493
4090601
4090910
4091017
4091119
4091539
4091640
4091747
4092057
4092269
4092369
4092477
4092682
4092790
4093204
4093311
4093412
4093624
4093725
4093832
4094037
4094145
4094350
4094562
4094767
4094979
4095080
4095188
4095497
4095604
4095705
4095813
4095914
4096022
4096122
4096334
4096644
4097064
4097165
4097272
4097373
4097481
4097790
4098106
4098312
4098732
4098937
4099045
4099250
4099462
4099771
4099879
4100084
4100504
4100605
4100713
4100814
4101026
4101231
4101547
4101648
4102172
4102378
4102589
4102690
4102902
4103212
4103319
4103524
4103632
4103837
4103945
4104046
4104257
4104671
4104987
4105088
4105613
4185382
4186920
4187023
4187128
4187231
4187336
4187439
4187544
4187647
4187752
4187854
4187960
4188166
4188272
4188374
4189103
4189206
4190143
4190246
4190455
4190661
4191182
4191285
4191598
4192012
4192222
4192324
4192638
4192740
4192950
4193156
4193261
4193364
4193573
4193780
4193885
4194092
4194301`,
` 3577068
3578374
3579564
3579672
3579772
3579880
3579981
3580088
3580189
3580297
3580398
3580505
3580711
3580818
3580919
3581652
3581857
3582799
3583004
3583111
3583212
3583320
3583421
3583528
3583629
3583737
3583838
3583945
3584151
3584258
3584463
3584675
3584880
3585092
3585297
3585613
3585923
3586031
3586131
3586239
3586444
3586760
3586966
3587177
3587591
3587698
3587799
3587907
3588008
3588220
3588425
3588532
3588738
3588950
3589051
3589262
3589468
3589575
3589885
3589992
3590197
3590305
3590406
3590617
3591031
3591243
3591344
3591452
3591552
3591660
3591761
3591973
3592178
3592285
3592386
3592598
3592803
3593015
3593325
3593745
3593846
3594266
3594471
3594579
3594680
3595100
3595305
3595412
3595618
3596142
3596347
3596559
3596764
3597080
3597286
3597497
3597598
3597706
3597911
3598540
3599058
3599478
3599579
3599790
3599892
3599999
3600204
3600520
3600725
3601146
3668427
3669955
3670058
3670163
3670266
3670371
3670474
3670579
3670681
3670787
3670889
3670995
3671097
3671203
3671305
3672034
3672137
3673074
3673176
3673593
3673696
3674009
3674215
3674321
3674423
3674633
3674735
3674841
3674943
3675153
3675255
3675672
3675878
3676088
3676295
3676400
3676502
3676712
3676814
3676919`,
`4890501
4891806
4893016
4893123
4893224
4893332
4893433
4893540
4893641
4893749
4893850
4893957
4894162
4894270
4894371
4895104
4895309
4896250
4896456
4896771
4896872
4897084
4897185
4897397
4897602
4897709
4897810
4898023
4898227
4898543
4898749
4898960
4899270
4899690
4899895
4900003
4900312
4900524
4901042
4901253
4901876
4901983
4902188
4902296
4903335
4903442
4904169
4904276
4904481
4904589
4904690
4904901
4905211
4905318
4905628
4906048
4906149
4906465
4906774
4907090
4907295
4907403
4907504
4907715
4907921
4908341
4908650
4908862
4909067
4909175
4909276
4909488
4909692
4910008
4910214
4910530
4910735
4910842
4911047
4911155
4911360
4911572
4911673
4911884
4912194
4912301
4912507
4912614
4912715
4912822
4913028
4913239
4913341
4913448
4913653
4913969
4914174
4914282
4914383
4914594
4992920
4994450
4994552
4994657
4994760
4994866
4994968
4995073
4995176
4995281
4995384
4995489
4995592
4995697
4995799
4996529
4996631
4997568
4997671
4997984
4998086
4998400
4998502
4998608
4998918
4999439
4999646
4999855
4999958
5000063
5000166
5000271
5000373
5000479
5001101
5001207
5002141
5002350
5002453
5002558
5002973
5003078
5003181
5003286
5003596
5003702
5004220
5004326
5004636
5004742`,
`4262473
4263779
4264943
4265050
4265151
4265258
4265359
4265467
4265568
4265675
4265777
4265884
4266089
4266196
4266297
4267030
4267236
4268177
4268382
4268594
4268695
4269011
4269112
4269324
4269529
4269636
4269946
4270157
4270258
4270470
4270675
4270783
4270884
4271200
4271822
4272034
4272135
4272242
4272343
4272659
4272968
4273389
4273490
4273701
4274115
4274431
4274532
4274744
4274845
4275057
4275262
4275473
4275574
4275786
4275887
4276203
4276408
4276516
4276825
4277141
4277242
4277350
4277555
4277662
4277763
4277975
4278077
4278184
4278389
4278496
4278702
4279122
4279223
4279643
4279848
4279956
4280057
4280477
4280995
4281519
4281724
4281936
4282141
4282457
4282663
4282874
4282975
4283083
4283288
4283500
4283601
4283812
4284122
4284229
4284435
4284855
4284956
4285376
4285581
4285897
4286102
4286522
4359859
4361387
4361490
4361595
4361698
4361803
4361906
4362011
4362114
4362219
4362321
4362427
4362529
4362635
4362737
4363466
4363569
4364506
4364608
4365130
4365232
4365546
4365648
4365754
4365856
4365962
4366064
4366585
4366688
4366793
4366895
4367105
4367207
4367417
4367727
4368040
4368247
4368352
4368767
4368872
4368975
4369080
4369183
4369288
4369494
4369600
4369806
4369912`,
`3752926
3754231
3755440
3755548
3755649
3755756
3755857
3755965
3756066
3756173
3756274
3756382
3756587
3756694
3756795
3757528
3757733
3758674
3758880
3758987
3759088
3759300
3759401
3759717
3760026
3760133
3760547
3760967
3761173
3761280
3761693
3761801
3761902
3762009
3762319
3762426
3762736
3763260
3763465
3763989
3764090
3764406
3764611
3765344
3765445
3765553
3765758
3766074
3766175
3766699
3766905
3767012
3767321
3767845
3768051
3768471
3768676
3768992
3769197
3769513
3769614
3769722
3769822
3770138
3770343
3770555
3770656
3770868
3771490
3771597
3771698
3771910
3772636
3772952
3773053
3773160
3773366
3773473
3773783
3773995
3774095
3774307
3774929
3775036
3775137
3775870
3776075
3776391
3776492
3776600
3776805
3777017
3863722
3865252
3865355
3865460
3865563
3865668
3865770
3865876
3865978
3866084
3866186
3866292
3866602
3866708
3866810
3867539
3867746
3868683
3868785
3869307
3869409
3869514
3869617
3869722
3869929
3870034
3870137
3870554
3870656
3870866
3870968
3871074
3871176
3871386
3871592
3871698
3872008
3872113
3872216
3872321
3872528
3872633
3873048
3873569
3873775
3873881
3874087
3874193
3874711
3874817
3875231
3875336
3875439
3875544
3875647
3875752
3876063
3876169`
];
x = times.map(t => parseBtnMessage(t));
// Dump hex strings
x.map(e => e.map(y => y.hex).map(hex => hex.padStart(2,"0")).join(" ")).forEach(s => console.log(s))
// A set of button light messages (each time the light button is pressed)
times = [
`3589813
3591117
3592325
3592432
3592533
3592640
3592741
3592848
3592949
3593057
3593158
3593265
3593470
3593577
3593678
3594410
3594615
3595555
3595760
3596387
3596488
3596699
3596904
3597012
3597113
3597220
3597321
3597428
3597633
3597844
3598049
3598261
3598362
3598469
3598674
3598989
3599194
3599302
3599403
3599510
3599611
3599718
3599819
3599926
3600027
3600134
3600340
3600551
3601068
3601279
3601484
3601592
3601797
3601904
3602109
3602216
3602629
3602737
3602837
3602945
3603150
3603257
3603774
3603986
3604191
3604298
3604503
3604610
3604920
3605339
3605440
3605860
3606064
3606276
3606481
3607004
3607209
3607317
3607522
3607733
3608042
3608149
3608355
3608670
3608979
3609190
3609500
3609711
3609916
3610440
3610645
3610856
3610957
3611168
3611374
3611585
3611790
3611897
3611998
3612105
3612310
3612730
3612935
3613042
3613143
3613250
3613351
3613875
4737373
4738677
4739904
4740012
4740113
4740220
4740321
4740428
4740529
4740636
4740738
4740845
4741050
4741157
4741258
4741990
4742194
4743134
4743339
4743551
4743756
4743967
4744172
4744279
4744485
4744592
4744693
4744904
4745213
4745424
4745629
4745841
4746150
4746465
4746774
4747090
4747191
4747298
4747399
4747610
4747920
4748027`,
`3962337
3963640
3964848
3964955
3965056
3965163
3965264
3965371
3965472
3965580
3965681
3965788
3965993
3966100
3966201
3966933
3967138
3968078
3968283
3968390
3968491
3968598
3968699
3968910
3969115
3969223
3969428
3969535
3969740
3969847
3969948
3970055
3970156
3970368
3970573
3970680
3970781
3970888
3970989
3971305
3971718
3971825
3971926
3972137
3972863
3972970
3973071
3973178
3973383
3973490
3974008
3974323
3974424
3974636
3974736
3974844
3975153
3975364
3975465
3975572
3975777
3975885
3976298
3976405
3976506
3976718
3976818
3976925
3977130
3977238
3977443
3977654
3977859
3977966
3978067
3978174
3978275
3978383
3978588
3978695
3978900
3979528
3979733
3979840
3980253
3980360
3980461
3980568
3980877
3981089
3981294
3981609
3982022
3982233
3982335
3982442
3982542
3982754
3982855
3982962
3983167
3983274
3983375
3983586
3983687
3983794
3983895
3984003
3984312
3984523
3984728
3985147
3985456
3985563
3985872
3986292
8094384
8095687
8096856
8096963
8097064
8097171
8097272
8097379
8097480
8097587
8097688
8097795
8098000
8098108
8098208
8098940
8099145
8100085
8100290
8100813
8100915
8101229
8101435
8101542
8101851
8101958
8102163
8102374
8102579
8102686
8102891
8102999
8103308
8103519`,
`3040435
3041739
3042921
3043028
3043129
3043236
3043337
3043445
3043546
3043653
3043754
3043861
3044066
3044173
3044275
3045006
3045211
3046151
3046356
3046464
3046565
3046776
3046981
3047192
3047501
3047713
3047814
3048442
3048647
3048754
3048959
3049274
3049479
3049587
3049792
3050003
3050104
3050211
3050312
3050420
3050520
3050732
3050937
3051252
3051353
3051773
3052082
3052918
3053227
3053646
3053747
3053959
3054060
3054167
3054372
3054687
3054788
3055312
3055517
3055624
3055725
3055832
3055933
3056041
3056141
3056353
3056662
3056769
3056870
3057290
3057391
3057602
3057807
3057914
3058223
3058331
3058432
3058539
3058952
3059059
3059265
3059372
3059473
3059580
3059681
3059788
3060097
3060205
3060306
3060413
3060514
3060725
3060826
3061038
3061243
3061454
3061659
3061766
3061867
3061975
3062075
3062183
3062388
3062599
3062700
3062807
3062908
3063224
3063533
3063640
3063845
3064161
3064366
3064473
3738765
3740070
3741291
3741398
3741499
3741607
3741708
3741815
3741916
3742023
3742124
3742232
3742437
3742544
3742645
3743377
3743582
3744522
3744727
3745147
3745352
3745564
3745873
3746084
3746185
3746500
3746601
3746813
3747018
3747125
3747226
3747542
3747851
3747958
3748163
3748270`,
`3085080
3086384
3087546
3087653
3087754
3087862
3087963
3088070
3088171
3088278
3088379
3088486
3088691
3088799
3088900
3089632
3089837
3090777
3090982
3091193
3091294
3091714
3091815
3091922
3092127
3092234
3092647
3093067
3093272
3093484
3093689
3094108
3094417
3094525
3094625
3094941
3095562
3095670
3095770
3095982
3096187
3096294
3096708
3097023
3097228
3097335
3097437
3097647
3097852
3098064
3098165
3098376
3098477
3098689
3098998
3099105
3099206
3099417
3099622
3099730
3099830
3099938
3100143
3100354
3100559
3100771
3100872
3101083
3101288
3101395
3101600
3101812
3102017
3102228
3102434
3102749
3102954
3103270
3103579
3103686
3103995
3104311
3104724
3104832
3105037
3105144
3105870
3105977
3106078
3106185
3106391
3106498
3106599
3106706
3107015
3107227
3107432
3107539
3107848
3107956
3108161
3108268
3108369
3108685
3108890
3108997
4955183
4956487
4957702
4957809
4957910
4958017
4958118
4958226
4958326
4958434
4958535
4958642
4958847
4958954
4959055
4959787
4959992
4960933
4961138
4961245
4961346
4961870
4961970
4962078
4962283
4962494
4962699
4963223
4963428
4963535
4963740
4963848
4963948
4964056
4964157
4964264
4964573
4964681
4964990
4965305
4965406
4965514
4965718
4965930`,
`4512489
4513793
4515008
4515115
4515216
4515323
4515424
4515531
4515632
4515740
4515840
4515948
4516153
4516260
4516361
4517093
4517298
4518238
4518443
4518655
4518860
4519071
4519172
4519279
4519588
4519696
4519797
4520008
4520213
4520529
4520734
4521049
4521254
4521362
4521463
4521570
4521879
4522195
4522400
4522715
4523024
4523132
4523336
4523444
4523649
4523756
4523857
4523964
4524169
4524277
4524377
4524485
4524690
4524901
4525002
4525109
4525314
4525526
4525731
4525838
4526043
4526255
4526460
4526567
4526772
4526984
4527085
4527296
4527605
4528129
4528230
4528545
4528750
4528962
4529167
4529378
4529479
4529691
4529896
4530003
4530208
4530316
4530625
4530836
4531041
4531148
4531250
4531357
4531666
4531773
4532186
4532398
4532499
4532814
4532915
4533126
4533332
4533439
4533644
4533751
4534060
4534168
4534477
4534584
4534685
4534792
4534997
4535417
4535622
4535730
4536039
4536250
4536351
4536458
5868982
5870286
5871494
5871601
5871702
5871809
5871910
5872018
5872119
5872226
5872327
5872434
5872639
5872747
5872848
5873579
5873784
5874725
5874930
5875037
5875138
5875453
5875554
5875661
5875763
5875870
5876075
5876286
5876699
5877015
5877220
5877328
5877741
5878056
5878365
5878472`,
`3728240
3729544
3730771
3730879
3730980
3731087
3731188
3731295
3731396
3731504
3731604
3731712
3731917
3732024
3732125
3732857
3733062
3734002
3734207
3734731
3734832
3734939
3735040
3735147
3735352
3735460
3735665
3735876
3736081
3736292
3736498
3736605
3736706
3736917
3737122
3737437
3737642
3738062
3738163
3738270
3738371
3738583
3738788
3738895
3739204
3739311
3739516
3739624
3739933
3740040
3740558
3740665
3741078
3741185
3741286
3741394
3741911
3742018
3742223
3742435
3742640
3742747
3742952
3743059
3743368
3743476
3743577
3743996
3744201
3744308
3744513
3744725
3744826
3744933
3745242
3745454
3745659
3746078
3746387
3746599
3746804
3747119
3747220
3747327
3747428
3747744
3747949
3748160
3748574
3748681
3749094
3749201
3749406
3749514
3749823
3750034
3750239
3750555
3750656
3750763
3750968
3751179
3751384
3751700
3752009
3752221
4635227
4636531
4637752
4637860
4637961
4638068
4638169
4638276
4638377
4638484
4638585
4638693
4638898
4639005
4639106
4639838
4640043
4640983
4641188
4641399
4641500
4641608
4641813
4642128
4642333
4642753
4642854
4642962
4643062
4643274
4643479
4643794
4643895
4644002
4644103
4644211
4644312
4644419
4644624
4644835
4645144
4645356
4645457
4645564`,
`6710128
6711432
6712627
6712734
6712835
6712942
6713044
6713151
6713252
6713359
6713460
6713567
6713772
6713880
6713980
6714713
6714917
6715857
6716063
6716794
6716896
6717003
6717208
6717419
6717520
6717731
6717937
6718148
6718353
6718877
6719186
6719293
6719498
6719709
6719810
6719918
6720019
6720126
6720227
6720438
6720643
6720959
6721060
6721167
6721372
6721479
6721788
6721895
6722101
6722312
6722413
6722520
6722934
6723041
6723142
6723249
6723454
6723561
6723766
6723873
6724079
6724290
6724495
6724602
6724808
6724915
6725224
6725852
6726057
6726164
6726369
6726580
6727098
6727309
6727514
6727726
6727827
6727934
6728243
6728454
6728660
6728975
6729284
6729600
6729805
6730016
6730950
6731057
6731158
6731370
6731471
6731578
6731679
6731786
6732095
6732203
6732304
6732411
6732928
6733035
6733241
6733556
6733969
6734076
7649250
7650553
7651801
7651908
7652009
7652116
7652217
7652324
7652426
7652533
7652634
7652741
7652946
7653053
7653154
7653886
7654091
7655031
7655237
7655448
7655549
7655656
7655757
7655864
7655965
7656177
7656382
7656489
7656798
7657009
7657110
7657322
7657527
7657634
7657943
7658050
7658360
7658467
7658672
7658779
7658880
7659196
7659505
7659612
7659817
7660133`,
`3530681
3531986
3533234
3533341
3533442
3533550
3533650
3533758
3533859
3533966
3534067
3534174
3534379
3534487
3534588
3535320
3535525
3536466
3536671
3536778
3536879
3536987
3537088
3537195
3537296
3537507
3537817
3537924
3538129
3538236
3538338
3538445
3538546
3538758
3538963
3539070
3539379
3539695
3540108
3540528
3540838
3540945
3541254
3541362
3541463
3541570
3541775
3541987
3542401
3542612
3542817
3542924
3543130
3543341
3543546
3543758
3543859
3543966
3544171
3544383
3544692
3544799
3544900
3545112
3545213
3545320
3545525
3545632
3545838
3546778
3546983
3547195
3547400
3547924
3548129
3548236
3548441
3548653
3548962
3549069
3549274
3549590
3549899
3550111
3550420
3550631
3550837
3550944
3551045
3551361
3551566
3551673
3551878
3551985
3552399
3552506
3552711
3552818
3552920
3553027
3553232
3553339
3553440
3553652
3553857
3553964
3554273
3554381
3554482
3554693
5096276
5097580
5098769
5098876
5098977
5099084
5099185
5099293
5099394
5099501
5099602
5099709
5099914
5100022
5100123
5100855
5101060
5102000
5102206
5102521
5102622
5102730
5102830
5103042
5103351
5103458
5103559
5103667
5104080
5104291
5104497
5104708
5105122
5105333
5105643
5105750
5105851
5105958
5106267
5106479`,
`5867205
5868510
5869705
5869813
5869914
5870021
5870122
5870229
5870330
5870437
5870538
5870646
5870851
5870958
5871059
5871791
5871996
5872937
5873142
5873249
5873350
5874082
5874288
5874395
5874600
5875228
5875433
5875540
5875641
5876061
5876579
5876998
5877204
5877415
5877725
5877936
5878037
5878248
5878349
5878457
5878870
5878977
5879079
5879290
5879391
5879602
5879703
5879811
5880016
5880331
5880433
5880644
5880745
5880956
5881162
5881685
5881786
5881998
5882307
5882414
5882515
5883143
5883453
5883872
5884078
5884393
5884599
5884810
5884911
5885018
5885119
5885226
5885744
5886059
5886160
5886268
5886577
5886684
5886889
5887309
5887514
5887621
5888035
5888142
5888243
5888455
5888556
5888663
5888764
5888871
5889181
5889496
5889597
5889705
5889910
5890121
5890326
5890642
5890951
5891163
7111572
7112876
7114098
7114205
7114306
7114413
7114514
7114622
7114722
7114830
7114931
7115038
7115243
7115350
7115451
7116183
7116389
7117329
7117534
7117954
7118159
7118266
7118367
7118474
7118680
7118787
7118888
7119307
7119409
7119620
7119825
7120349
7120658
7120765
7120971
7121286
7121491
7121911
7122116
7122223
7122324
7122431
7122533
7122744
7122949
7123056
7123262
7123473
7123678
7123785`
];
x = times.map(t => parseBtnMessage(t));
// Dump hex strings
x.map(e => e.map(y => y.hex).map(hex => hex.padStart(2,"0")).join(" ")).forEach(s => console.log(s))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment