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.14.tar.gz (18.3 kB view details)

Uploaded Source

File details

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

File metadata

  • Download URL: foxrestapiclient-0.1.14.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.14.tar.gz
Algorithm Hash digest
SHA256 d062c2ced827774a9899b7198dc5d900a79c9c6e4883dc7fdba243dbd7634fb5
MD5 d229cb9a02ec61fedf04bbc21404f95a
BLAKE2b-256 a76d4a3efb8aafc69bccaf201b5733b350b55a894b99337a42a2007f2981850c

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