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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d062c2ced827774a9899b7198dc5d900a79c9c6e4883dc7fdba243dbd7634fb5
|
|
| MD5 |
d229cb9a02ec61fedf04bbc21404f95a
|
|
| BLAKE2b-256 |
a76d4a3efb8aafc69bccaf201b5733b350b55a894b99337a42a2007f2981850c
|