MobiusPi API手册¶
- MobiusPi API手册
概述¶
MobiusPi是InGateway系列产品二次开发平台的名称,本文档旨在说明如何调用mobiuspi_lib
库的API。该库实现了获取MobiusPi的运行状态和调用MobiusPi物理接口等功能。
Python要求¶
MobiusPi Python SDK适用于Python 3.7和3.8,如果您使用其他版本的Python,则可能导致代码运行异常。
您可以打开命令提示符或启动python IDE,使用python
命令确认您的Python版本。本文档假设您使用了Python 3.7和3.8。
1. Basic¶
入门¶
以下是一个重启MobiusPi的示例:
# 导入Basic类
from mobiuspi_lib.basic import Basic
# 创建basic实例
basic = Basic()
# 重启MobiusPi
print("will reboot ...")
r = basic.reboot()
print("reboot : %s" % r)
2. Cellular¶
入门¶
以下是一个获取MobiusPi拨号信息的示例:
# 导入Cellular类
from mobiuspi_lib.cellular import Cellular
# 创建cellular实例
cellular = Cellular()
# 获取modem信息
modem = cellular.get_modem()
print("get modem: %s" % modem)
示例的输出结果如下:
get modem: {
"active_sim": "SIM 1",
"imei_code": "811622048741556",
"imsi_code": "411220441893359",
"iccid_code": "84463317227780999882",
"phone_number": "+8611162203133",
"signal_level": 0,
"dbm": 113,
"rerp": 0,
"rerq": 0,
"register_status": 0,
"operator": "CHN-CT",
"apns": "",
"network_type": "4G",
"lac": "BB00",
"cell_id": "DD788B81"
}
常规使用流程¶
你可以将Cellular类或者作为子类实例化。常规使用流程如下:
- 创建
cellular
实例 - 使用
get_modem()
获取Modem状态信息 - 使用
get_network()
获取网络连接信息
方法说明¶
get_modem()¶
说明¶
你可以使用该方法获取Modem状态信息。
请求参数¶
None
返回¶
返回类型
dict
返回值
{ "active_sim": "SIM 1", "imei_code": "811622048741556", "imsi_code": "411220441893359", "iccid_code": "84463317227780999882", "phone_number": "+8611162203133", "signal_level": 0, "dbm": 113, "rerp": 0, "rerq": 0, "register_status": 0, "operator": "CHN-CT", "apns": "", "network_type": "4G", "lac": "BB00", "cell_id": "DD788B81" }
返回值说明
active_sim
(string):当前 SIM 卡imei_code
(string):IMEI 号码,未获取到时返回空字符串
imsi_code
(string):IMSI 号码,未获取到时返回空字符串
iccid_code
(string):ICCID 号码,未获取到时返回空字符串
phone_number
(string):电话号码,未获取到时返回空字符串
signal_level
(int):信号值dbm
(int):dBm值rerp
(int):RSRP,预留参数rerq
(int):RSRQ,预留参数register_status
(int):注册状态0
:正在注册到网络1
:注册网络成功5
:注册网络成功,漫游状态6
:尚未注册到网络7
:未注册
operator
(string):运营商,未获取到时返回空字符串
apns
(string):APN,预留参数network_type
(string):网络类型,未获取到时返回空字符串
lac
(string):位置区码,未获取到时返回空字符串
cell_id
(string):小区 ID,未获取到时返回空字符串
get_network()¶
说明¶
你可以使用该方法获取网络连接信息。
请求参数¶
None
返回¶
返回类型
list
返回值
[ { 'status': 0, 'ip_addr': '0.0.0.0', 'netmask': '0.0.0.0', 'gateway': '0.0.0.0', 'dns': '0.0.0.0', 'mtu': 1200, 'connect_time': 0 }]
返回值说明
status
(int):网络状态0
:未连接1
:已连接
ip_addr
(string):IP 地址netmask
(string):子网掩码gateway
(string):网关dns
(string):DNSmtu
(int):MTUconnect_time
(int):连接时间,单位为秒
3. Config¶
入门¶
以下是一个获取App路径及App配置文件路径的示例:
# 导入Config类
from mobiuspi_lib.config import Config
# 创建config实例,该实例对应的App名称为HelloWorld。如果实例化config时,/var/user/app/路径下没有指定的App,则会给出异常提示“FileExistsError: Invalid app_name, do not find app HelloWorld”。
config = Config(app_name="HelloWorld")
# 获取App路径
get_app_path = config.get_app_path()
print("get_app_path: %s" % get_app_path)
# 获取App配置文件夹路径
get_app_cfg_path = config.get_app_cfg_path()
print("get_app_cfg_path: %s" % get_app_cfg_path)
示例的输出结果如下:
get_app_path: /var/user/app/HelloWorld
get_app_cfg_path: /var/user/cfg/HelloWorld
常规使用流程¶
你可以将Config
类或者作为子类实例化。常规使用流程如下:
- 创建
config
实例 - 使用
get_app_path()
获取App路径 - 使用
get_app_cfg_path()
获取App配置文件夹路径
4. GPS¶
入门¶
以下是一个获取GPS信息的示例:
# 导入GPS类
from mobiuspi_lib.gps import GPS
# 创建gps实例
gps = GPS()
# 获取GPS信息
position_status = gps.get_position_status()
print("position_status: ")
print(position_status)
示例的输出结果如下:
position_status: {
'gps_enable': 1,
'gps_time': '2020-06-10 09:31:25',
'latitude': "30° 35.276870' N",
'longitude': "104° 3.251330' E",
'speed': '0.3500 Knots (1knot = 1.852km/h)'
}
方法说明¶
get_position_status()¶
说明¶
你可以使用该方法获取MobiusPi的GPS信息。
请求参数¶
None
返回¶
返回类型
dict
返回值
{ 'gps_enable': 1, 'gps_time': '2020-06-10 09:31:25', 'latitude': "30° 35.276870' N", 'longitude': "104° 3.251330' E", 'speed': '0.3500 Knots (1knot = 1.852km/h)' }
返回值说明
gps_enable
:GPS启用状态0
:未启用1
:启用
gps_time
:定位时间latitude
:纬度,未获取到时返回空字符串
longitude
:经度,未获取到时返回空字符串
speed
:速度
5. IO¶
入门¶
以下是一个获取IO名称,设置指定输入IO模式并读取IO状态以及修改输出IO的示例:
# 导入IO类以及IO方法需要用到的变量
from mobiuspi_lib.io import IO, DIGITAL_DRY_CONTACT_MODE, DIGITAL_WET_CONTACT_MODE, DRY_CONTACT_HIGH_VALUE, SHUT_DOWN_MODE, DRY_CONTACT_LOW_VALUE, ANALOG_LOW_A_MODE, ANALOG_HIGH_A_MODE, ANALOG_LOW_V_MODE, ANALOG_HIGH_V_MODE
# 创建io实例
io = IO()
# 获取所有IO名称
io_list = io.get_io_list()
print("io_list: %s " % io_list)
# 设置数字量输入IO的模式
sdi = io.setup_digital_io(io_name="di0", mode=DIGITAL_DRY_CONTACT_MODE)
print("sdi: %s" % sdi)
# 获取指定IO状态
ri0 = io.read_io(io_name="di0")
print("ri0: %s" % ri0)
# 修改数字量输出IO的状态
io.write_io(io_name="do0", value=DRY_CONTACT_HIGH_VALUE)
ro0 = io.read_io(io_name="do0")
print("ro0: %s" % ro0)
示例的输出结果如下:
io_list: ['di0', 'di1', 'di2', 'di3', 'do0', 'do1', 'ai0', 'ai1']
sdi: {'index': 0, 'name': 'di0', 'type': 'digital input', 'mode': 'drycontact'}
ri0: LOW
ro0: ON
注意:仅型号为IG902且IO支持AI的设备支持该API,其余型号获取IO状态详见IO模块。
常规使用流程¶
你可以将IO类或者作为子类实例化。常规使用流程如下:
- 创建
io
实例 - 使用
get_io_list()
获取所有IO名称 - 使用
setup_digital_io()
设置数字量输入IO - 使用
setup_analog_io()
设置模拟量输入IO - 使用
read_io(io_name="")
获取IO状态 - 使用
write_io()
修改数字量输出IO状态
方法说明¶
get_io_list()¶
说明¶
你可以使用该方法获取所有IO名称。
请求参数¶
None
返回¶
返回类型
list
返回值
['di0', 'di1', 'di2', 'di3', 'do0', 'do1', 'ai0', 'ai1']
返回值说明di0~di3分别为数字量输入DIO~DI3,do0和do1分别为数字量输出DO0和DO1,ai0和ai1分别为AI0和AI1。
get_io_info(io_name)¶
说明¶
你可以使用该方法获取指定IO的类型、模式等信息。
请求参数¶
io_name
:IO名称
返回¶
返回类型
dict
返回值
{ 'index': 0, 'name': 'di0', 'type': 'digital input', 'mode': 'drycontact' }
返回值说明
index
:索引号name
:IO名称type
:IO类型digital input
:数字量输入digital output
:数字量输出analog input
:模拟量输入
mode
:IO模式- 数字量输入IO
wetcontact
:湿接点drycontact
:干接点shutdown
:关闭
- 数字量输出IO
connect
:闭合break
:断开
- 模拟量输入IO
0_20mA
:对应0-20mA4_20mA
:对应4-20mA0_5V
:对应0-5V0_10V
:对应0-10Vshutdown
:关闭
- 数字量输入IO
异常¶
io_name为错误的IO名称时(如
dd1
),返回如下错误:KeyError: 'Invalid io_name'
当请求超时时,返回如下错误:
KeyError: 'Connection Timeout'
get_all_io_info()¶
说明¶
你可以使用该方法获取所有IO的类型、模式等信息。
请求参数¶
None
返回¶
返回类型
list
返回值
[{ 'index': 0, 'name': 'di0', 'type': 'digital input', 'mode': 'drycontact' }, { 'index': 1, 'name': 'di1', 'type': 'digital input', 'mode': 'wetcontact' }, { 'index': 2, 'name': 'di2', 'type': 'digital input', 'mode': 'shutdown' }, { 'index': 3, 'name': 'di3', 'type': 'digital input', 'mode': 'drycontact' }, { 'index': 0, 'name': 'do0', 'type': 'digital output', 'mode': 'connect' }, { 'index': 1, 'name': 'do1', 'type': 'digital output', 'mode': 'break' }, { 'index': 0, 'name': 'ai0', 'type': 'analog input', 'mode': '4_20mA' }, { 'index': 1, 'name': 'ai1', 'type': 'analog input', 'mode': '0_5V' }]
返回值说明
index
:索引号name
:IO名称type
:IO类型digital input
:数字量输入digital output
:数字量输出analog input
:模拟量输入
mode
:IO模式- 数字量输入IO
wetcontact
:湿接点drycontact
:干接点shutdown
:关闭
- 数字量输出IO
connect
:闭合break
:断开
- 模拟量输入IO
0_20mA
:对应0-20mA4_20mA
:对应4-20mA0_5V
:对应0-5V0_10V
:对应0-10Vshutdown
:关闭
- 数字量输入IO
setup_digital_io(io_name, mode)¶
说明¶
你可以使用该方法设置指定数字量输入IO的模式。
请求参数¶
io_name
:IO名称(仅支持设置数字量输入IO)mode
:数字量输入IO模式DIGITAL_DRY_CONTACT_MODE
:干接点模式DIGITAL_WET_CONTACT_MODE
:湿接点模式SHUT_DOWN_MODE
:关闭
返回¶
返回类型
dict
返回值
{ 'index': 0, 'name': 'di0', 'type': 'digital input', 'mode': 'drycontact' }
返回值说明
index
:索引号name
:IO名称type
:IO类型digital input
:数字量输入
mode
:IO模式wetcontact
:湿接点drycontact
:干接点shutdow
n:关闭
异常¶
io_name为错误的IO名称时(如
dd1
),返回如下错误:KeyError: 'Invalid io_name'
输入数字量输出IO或模拟量输入IO名称时(如
do0
),返回如下错误:KeyError: 'Parameter Conflict'
输入错误的模式名称时(如
1234
),返回如下错误:KeyError: 'Invalid mode'
当请求超时时,返回如下错误:
KeyError: 'Connection Timeout'
当MobiusPi繁忙时,返回如下错误:
KeyError: 'Device Busy'
setup_analog_io(io_name, mode)¶
说明¶
你可以使用该方法设置指定模拟量输入IO的模式。
请求参数¶
io_name
:IO名称(仅支持设置模拟量输入IO)mode
:模拟量输入IO模式ANALOG_LOW_A_MODE
:0-20mA模式ANALOG_HIGH_A_MODE
:4-20mA模式ANALOG_LOW_V_MODE
:0-5V模式ANALOG_HIGH_V_MODE
:0-10V模式SHUT_DOWN_MODE
:关闭
返回¶
返回类型
dict
返回值
{ 'index': 0, 'name': 'ai0', 'type': 'analog input', 'mode': '4_20mA' }
返回值说明
index
:索引号name
:IO名称type
:IO类型analog input
:模拟量输入
mode
:IO模式0_20mA
:对应0-20mA4_20mA
:对应4-20mA0_5V
:对应0-5V0_10V
:对应0-10Vshutdown
:关闭
异常¶
io_name为错误的IO名称时(如
dd1
),返回如下错误:KeyError: 'Invalid io_name'
输入数字量输入IO或数字量输出IO名称时(如
do0
),返回如下错误:KeyError: 'Parameter Conflict'
输入错误的模式名称时(如
1234
),返回如下错误:KeyError: 'Invalid mode'
当请求超时时,返回如下错误:
KeyError: 'Connection Timeout'
当MobiusPi繁忙时,返回如下错误:
KeyError: 'Device Busy'
read_io(io_name)¶
说明¶
你可以使用该方法读取IO的状态。
请求参数¶
io_name
:IO名称
返回¶
返回类型
str
返回值
LOW
返回值说明
ON
- 数字量输入IO的模式为湿接点且输入电压为+10~+30V时返回
ON
- 数字量输出IO为闭合状态时返回
ON
- 数字量输入IO的模式为湿接点且输入电压为+10~+30V时返回
OFF
:- 数字量输入IO的模式为湿接点且输入电压为0~+3V时返回
OFF
- 数字量输出IO为断开状态时返回
OFF
- 数字量输入IO的模式为湿接点且输入电压为0~+3V时返回
LOW
:数字量输入IO的模式为干接点且断开时返回LOW
HIGH
:数字量输入IO的模式为干接点且闭合时返回HIGH
- 模拟量输入的电流或电压值
异常¶
io_name为错误的IO名称时(如
dd1
),返回如下错误:KeyError: 'Invalid io_name'
当请求超时时,返回如下错误:
KeyError: 'Connection Timeout'
write_io(io_name)¶
说明¶
你可以使用该方法修改数字量输出IO的状态。
请求参数¶
io_name
:数字量输出IO名称value
:数字量输出IO的设定值DRY_CONTACT_LOW_VALUE
:设置数字量输出IO断开DRY_CONTACT_HIGH_VALUE
:设置数字量输出IO闭合
返回¶
返回类型
str
返回值
TRUE
返回值说明
- TRUE:下发成功
异常¶
io_name为错误的IO名称时(如
dd1
),返回如下错误:KeyError: 'Invalid io_name'
输入数字量输入IO或模拟量输入IO名称时(如
do0
),返回如下错误:KeyError: 'Invalid Parameter'
输入错误的设定值时(如
1234
),返回如下错误:KeyError: 'Invalid value'
当请求超时时,返回如下错误:
KeyError: 'Connection Timeout'
当MobiusPi繁忙时,返回如下错误:
KeyError: 'Device Busy'
6. Serial¶
入门¶
以下是一个获取232/485串口路径的示例:
# 导入Serial类
from mobiuspi_lib.serial import Serial
# 创建serial实例
serial = Serial()
# 获取232路径
path_232 = serial.get_serial232_path()
print("232 path: %s" % path_232)
# 获取485路径
path_485 = serial.get_serial485_path()
print("485 path: %s" % path_485)
示例的输出结果如下:
232 path: /dev/ttyO1
485 path: /dev/ttyO3
常规使用流程¶
你可以将Serial
类或者作为子类实例化。常规使用流程如下:
- 创建
serial
实例 - 使用
get_serial232_path()
获取232串口路径 - 使用
get_serial485_path()
获取485串口路径
7. SystemInfo¶
入门¶
以下是一个获取MobiusPi系统信息的示例:
# 导入SystemInfo类
from mobiuspi_lib.systeminfo import SystemInfo
# 创建sysinfo实例
sysinfo = SystemInfo()
# 获取MobiusPi系统信息
get_system_info = sysinfo.get_system_info()
print("get system info: %s" % get_system_info)
示例的输出结果如下:
get system info: {
'language': 'Chinese',
'hostname': 'InGateway',
'model_name': 'IG902H',
'oem_name': 'inhand',
'serial_number': 'GT902XXXXXXXXXX',
'mac_addr1': '00:XX:XX:XX:XX:XX',
'mac_addr2': '00:XX:XX:XX:XX:XX',
'firmware_version': '2.0.0.r12644',
'bootloader_version': '2017.01.r10517',
'product_number': 'TH09-W-RE',
'description': 'www.inhand.com.cn',
'auto_save': 1,
'encrypt_passwd': 1
}
方法说明¶
get_system_info()¶
说明¶
你可以使用该方法获取MobiusPi系统信息。
请求参数¶
None
返回¶
返回类型
dict
返回值
{ 'language': 'Chinese', 'hostname': 'InGateway', 'model_name': 'IG902H', 'oem_name': 'inhand', 'serial_number': 'GT902XXXXXXXXXX', 'mac_addr1': '00:XX:XX:XX:XX:XX', 'mac_addr2': '00:XX:XX:XX:XX:XX', 'firmware_version': '2.0.0.r12644', 'bootloader_version': '2017.01.r10517', 'product_number': 'TH09-W-RE', 'description': 'www.inhand.com.cn', 'auto_save': 1, 'encrypt_passwd': 1 }
返回值说明
language
:语言Chinese
:中文English
:英语
hostname
:MobiusPi名称model_name
:MobiusPi型号oem_name
:oem名称serial_number
:MobiusPi序列号mac_addr1
:MobiusPi MAC地址1mac_addr2
:MobiusPi MAC地址2firmware_version
:固件版本bootloader_version
:Bootloader版本product_number
:产品编号description
:产品描述auto_save
:是否自动保存修改后的配置0
:未自动保存1
:自动保存
encrypt_passwd
:是否加密明文密码0
:未加密1
:加密