knuckleheadsmiff / homebridge-garagedoor-ryobi

Homebridge plugin for Ryobi GDO (Garage Door Opener)
4 stars 4 forks source link

Listen for websocket events instead of polling #21

Open andyedinborough opened 3 years ago

andyedinborough commented 3 years ago

Polling is inefficient and slow. Instead, the Ryobi GDO API supports listening for events:

    public static String subscribeNotifications(String str) {
        return "{\"jsonrpc\":\"2.0\",\"method\":\"wskSubscribe\",\"params\":{\"topic\":\"" + str + ".wskAttributeUpdateNtfy\"}}";
    }

    public static String unsubscribeNotifications(String str) {
        return "{\"jsonrpc\":\"2.0\",\"method\":\"wskUnsubscribe\",\"params\":{\"topic\":\"" + str + ".wskAttributeUpdateNtfy\"}}";
    }

We should update the code to open the websocket on start and keep it open with periodic pings.