A python client which support Infinite Flight Connect API v1/2

Infinite Flight Connect API Client

Using python to connect the Infinite Flight Connect API v1/v2.

Installation

pip3 install ifcclient

Usage

Before getting started, make sure to enable the Infinite Flight Coneect in the app Settings > General > Enable Infinite Flight Connect

First, import the module in Python and discover devcies in the same network, you can use duration to specific the time to discover, you can use duration=0 to return the first device you discovered.

import ifcclient
devices = ifcclient.IFCClient.discover_devices(duration=0)

API V2

Init the client object.

ifc = ifcclient.IFClient.connect(devices[0], version=2) # version is 2 by default

There are three ways to use the Infinite Flight Connected API V2, GetState, SetState, RunCommand. You can check Infinite Flight website for the detail of API.

GetState

To get a state from the API, send a get_state_by_name() request as follows:

ifc.get_state_by_name(name)
# For example
ifc.get_state_by_name('aircraft/0/systems/flaps/state')

SetState

To set states – assigning new values to them – through the API by sending a request as outlined below.

However, not all states can be set and the manifest offers no indication of which states can be set and which can’t. The only way to determine this is trial-and-error and some common sense.

ifc.set_state_by_name(name, value)
# For example
ifc.set_state_by_name('aircraft/0/systems/flaps/state', 2)

RunCommand

To execute a command through the API, send a run_command_by_name() request.

ifc.run_command_by_name(command)
# For example
ifc.run_command_by_name('commands/NextCamera')

API V1

Init the client object for V1.

ifc = ifcclient.IFClient.connect(devices[0], version=1)

With V1, to send a command, use the send_command function. The first parameter is the command, the second parameter are the parameters passed to Infinite Flight while the third parameter determines whether to wait for a response or not. Await response is false by default although it must be enabled when expecting a response.


ifc.send_command("{CommandName}", [Parameters], await_response=True)
ifc.send_command("{CommandName}", [Parameters]) # await_response is False by default
# For example
ifc.send_command("airplane.getstate", [], await_response=True)
ifc.send_command("flightplan.get", [], await_response=True)

functions share with v1/v2

Two commonly used operations, one is to get the state of the aircraft, the other is to get the flightplan, these two methods, get_aircraft_state() and get_flightplan() which can be used in both V1/V2. It also provides a function display_commands() to list all the avaliable commands.

ifc.get_aircraft_state()
ifc.get_flightplan()
ifc.display_command()

Future updates

12 Likes

it’s quite new, if someone meet some problems or bugs please let me know.

thx

David

Does it work with Python3.10.6? Because I get an error when I try to install the client with the pip command on Linux.

ERROR: Could not find a version that satisfies the requirement ifclient (from versions: none) ERROR: No matching distribution found for ifclient

EDIT: It’s not ifclient it is ifcclient (there are two c’s), now it works, thanks @paodekuai

The right package name is: ifcclient, there are two c. thx

David

I have change the way to use it slightly. after you discover the device in your network. you should use to get the object by: iifcclient.IFClient.connect(devices[0], version=2).

let me know if you have any question.

David

1 Like

Hello, is there any GitHub code I can see? I would like to see what you have done so I can better understand on how to use the library.

Thanks

Feel free to give comments and code improvements

David

2 Likes

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.