Skip to content
This repository has been archived by the owner on Dec 3, 2024. It is now read-only.

elupus/nibeuplink

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Nibe Uplink Communciation Module

Deprecation

Warning

Nibe is shutting down nibeuplink.com which this integration is dependent upon. This project is therefor deprecated. Upgrade your heatpump and swith to myuplink solution, use built in modbus server on S-series pumps or add a nibegw device like https://github.com/elupus/esphome-nibe to use the native support inside home assistant instead.

Module

The module is an asyncio driven interface to nibe uplink public API. It is throttled to one http request every 4 seconds so try to make the most of your requests by batching requests.

Status

https://codecov.io/gh/elupus/nibeuplink/branch/master/graph/badge.svg?token=WZy5CcdYom

Example

def token_read():
    return None

def token_write(token):
    pass

async def run():
    async with nibeuplink.Uplink(client_id         = 'XXX',
                                 client_secret     = 'YYY',
                                 redirect_uri      = 'ZZZ',
                                 access_data       = token_read(),
                                 access_data_write = token_write,
                                 scope             = 'READSYSTEM') as uplink:

        if not uplink.access_data:
            auth_uri = uplink.get_authorize_url()
            print(auth_uri)
            result = input('Enter full redirect url: ')
            await uplink.get_access_token(uplink.get_code_from_url(result))

        # Request all systems
        print(uplink.get_systems())


        # Request data for specific system
        print(uplink.get_system(12345))

        # Request data for parameters. Note request them in paralell using gather semantics
        # that way, the module with batch up the requests into a single request to api
        print(await asyncio.gather(uplink.get_parameter(12345, 11111),
                                   uplink.get_parameter(12345, 22222)))




loop = asyncio.get_event_loop()
loop.run_until_complete (run())

Console

The module contains a commandline utility to test and request data from Nibe Uplink called nibeuplink, it will store token information in a file in the current directory called nibeuplink.json

Example

Help for utility

nibeuplink -h

Request all systems

nibeuplink --client_id 'XXX' --client_secret 'YYY' --redirect_uri 'ZZZ'

Request data for specific system

nibeuplink --client_id 'XXX' --client_secret 'YYY' --redirect_uri 'ZZZ' --system 12345

Request data for parameters

nibeuplink --client_id 'XXX' --client_secret 'YYY' --redirect_uri 'ZZZ' --system 12345 --parameter 11111 22222