Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add learn and clear capability #149

Merged
merged 10 commits into from
Jan 18, 2024
Merged

Conversation

mulcmu
Copy link
Contributor

@mulcmu mulcmu commented Dec 18, 2023

Adds a switch that will initiate the remote learning cycle. Switch tracks learn initiated by gdo button and wall control as well. Toggling switch back off will terminate the learn cycle initiated by ratgdo, gdo, or the wall control. Learn timeout was about 3 minutes on my gdo.

Test cases, door open by using ratgdo, gdo, & wall control to

  • initiate learn and let time out
  • initiate learn and then cancel with ratgdo
  • initiate learn and pair a remote

Repeated tests with door closed.

Learn initiated by wall control causes wall control status LED to flash. It doesn't return to normal when learn is deactivated by ratgdo until the gdo light state changes or door is operated. It keeps spamming GET_STATUS every second until status LED returns to normal. This might just be a quirk of the wall panel firmware ignoring STATUS messages it didn't request. It doesn't seem to hurt anything and would be a pretty rare edge case anyway.

clang-format --style=Webkit formatted.

delete commented code on line 765
@bdraco
Copy link
Member

bdraco commented Dec 18, 2023

I'll try to test this week. I have family showing up for the holiday though so my time is quite limited at the moment

@mulcmu
Copy link
Contributor Author

mulcmu commented Dec 18, 2023

Sounds good. I only have one gdo to test. If your wall controls send something other than LEARN_2 when pressed it might take some more research.

@mariusmuja
Copy link
Collaborator

Nice feature, it can save a climb up the ladder :) I'll give it a try on my GDO as well sometime this week.

@mulcmu
Copy link
Contributor Author

mulcmu commented Dec 21, 2023

Extra scope being added for number of paired devices and function to clear devices.

@mulcmu mulcmu changed the title New feature: Add learn capability New feature: Add learn and clear capability Dec 23, 2023
@mulcmu mulcmu marked this pull request as ready for review December 23, 2023 14:12
@mariusmuja
Copy link
Collaborator

I managed to test this, works great!

I made a few minor changes (added an enum for the paired devices types) and improved the sync of paired devices (no need to sync all types multiple times on every sync step), I'll send a merge request against your branch.

@bdraco bdraco changed the title New feature: Add learn and clear capability feat: add learn and clear capability Jan 3, 2024
@mariusmuja
Copy link
Collaborator

@mulcmu Can you merge mulcmu#3 into the learn-switch branch so we can get this merged and have it included in the secplusv1 refactoring?

@mulcmu
Copy link
Contributor Author

mulcmu commented Jan 8, 2024

Yep just merged it.

I didn't remember getting a message for the PR...apparently github doesn't default to watching your own forks.

@mariusmuja
Copy link
Collaborator

Great! @bdraco we should merge this, it worked great for me and it's a useful feature.

@bdraco
Copy link
Member

bdraco commented Jan 18, 2024

pushed to repo as learn_switch_test for testing

@bdraco
Copy link
Member

bdraco commented Jan 18, 2024

I'm getting unavailable on the toggle door button for one GDO after flashing this. I'm digging in as it makes no sense

Screenshot 2024-01-18 at 10 08 41 AM Screenshot 2024-01-18 at 10 08 51 AM

@bdraco
Copy link
Member

bdraco commented Jan 18, 2024

Screenshot 2024-01-18 at 10 12 11 AM

There is a pretty significant drop in free memory with this PR

base.yaml Outdated Show resolved Hide resolved
@bdraco
Copy link
Member

bdraco commented Jan 18, 2024

Button issue is not caused by this PR. I fixed it in home-assistant/core#108316

base.yaml Outdated Show resolved Hide resolved
@bdraco
Copy link
Member

bdraco commented Jan 18, 2024

Found a blocker.

If I press the learn button on the wall control, the learn switch turns on, and than I exit out on the wall control, the learn switch turns off and the rolling code counter increments about every second until I reboot the esp

RPReplay_Final1705610628.mp4

@bdraco
Copy link
Member

bdraco commented Jan 18, 2024

Logs

% aioesphomeapi-logs neargarageratgdo
2024-01-18 10:54:26.281 INFO     Successfully connected to neargarageratgdo @ 192.168.107.146 in 0.230s
2024-01-18 10:54:26.333 INFO     Successful handshake with neargarageratgdo @ 192.168.107.146 in 0.052s
[10:54:26.385][I][app:102]: ESPHome version 2023.12.7 compiled on Jan 18 2024, 10:37:03
[10:54:26.398][I][app:104]: Project ratgdo.esphome version 2.0
[10:54:26.398][C][wifi:573]: WiFi:
[10:54:26.409][C][wifi:405]:   Local MAC: 84:CC:A8:A7:4B:A3
[10:54:26.409][C][wifi:410]:   SSID: 'atlanticiot'
[10:54:26.409][C][wifi:411]:   IP Address: 192.168.107.146
[10:54:26.426][C][wifi:412]:   BSSID: E6:38:83:10:67:5D
[10:54:26.426][C][wifi:414]:   Hostname: 'neargarageratgdo'
[10:54:26.441][C][wifi:416]:   Signal strength: -48 dB ▂▄▆█
[10:54:26.441][C][wifi:420]:   Channel: 1
[10:54:26.441][C][wifi:421]:   Subnet: 255.255.254.0
[10:54:26.441][C][wifi:422]:   Gateway: 192.168.107.1
[10:54:26.455][C][wifi:423]:   DNS1: 192.168.107.1
[10:54:26.455][C][wifi:424]:   DNS2: 1.1.1.1
[10:54:26.471][C][logger:439]: Logger:
[10:54:26.471][C][logger:440]:   Level: DEBUG
[10:54:26.471][C][logger:441]:   Log Baud Rate: 115200
[10:54:26.471][C][logger:443]:   Hardware UART: UART0
[10:54:26.498][C][ratgdo.number:021]: RATGDO Number 'Rolling code counter'
[10:54:26.508][C][ratgdo.number:021]:   Unit of Measurement: 'codes'
[10:54:26.525][C][ratgdo.number:025]:   Type: Rolling Code Counter
[10:54:26.530][D][api.connection:145]: aioesphomeapi (192.168.106.56): Sending keepalive failed 4 time(s), will retry in 1000 ms
[10:54:26.554][C][ratgdo.number:021]: RATGDO Number 'Opening duration'
[10:54:26.594][C][ratgdo.number:021]:   Unit of Measurement: 's'
[10:54:26.594][C][ratgdo.number:027]:   Type: Opening Duration
[10:54:26.594][C][ratgdo.number:021]: RATGDO Number 'Closing duration'
[10:54:26.594][C][ratgdo.number:021]:   Unit of Measurement: 's'
[10:54:26.594][C][ratgdo.number:029]:   Type: Closing Duration
[10:54:26.599][C][ratgdo.number:021]: RATGDO Number 'Client ID'
[10:54:26.599][C][ratgdo.number:023]:  Type: Client ID
[10:54:26.611][C][template.sensor:022]: Template Sensor 'ratgdo Free Memory'
[10:54:26.611][C][template.sensor:022]:   State Class: 'measurement'
[10:54:26.626][C][template.sensor:022]:   Unit of Measurement: 'B'
[10:54:26.626][C][template.sensor:022]:   Accuracy Decimals: 1
[10:54:26.635][C][template.sensor:023]:   Update Interval: 60.0s
[10:54:26.646][C][switch.gpio:068]: GPIO Switch 'Status door'
[10:54:26.657][C][switch.gpio:090]:   Restore Mode: always OFF
[10:54:26.657][C][switch.gpio:031]:   Pin: GPIO16
[10:54:26.688][C][switch.gpio:068]: GPIO Switch 'Status obstruction'
[10:54:26.688][C][switch.gpio:090]:   Restore Mode: always OFF
[10:54:26.688][C][switch.gpio:031]:   Pin: GPIO15
[10:54:26.743][C][gpio.binary_sensor:015]: GPIO Binary Sensor 'Dry contact open'
[10:54:26.749][C][gpio.binary_sensor:016]:   Pin: GPIO14
[10:54:26.768][C][gpio.binary_sensor:015]: GPIO Binary Sensor 'Dry contact close'
[10:54:26.783][C][gpio.binary_sensor:016]:   Pin: GPIO12
[10:54:26.783][C][gpio.binary_sensor:015]: GPIO Binary Sensor 'Dry contact light'
[10:54:26.783][C][gpio.binary_sensor:016]:   Pin: GPIO0
[10:54:26.804][C][light:103]: Light 'Light'
[10:54:26.839][C][ratgdo:081]: Setting up RATGDO...
[10:54:26.845][C][ratgdo:082]:   Output GDO Pin: GPIO2
[10:54:26.845][C][ratgdo:083]:   Input GDO Pin: GPIO4
[10:54:26.845][C][ratgdo:087]:   Input Obstruction Pin: GPIO13
[10:54:26.845][C][ratgdo:089]:   Rolling Code Counter: 2382
[10:54:26.845][C][ratgdo:090]:   Client ID: 58681
[10:54:26.862][C][ratgdo.sensor:041]: RATGDO Sensor 'Openings'
[10:54:26.925][C][ratgdo.sensor:041]:   State Class: ''
[10:54:26.925][C][ratgdo.sensor:041]:   Unit of Measurement: 'openings'
[10:54:26.925][C][ratgdo.sensor:041]:   Accuracy Decimals: 0
[10:54:26.925][C][ratgdo.sensor:041]:   Icon: 'mdi:open-in-app'
[10:54:26.925][C][ratgdo.sensor:043]:   Type: Openings
[10:54:26.925][C][ratgdo.sensor:041]: RATGDO Sensor 'Paired Devices'
[10:54:26.925][C][ratgdo.sensor:041]:   State Class: ''
[10:54:26.925][C][ratgdo.sensor:041]:   Unit of Measurement: ''
[10:54:26.925][C][ratgdo.sensor:041]:   Accuracy Decimals: 0
[10:54:26.925][C][ratgdo.sensor:041]:   Icon: 'mdi:remote'
[10:54:26.925][C][ratgdo.sensor:045]:   Type: Paired Devices
[10:54:26.934][C][ratgdo.lock:012]: RATGDO Lock 'Lock remotes'
[10:54:26.934][C][ratgdo.lock:013]:   Type: Lock
[10:54:26.952][C][ratgdo.switch:068]: RATGDO Switch 'Learn'
[10:54:26.959][C][ratgdo.switch:070]:   Icon: 'mdi:plus-box'
[10:54:26.959][C][ratgdo.switch:090]:   Restore Mode: always OFF
[10:54:26.959][C][ratgdo.switch:014]:   Type: Learn
[10:54:26.991][C][ratgdo.binary_sensor:036]: RATGDO BinarySensor 'Motion'
[10:54:26.991][C][ratgdo.binary_sensor:036]:   Device Class: 'motion'
[10:54:26.991][C][ratgdo.binary_sensor:038]:   Type: Motion
[10:54:26.999][C][ratgdo.binary_sensor:036]: RATGDO BinarySensor 'Obstruction'
[10:54:27.017][C][ratgdo.binary_sensor:036]:   Device Class: 'problem'
[10:54:27.017][C][ratgdo.binary_sensor:040]:   Type: Obstruction
[10:54:27.026][C][ratgdo.binary_sensor:036]: RATGDO BinarySensor 'Button'
[10:54:27.040][C][ratgdo.binary_sensor:044]:   Type: Button
[10:54:27.047][C][ratgdo.binary_sensor:036]: RATGDO BinarySensor 'Motor'
[10:54:27.053][C][ratgdo.binary_sensor:036]:   Device Class: 'running'
[10:54:27.053][C][ratgdo.binary_sensor:042]:   Type: Motor
[10:54:27.075][C][ratgdo.cover:014]: RATGDO Cover 'Door'
[10:54:27.075][C][ratgdo.cover:014]:   Device Class: 'garage'
[10:54:27.101][C][ratgdo.light:014]: RATGDO Light
[10:54:27.111][D][number:012]: 'Rolling code counter': Sending state 2383.000000
[10:54:27.127][C][restart.button:017]: Restart Button 'Restart'
[10:54:27.147][C][safe_mode.button:022]: Safe Mode Button 'Safe mode boot'
[10:54:27.163][C][safe_mode.button:022]:   Icon: 'mdi:restart-alert'
[10:54:27.178][C][homeassistant.time:010]: Home Assistant Time:
[10:54:27.178][C][homeassistant.time:011]:   Timezone: 'HST10'
[10:54:27.245][D][ratgdo:224]: Status: door=CLOSED light=ON lock=UNLOCKED learn=ACTIVE
[10:54:27.245][C][web_server:168]: Web Server:
[10:54:27.245][C][web_server:169]:   Address: neargarageratgdo.local:80
[10:54:27.245][C][mdns:115]: mDNS:
[10:54:27.245][C][mdns:116]:   Hostname: neargarageratgdo
[10:54:27.256][C][ota:097]: Over-The-Air Updates:
[10:54:27.256][C][ota:098]:   Address: neargarageratgdo.local:8266
[10:54:27.295][C][api:139]: API Server:
[10:54:27.295][C][api:140]:   Address: neargarageratgdo.local:6053
[10:54:27.295][C][api:144]:   Using noise encryption: NO
[10:54:27.533][D][api.connection:145]: aioesphomeapi (192.168.106.56): Sending keepalive failed 5 time(s), will retry in 1000 ms
[10:54:28.147][D][number:012]: 'Rolling code counter': Sending state 2384.000000
[10:54:28.213][D][ratgdo:224]: Status: door=CLOSED light=ON lock=UNLOCKED learn=ACTIVE
[10:54:28.712][D][api.connection:145]: aioesphomeapi (192.168.106.56): Sending keepalive failed 6 time(s), will retry in 1000 ms
[10:54:29.103][D][number:012]: 'Rolling code counter': Sending state 2385.000000
[10:54:29.194][D][ratgdo:224]: Status: door=CLOSED light=ON lock=UNLOCKED learn=ACTIVE
[10:54:29.513][D][esp8266.preferences:238]: Saving preferences to flash...
[10:54:29.544][D][api.connection:145]: aioesphomeapi (192.168.106.56): Sending keepalive failed 7 time(s), will retry in 1000 ms
[10:54:30.102][D][number:012]: 'Rolling code counter': Sending state 2386.000000
[10:54:30.198][D][ratgdo:224]: Status: door=CLOSED light=ON lock=UNLOCKED learn=ACTIVE
[10:54:30.559][D][api.connection:145]: aioesphomeapi (192.168.106.56): Sending keepalive failed 8 time(s), will retry in 1000 ms
[10:54:31.140][D][number:012]: 'Rolling code counter': Sending state 2387.000000
[10:54:31.202][D][ratgdo:224]: Status: door=CLOSED light=ON lock=UNLOCKED learn=ACTIVE
[10:54:31.581][D][api.connection:145]: aioesphomeapi (192.168.106.56): Sending keepalive failed 9 time(s), will retry in 1000 ms
[10:54:32.107][D][number:012]: 'Rolling code counter': Sending state 2388.000000
[10:54:32.209][D][ratgdo:224]: Status: door=CLOSED light=ON lock=UNLOCKED learn=ACTIVE
[10:54:32.554][W][api.connection:142]: aioesphomeapi (192.168.106.56): Sending keepalive failed 10 time(s), will retry in 1000 ms
[10:54:33.166][D][number:012]: 'Rolling code counter': Sending state 2389.000000
[10:54:33.244][D][ratgdo:224]: Status: door=CLOSED light=ON lock=UNLOCKED learn=ACTIVE
[10:54:33.568][W][api.connection:142]: aioesphomeapi (192.168.106.56): Sending keepalive failed 11 time(s), will retry in 1000 ms
[10:54:34.121][D][number:012]: 'Rolling code counter': Sending state 2390.000000
[10:54:34.317][D][ratgdo:224]: Status: door=CLOSED light=ON lock=UNLOCKED learn=ACTIVE
[10:54:34.515][D][esp8266.preferences:238]: Saving preferences to flash...
[10:54:34.589][W][api.connection:142]: aioesphomeapi (192.168.106.56): Sending keepalive failed 12 time(s), will retry in 1000 ms
[10:54:35.102][D][number:012]: 'Rolling code counter': Sending state 2391.000000
[10:54:35.189][D][ratgdo:224]: Status: door=CLOSED light=ON lock=UNLOCKED learn=ACTIVE
[10:54:35.595][W][api.connection:142]: aioesphomeapi (192.168.106.56): Sending keepalive failed 13 time(s), will retry in 1000 ms
[10:54:36.107][D][number:012]: 'Rolling code counter': Sending state 2392.000000
[10:54:36.200][D][ratgdo:224]: Status: door=CLOSED light=ON lock=UNLOCKED learn=ACTIVE
[10:54:36.603][W][api.connection:142]: aioesphomeapi (192.168.106.56): Sending keepalive failed 14 time(s), will retry in 1000 ms
[10:54:37.127][D][number:012]: 'Rolling code counter': Sending state 2393.000000
[10:54:37.188][D][ratgdo:224]: Status: door=CLOSED light=ON lock=UNLOCKED learn=ACTIVE
[10:54:37.621][W][api.connection:142]: aioesphomeapi (192.168.106.56): Sending keepalive failed 15 time(s), will retry in 1000 ms
[10:54:38.108][D][number:012]: 'Rolling code counter': Sending state 2394.000000
[10:54:38.592][D][ratgdo:224]: Status: door=CLOSED light=ON lock=UNLOCKED learn=ACTIVE
[10:54:38.702][W][api.connection:142]: aioesphomeapi (192.168.106.56): Sending keepalive failed 16 time(s), will retry in 1000 ms
[10:54:39.112][D][number:012]: 'Rolling code counter': Sending state 2395.000000
[10:54:39.312][D][ratgdo:224]: Status: door=CLOSED light=ON lock=UNLOCKED learn=ACTIVE
[10:54:40.073][D][esp8266.preferences:238]: Saving preferences to flash...
[10:54:40.074][W][api.connection:142]: aioesphomeapi (192.168.106.56): Sending keepalive failed 17 time(s), will retry in 1000 ms
[10:54:40.151][D][number:012]: 'Rolling code counter': Sending state 2396.000000
[10:54:40.212][D][ratgdo:224]: Status: door=CLOSED light=ON lock=UNLOCKED learn=ACTIVE
[10:54:40.715][W][api.connection:142]: aioesphomeapi (192.168.106.56): Sending keepalive failed 18 time(s), will retry in 1000 ms
[10:54:40.887][D][ratgdo:265]: Motion: DETECTED
[10:54:41.003][D][binary_sensor:036]: 'Motion': Sending state ON
[10:54:42.116][D][number:012]: 'Rolling code counter': Sending state 2397.000000
[10:54:42.116][D][ratgdo:224]: Status: door=CLOSED light=ON lock=UNLOCKED learn=ACTIVE
[10:54:42.116][D][binary_sensor:036]: 'Motion': Sending state OFF
[10:54:42.116][W][api.connection:142]: aioesphomeapi (192.168.106.56): Sending keepalive failed 19 time(s), will retry in 1000 ms
[10:54:42.612][D][number:012]: 'Rolling code counter': Sending state 2398.000000
[10:54:42.612][D][ratgdo:224]: Status: door=CLOSED light=ON lock=UNLOCKED learn=ACTIVE
[10:54:42.697][W][api.connection:142]: aioesphomeapi (192.168.106.56): Sending keepalive failed 20 time(s), will retry in 1000 ms
[10:54:43.102][D][number:012]: 'Rolling code counter': Sending state 2399.000000
[10:54:43.203][D][ratgdo:224]: Status: door=CLOSED light=ON lock=UNLOCKED learn=ACTIVE
[10:54:43.699][W][api.connection:142]: aioesphomeapi (192.168.106.56): Sending keepalive failed 21 time(s), will retry in 1000 ms
[10:54:44.123][D][number:012]: 'Rolling code counter': Sending state 2400.000000
[10:54:44.196][D][ratgdo:224]: Status: door=CLOSED light=ON lock=UNLOCKED learn=ACTIVE
[10:54:44.514][D][esp8266.preferences:238]: Saving preferences to flash...
[10:54:44.842][W][api.connection:142]: aioesphomeapi (192.168.106.56): Sending keepalive failed 22 time(s), will retry in 1000 ms
[10:54:45.103][D][number:012]: 'Rolling code counter': Sending state 2401.000000
[10:54:45.187][D][ratgdo:224]: Status: door=CLOSED light=ON lock=UNLOCKED learn=ACTIVE
[10:54:45.701][W][api.connection:142]: aioesphomeapi (192.168.106.56): Sending keepalive failed 23 time(s), will retry in 1000 ms
[10:54:45.772][D][ratgdo:265]: Motion: DETECTED
[10:54:45.789][D][binary_sensor:036]: 'Motion': Sending state ON
[10:54:46.112][D][number:012]: 'Rolling code counter': Sending state 2402.000000
[10:54:46.187][D][ratgdo:224]: Status: door=CLOSED light=ON lock=UNLOCKED learn=ACTIVE
[10:54:46.221][D][binary_sensor:036]: 'Motion': Sending state OFF
[10:54:46.710][W][api.connection:142]: aioesphomeapi (192.168.106.56): Sending keepalive failed 24 time(s), will retry in 1000 ms
[10:54:47.101][D][number:012]: 'Rolling code counter': Sending state 2403.000000
[10:54:47.197][D][ratgdo:224]: Status: door=CLOSED light=ON lock=UNLOCKED learn=ACTIVE
[10:54:47.807][W][api.connection:142]: aioesphomeapi (192.168.106.56): Sending keepalive failed 25 time(s), will retry in 1000 ms
[10:54:48.118][D][number:012]: 'Rolling code counter': Sending state 2404.000000
[10:54:48.196][D][ratgdo:224]: Status: door=CLOSED light=ON lock=UNLOCKED learn=ACTIVE
[10:54:48.733][W][api.connection:142]: aioesphomeapi (192.168.106.56): Sending keepalive failed 26 time(s), will retry in 1000 ms
[10:54:49.109][D][number:012]: 'Rolling code counter': Sending state 2405.000000
[10:54:49.203][D][ratgdo:224]: Status: door=CLOSED light=ON lock=UNLOCKED learn=ACTIVE
[10:54:49.519][D][esp8266.preferences:238]: Saving preferences to flash...
[10:54:49.775][W][api.connection:142]: aioesphomeapi (192.168.106.56): Sending keepalive failed 27 time(s), will retry in 1000 ms
[10:54:50.108][D][number:012]: 'Rolling code counter': Sending state 2406.000000
[10:54:50.188][D][ratgdo:224]: Status: door=CLOSED light=ON lock=UNLOCKED learn=ACTIVE
[10:54:50.714][D][ratgdo:265]: Motion: DETECTED
[10:54:50.747][D][binary_sensor:036]: 'Motion': Sending state ON
[10:54:50.779][W][api.connection:142]: aioesphomeapi (192.168.106.56): Sending keepalive failed 28 time(s), will retry in 1000 ms
[10:54:51.190][D][number:012]: 'Rolling code counter': Sending state 2407.000000
[10:54:51.337][D][ratgdo:224]: Status: door=CLOSED light=ON lock=UNLOCKED learn=ACTIVE
[10:54:51.337][D][binary_sensor:036]: 'Motion': Sending state OFF
[10:54:51.770][W][api.connection:142]: aioesphomeapi (192.168.106.56): Sending keepalive failed 29 time(s), will retry in 1000 ms
[10:54:52.109][D][number:012]: 'Rolling code counter': Sending state 2408.000000
[10:54:52.201][D][ratgdo:224]: Status: door=CLOSED light=ON lock=UNLOCKED learn=ACTIVE
^C[10:54:52.661][D][api.connection:197]: aioesphomeapi (192.168.107.196) requested disconnected
2024-01-18 10:54:52.676 INFO     Processing expected disconnect from ESPHome API for neargarageratgdo @ 192.168.107.146

@bdraco
Copy link
Member

bdraco commented Jan 18, 2024

The ESP buffer gets swamped and eventually disconnects after it gets into this state because it can't send the keep alive

@mulcmu
Copy link
Contributor Author

mulcmu commented Jan 18, 2024

I just tested toggle learn on/off from wall control. Couldn't quite recreate your issue but, my learn switch did not turn off now when cleared by the wall control. I'll investigate more this evening.

@mariusmuja
Copy link
Collaborator

mariusmuja commented Jan 18, 2024

I just had a quick look too. When I exit the Lean/Program menu on the wall panel, the GDO stays in learn mode (the Learn switch stays checked in esphome), also the learn led stays lit on the GDO.

@mulcmu Why do we need to poll status while in learn mode? Just to update the switch status? We can leave that to the 5min status messages if the GDO doesn't send a status anyway when exiting learn mode (mine does when entering and exiting learn mode).

@bdraco
Copy link
Member

bdraco commented Jan 18, 2024

I tested removing the polling and it does turn off after 5 minute timeout
Screenshot 2024-01-18 at 12 20 26 PM

I'll get that pulled out and get this merged since its blocking the other PR.

We can revisit in a follow up PR if needed

@bdraco
Copy link
Member

bdraco commented Jan 18, 2024

Thanks @mulcmu

Great addition.

@bdraco bdraco merged commit 4c2ed4e into ratgdo:main Jan 18, 2024
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants