⚠ This page is served via a proxy. Original site: https://github.com
This service does not collect credentials or authentication data.
Skip to content

Sonoff Client with LAN mode support (no firmware flash required)

License

Notifications You must be signed in to change notification settings

phoenix128/python-coolkit-client-ng

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Sonoff client with LAN mode support

Client for Sonoff devices using eWeLink access

API keys retrieval inspired on: https://github.com/peterbuga/HASS-sonoff-ewelink LAN mode communication inspired on: https://github.com/barbieri/pysonofflan/tree/V3-Firmware-fixes

REQUIRES SONOFF FIRMWARE 3.3.x or above

Usage example

#!/usr/bin/env python
import asyncio

from coolkit_client import CoolkitSession, CoolkitDevicesRepository
from coolkit_client.device_control import CoolkitDeviceControl
from coolkit_client.discover import CoolkitDevicesDiscovery


async def listener(switch: CoolkitDeviceSwitch, state: bool) -> None:
    print("State changed to " + str(state))


async def start():
    # Cloud connection is initially required to retrieve the device api-key
    # The system will operate in LAN mode once started
    await CoolkitSession.login(
        username='[email protected]',
        password='IDoNotTellYou!',
        region='eu'
    )

    # Retrieve cloud devices list and API keys
    await CoolkitDevicesDiscovery.discover()
    await asyncio.sleep(2)

    # Get a specific device (identified by its ID)
    my_device = CoolkitDevicesRepository.get_device('1000012345')

    # Register an event change callback (more than one can be registered)
    my_device.add_state_callback('test-listener', listener)

    # Blink the first switch of our device
    await my_device.switches[0].set_state(True)
    await asyncio.sleep(1)
    await my_device.switches[0].set_state(False)

    while True:
        await asyncio.sleep(3600)

if __name__ == "__main__":
    loop = asyncio.get_event_loop()
    loop.run_until_complete(start())

About

Sonoff Client with LAN mode support (no firmware flash required)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages