Skip to main content

Connect to F&F Fox devices via RestAPI.

Project description

RestAPI Client for F&F Fox devices

This package contains simple RestAPI client written in Python for F&F Filipowski Sp. j. Fox devices such as single switch & energy (R1S1), double switch (R2S2), led (LED2S2), dimmer (DIM1S2), color module (RGBW), roller shutter (STR1S2).

Requirements

To obtain communication with device you should firstly configure it via F&F Fox mobile application available on Android and IOS (instructions included in app). Next grant access to remote control and enable RestAPI server with one of the following mode

  • Static RestAPI client auth key

  • Dynamic RestAPI client auth key

  • No auth key (default 000 should be used)

Attention All F&F Fox devices supports now only HTTP GET request method. In near future mqtt client will be available.

Features

  • Async API device communication
  • Turn on/off device
  • Change brightness (DIM1S2, LED2S2, RGBW)
  • Change color in HSV mode (RGBW)
  • Open/Close gate (STR1S2)
  • Change tilt position (STR1S2)
  • Get device information (such as manufacturer, firmaware version etc.)

Example - Toggle state of channel

To run this example first clone and install our client library.

python3 -m venv venv
source venv/bin/activate
git clone https://github.com/fandf92/foxrestapiclient.git
cd foxrestapiclient/ && python setup.py install

The following example illustrates how to configure and use F&F Fox double switch module via our client.

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import asyncio

from foxrestapiclient.devices.fox_r2s2_device import DeviceData, FoxR2S2Device
from foxrestapiclient.devices.const import DEVICE_TYPE_R2S2


async def main():
    # Name: name of device
    NAME = None
    # Host: device IP address (e.g 192.168.0.100)
    HOST = '_device_IP_address_'
    # API_KEY: auth api key, get it from F&F Fox mobile app
    API_KEY = '0000' # The API key is set to 0000 when the type REST API is set to "key not required"
    # UNIQUE_ID: unique id for device
    UNIQUE_ID = None
    # TYPE: device type (see wiki page)
    TYPE = DEVICE_TYPE_R2S2
    # CHANNELS: optional channel array. Eg. [1, 2]
    CHANNELS = None
    # Channel ID which we want to toggle
    CHANNEL_ID_TO_TOGGLE = 2

    doubleSwitch = FoxR2S2Device(DeviceData(
        name=NAME, host=HOST, api_key=API_KEY, mac_addr=UNIQUE_ID, dev_type=TYPE, channels=CHANNELS))

    # Fetching all available info of device: general device data and product specify values
    await doubleSwitch.async_fetch_device_available_data()

    # Toggle state of channel
    channelStateToSet = not doubleSwitch.channel_two_state
    apiResult = await doubleSwitch.async_update_channel_state(channelStateToSet, CHANNEL_ID_TO_TOGGLE)
    if apiResult:
        print(
            f'> Channel {CHANNEL_ID_TO_TOGGLE} toggled to {channelStateToSet} <')

    friendlyName = doubleSwitch.device_info_data.device_friendly_name
    channelsNames = doubleSwitch.device_info_data.device_channels_name

    # Print friendly name and channels names
    print(f'Device firendly name "{friendlyName}"')
    print(f'It\'s channels names {channelsNames}')

if __name__ == '__main__':
    asyncio.run(main())
    pass

More information about how to control device via API methods you can find on wiki page.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

foxrestapiclient-0.1.13.tar.gz (18.3 kB view details)

Uploaded Source

File details

Details for the file foxrestapiclient-0.1.13.tar.gz.

File metadata

  • Download URL: foxrestapiclient-0.1.13.tar.gz
  • Upload date:
  • Size: 18.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.49.0 CPython/3.8.10

File hashes

Hashes for foxrestapiclient-0.1.13.tar.gz
Algorithm Hash digest
SHA256 1f6eeab18fe1468fb617554fb7782c165cd6bc0bcb60911e5cdec425afd3ce4c
MD5 a6d85be2f78fea6796da2d69934e1a39
BLAKE2b-256 53b26171ad1658562281603c77d4673fe7b93e6b258bf128cd5b5471be50e0e1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page