跳到主要内容

OpenData

一、介绍

OpenData是为基于WiFi的Solarman物联网设备(如插座、电表、读表器等)设计的轻量级通信框架。设备通过WiFi接入本地网络,支持数据主动推送与外部查询响应。

核心功能

  • 设备数据获取:实时拉取设备基础信息(型号、固件版本等)、测量数据。
  • 设备配置更新:动态调整设备参数及配置。

使用场景

  1. 推送设备数据(UDP)

    • UDP广播至 255.255.255.255
    • 设备Key加密:UDP广播至 255.255.255.255(暂不支持,敬请期待)
  2. 接收外部查询请求(HTTP/HTTPS)

    • HTTP
    • HTTP + Digest
    • HTTPS(暂不支持,敬请期待)

二、准备

1. 安装工具

  • 用于接收UDP广播:可选用任一网络调试工具(如 NetAssist)。
  • 用于发送HTTP请求:可选用Postman或cURL命令行工具。

2. 开启API

默认状态下设备API功能关闭,需要手动开启后才能使用API。

3. 获取IP地址

以下四种方法任选其一:

  • 路由器管理后台查询。

  • Solarman Smart APP查看设备详情。

  • Energy Ease查看设备信息。

UDP广播获取IP。
  1. 确保设备接入的WiFi网络与电脑处于同一局域网。

  2. 打开网络调试工具。

  3. 选择UDP协议。

  4. 选择本机地址

  5. 设置端口号为10000

  6. 单击打开

  7. 在远程主机设置广播地址及端口:255.255.255.255:8099

  8. 在消息框里填写AT指令:AT+IGDEVICEIP

  9. 单击“Send”。

  10. 同一局域网内的Solarman设备会回复其IP地址和SN号。

4. 检查固件版本

根据设备型号确认设备固件版本是否符合要求,可通过以下任一方式查看固件版本信息:

  • 在Solarman Smart / Energy Ease App中查看设备信息。
  • 发送HTTP请求,调用Sys.GetConfig接口获取设备配置信息。
设备型号最低固件版本
P1读表器P1-2WV1.3.0A_R003.001_MP12W_00000013
智能计量插座SP-2W-EUV1.3.0A_R002.001_MSP2W_00000010
智能导轨电表MR1-D5-WR
MR1-D5-W
V1.3.0A_R00B.032_M051A_00000015
MR1-D4-WRE
MR3-D4-WRE
MR1-D4-WE
MR3-D4-WE
V1.3.0A_R009.002_M0000_00000016
MR1-D3-W
MR3-D3-W
V1.3.07_R00A.002_M0515_00000017
近红外读表器NIR-1
NIR-3
V1.4.01_R016.052_M0000_00000013

三、UDP使用说明

开启功能

UDP默认状态为关闭,需要手动开启UDP。

UDP

对于支持UDP广播服务的设备,您可通过接收UDP报文来获取设备信息。

设备广播地址及端口发送频率(ms)
P1读表器广播地址:255.255.255.255;端口:8088500
智能计量插座广播地址:255.255.255.255;端口:8088500
智能导轨电表广播地址:255.255.255.255;端口:8088200

操作步骤

  1. 确保设备和您的电脑连接到同一个路由器或同一个Wi-Fi热点。

  2. 打开网络调试工具。

  3. 在网络设置区域选择协议类型UDP

  4. 在本地主机地址选项中,选择您电脑在当前局域网的IP地址

  5. 设置本地端口号为8088

  6. 点击“Open”开始监听。

  7. 在接收设置区域可选择报文显示格式:ASCII、Hex。

  8. 接收区将显示收到的广播报文。 receice_udp_packet.png

注意

如果接收区无数据,请检查设备与电脑是否处于同一个局域网下,并确保防火墙允许该网络通信。

UDP 设备key加密

暂不支持,敬请期待

四、HTTP使用说明

请求结构

请求方法

  • GET:请求服务器返回指定资源。
  • POST:请求服务器执行特定操作。

请求地址

http://{IP_ADDRESS}:8080/rpc/{API}
  • {IP_ADDRESS}:设备的IP地址。
  • {API}:调用的HTTP API。

请求示例

  • 获取设备信息:
GET http://192.168.31.213:8080/rpc/Sys.GetConfig
  • 修改设备名称:
POST http://192.168.31.213:8080/rpc/Sys.SetConfig?config={"device":{"hostname":"admin"}}

cURL命令示例

  • 获取设备信息:
curl http://192.168.31.213:8080/rpc/Sys.GetConfig
  • 修改设备名称:
curl -g -X POST -H "Content-Type: application/json" "http://192.168.31.213:8080/rpc/Sys.SetConfig?config={\"device\":{\"hostname\":\"admin\"}}"

Digest认证

Digest认证技术用于网络通信中验证用户身份,避免密码明文传输。

注意

在HTTP+Digest模式下,首次使用或恢复出厂设置的设备需要先修改默认密码才能使用其他接口。

修改密码

  1. 在Postman选择Authorization标签。

  2. Auth Type下拉框选择Digest Auth

  3. 使用在线AES加密工具生成Base64格式的加密密码和Tag值。

    所需在线工具

    • ASCII转Hex
    • Hex转Base64
    • AES_GCM加密工具

    加密所需信息如下

    • 明文:新密码。
    • 密钥:当前密码,格式:Hex,不足16字节需在末尾补00,直至达到16字节。 示例:默认密码e7171fc41转为65373137316663343100000000000000。
    • Nonce:随机值,格式:Hex,不足12字节需在末尾补00,直至达到12字节。 示例:nonce是123456转为313233343536000000000000。
    • 填充方式:NoPadding。
    • 其他不填。 aes_encrypt.png
  4. 认证信息见下表:

    字段
    Username默认opend
    Password默认设备KEY
    RealmAES128-GCM生成的tag值,Base64格式
    Nonce随机值,与AES加密随机值保持一致
    AlgorithmMD5
    qopauth
    Nonce Count随机值
    Client Nonce随机值
    Opaque不填
  5. 在HTTP方法下拉框选择POST请求。

  6. 请求地址为:

    http://{IP_ADDRESS}:8080/rpc/User.SetConfig?config={"Password":"{PASSWORD}"}

    其中:

    • {IP_ADDRESS}:设备IP地址。
    • {PASSWORD}:AES128-GCM加密后的Base64格式密文。 post_request.png
  7. 单击Sendsuccess.png

成功

收到{"result": true},修改密码成功。

请求其他接口

  1. 在Postman选择Authorization标签。

  2. Auth Type下拉框选择Digest Auth

  3. 认证信息见下表:

    字段
    Username默认opend
    Password修改后的设备密码
    Realm随机值
    Nonce用于加密当前密码的AES加密随机值
    AlgorithmMD5
    qopauth
    Nonce Count随机值
    Client Nonce随机值
    Opaque不填

HTTPS

暂不支持,敬请期待

错误码

错误码描述说明
400Bad Request(错误请求)服务器无法理解请求的格式,客户端应当修改请求后再尝试。
401Unauthorized(未授权)请求要求身份验证,客户端需要提供有效的凭据。
403Forbidden(禁止)服务器理解请求,但拒绝执行,通常是由于权限问题。
404Not Found(未找到)服务器无法找到请求的资源,可能是因为资源不存在或已被删除。
405Method Not Allowed(方法不允许)请求的方法与资源不兼容,例如对只读资源执行写操作。
408Request Timeout(请求超时)服务器在等待请求时超时,客户端可以稍后重试。
409Conflict(冲突)请求与资源的当前状态存在冲突,例如多用户同时编辑同一资源。
410Gone(已删除)请求的资源已被永久删除,且没有新的地址。
500Internal Server Error(内部服务器错误)服务器遇到未知错误,无法完成请求。
501Not Implemented(未实现)服务器不支持请求的方法,无法执行。
502Bad Gateway(错误网关)服务器作为网关或代理,从上游服务器收到无效响应。
503Service Unavailable(服务不可用)服务器当前无法处理请求,可能是由于过载或维护。
504Gateway Timeout(网关超时)服务器作为网关或代理,未能及时从上游服务器获得响应。
505HTTP Version Not Supported(HTTP 版本不支持)服务器不支持请求中使用的 HTTP 版本。

五、HTTP API

组件说明
Sys提供有关设备型号、固件版本等信息。
P1从P1读表器读取电表用气信息。
Plug读取智能计量插座获取当前功率信息,控制插座通断。
Meter读取电表数据。

Sys

获取设备信息

  • 请求示例
GET http://192.168.31.213:8080/rpc/Sys.GetConfig
  • 返回值示例
{
"device": {
"hostname": "admin",
"timezone": 480,
"type": "",
"sn": "2730890019",
"mac": "E8FDF8DD9A76",
"fw": "LSW3_01_E030_SS_00_00.00.00.03",
"time": "2024-11-26 19:14:23",
"time_stamp": 1732648463,
"run_time": 839
}
}

方法:Sys.GetConfig

  • 返回值
参数名参数类型说明
deviceobject详情见Config表格

设置设备名称、时区

  • 请求示例
POST http://192.168.31.213:8080/rpc/Sys.SetConfig?config={"device":{"hostname":"admin"}}
  • 返回值示例
{"result": true}

方法:Sys.SetConfig

  • 参数
参数名参数类型说明
configobject详情见Config表格,只可修改设备名称、时区。
  • 返回值
参数名参数类型说明
resultbooltrue:成功,false:失败。

Config

参数名参数类型说明
deviceobject设备配置信息,见下表。

device参数说明

参数名参数类型说明读写属性
hostnamestring设备名称R/W
timezoneint时区R/W
typestring设备型号R
snstring设备编码R
macstring设备mac地址R
fwstring设备固件版本号R
timestring设备当前时间R
time_stampint设备当前时间戳R
run_timeint设备运行时间(单位秒)R

P1

获取读表器JSON数据

  • 请求示例
GET http://192.168.31.213:8080/rpc/P1.JsonData
  • 返回值示例
{
"SN": "E0036003765928016",
"Device_Version ": "50",
"Device_Type": 0,
"Electricity delivered to client_low tariff": 53754.58,
"Electricity delivered to client_normal tariff": 9818.93,
"Electricity delivered by client_low tariff": 53754.58,
"Electricity delivered by client_normal tariff": 9818.93,
"AC_Phase-A_Current ": 12,
"AC_Phase-B_Current": 0,
"AC_Phase-C_Current": 0,
"AC_Phase-A_Voltage": 237,
"AC_Phase-B_Voltage": 237,
"AC_Phase-C_Voltage": 236,
" Actual electricity power delivered +P ": 0,
" Actual electricity power received -P ": 2.94,
"Instantaneous active power L1 +P": 0,
"Instantaneous active power L2 +P": 0,
"Instantaneous active power L3 +P": 0,
"Instantaneous active power L1 -P": 2.95,
"Instantaneous active power L2 -P": 0,
"Instantaneous active power L3 -P": 0
}

方法:P1.JsonData

  • 返回值: JSON格式的电表数据。
参数名说明单位
SN当前电表设备SN-
Device_Version当前电表版本-
Device_Type当前电表设备型号-
Electricity delivered to client_low tariff正向低费率累计电能kWh
Electricity delivered to client_normal tariff正向正常费率累计电能kWh
Electricity delivered by client_low tariff反向低费率累计电能kWh
Electricity delivered by client_normal tariff反向正常费率累计电能kWh
AC_Phase-L1_Current交流 A 相电流A
AC_Phase-L2_Current交流 B 相电流A
AC_Phase-L3_Current交流 C 相电流A
AC_Phase-L1_Voltage交流 A 相电压V
AC_Phase-L2_Voltage交流 B 相电压V
AC_Phase-L3_Voltage交流 C 相电压V
Actual electricity power delivered +P正向总有功功率kW
Actual electricity power received -P反向总有功功率kW
Instantaneous active power L1 +P购电有功功率 L1kW
Instantaneous active power L2 +P购电有功功率 L2kW
Instantaneous active power L3 +P购电有功功率 L3kW
Instantaneous active power L1 -P并网有功功率 L1kW
Instantaneous active power L2 -P并网有功功率 L2kW
Instantaneous active power L3 -P并网有功功率 L3kW
Total Gas Consumption总燃气消耗量

获取读表器源数据

  • 请求示例
GET http://192.168.31.213:8080/rpc/P1.GetData
  • 返回值示例
{
3:0.2.8(50)
0-0:1.0.0(181106140429W)
0-0:96.1.1(31333631353032362020202020202020)
1-0:1.8.1(10830.511*kWh)
1-0:1.8.2(002948.827*kWh)
1-0:2.8.1(001285.951*kWh)
1-0:2.8.2(002876.514*kWh)
0-0:96.14.0(0002)
1-0:1.7.0(21.100*kW)
1-0:2.7.0(00.000*kW)
0-0:96.7.21(00006)
0-0:96.7.9(00003)
1-0:99.97.0(1)(0-0:96.7.19)(180529135630S)(0000002451*s)
1-0:32.32.0(00003)
1-0:52.32.0(00002)
1-0:72.32.0(00002)
1-0:32.36.0(00001)
1-0:52.36.0(00001)
1-0:72.36.0(00001)
0-0:96.13.0()
1-0:32.7.0(236.0*V)
1-0:52.7.0(232.6*V)
1-0:72.7.0(235.1*V)
1-0:31.7.0(002*A)
1-0:51.7.0(000*A)
1-0:71.7.0(000*A)
1-0:21.7.0(00.000*kW)
1-0:41.7.0(00.033*kW)
1-0:61.7.0(00.132*kW)
1-0:22.7.0(00.676*kW)
1-0:42.7.0(00.000*kW)
1-0:62.7.0(00.000*kW)
0-1:24.1.0(003)
0-1:96.1.0(4730303339303031373030343630313137)
0-1:24.2.1(210606140010W)(02569.646*m3)
!1F28
}

方法:P1.GetData

  • 返回值:设备获取的电表源数据。

Plug

获取电器耗电情况

  • 请求示例
GET http://192.168.31.213:8080/rpc/Plug.GetData
  • 返回值示例
{
"voltage": 230,
"electric_current": 0,
"positive_active_energy": 1.730654,
"reverse_active_energy": 0.000000,
"power": 1.217517
}

方法:Plug.GetData

  • 返回值
参数名参数类型说明单位
voltageint电压V
electric_currentint电流A
positive_active_energyfloat正向有功总电能kWh
reverse_active_energyfloat反向有功总电能kWh
powerfloat有功功率W

获取插座通断状态

  • 请求示例
GET http://192.168.31.213:8080/rpc/Plug.GetStatus
  • 返回值示例
{"switch_status": "on"}

方法:Plug.GetStatus

  • 返回值
参数名参数类型说明
switch_statusstringon:打开,off:断开。

设置插座通断

  • 请求示例
POST http://192.168.31.213:8080/rpc/Plug.SetStatus?config={"switch_status":"on"}
  • 返回值示例
{"result": true}

方法:Plug.SetStatus

  • 参数
参数名参数类型说明
configobject设置插座通断状态,详情见Config表格。
  • 返回值
参数名参数类型说明
resultbooltrue:成功,false:失败。

Config

参数名参数类型说明单位读写属性
voltageint电压VR
currentint电流AR
Electricity delivered to clientfloat正向有功总电能kWhR
Electricity delivered by clientfloat反向有功总电能kWhR
Active powerfloat有功功率WR
switch_statusstring插座通断控制:on - 打开,off - 断开-R/W

Meter

获取电表JSON数据

  • 请求示例
GET http://192.168.31.213:8080/rpc/Meter.JsonData
  • 返回值示例
{
"SN": "3310500113",
"voltage": 229.87,
"current": 0.66,
"active power": 133.50,
"apparent power": 209.60,
"reactive power": -29.80,
"power factor": 0.63,
"frequency": 50.03,
"total_act_energy": 3.53,
"total_act_ret_energy": 0.18
}

方法:Meter.JsonData

  • 返回值:JSON格式的电表数据。
参数名说明单位
SN设备SN-
current电流A
voltage电压V
frequency交流频率Hz
power factor功率因数%
active Power正反向有功功率W
apparent power正反向视在功率W
reactive power正反向无功功率W
total_act_energy总正向有功电能kWh
total_act_ret_energy总反向有功电能kWh
信息

近红外读表器获取的数据直接来源于仪表本身,其具体内容和格式因而完全取决于仪表的型号、通信协议及制造商。

六、设备

P1读表器

P1读表器(P1-2W)通过RJ12接口与单台P1电表直连,持续采集电表工作状态与用电数据,实现对电表系统的长效监控。该设备将采集的数据通过WiFi无线传输至本地或云端平台,通过可视化图表动态呈现电表实时状态与历史用电趋势。

型号支持组件
P1-2WSys
P1

智能计量插座

智能计量插座(SP-2W-EU)适用于各种家庭用电场景,具备双向计量和远程控制功能。通过WiFi连接,实时上传能耗数据至本地/云端平台。用户可通过手机或电脑远程控制插座来通断连接电器,并监控电器的使用情况,从而实现能效管理自动化。

型号支持组件
SP-2W-EUSys
Plug

智能导轨电表

智能导轨电表专为户用及小型工商业双向电能计量设计,采用开口式互感器接入,符合DIN 35mm导轨安装标准。通过WiFi/Ethernet连接,实时上传数据至本地或远程软件平台,实现电能使用的详细监测与分析。

型号支持组件
MR1-D5-WR
MR1-D5-W
MR1-D4-WRE
MR3-D4-WRE
MR1-D4-WE
MR3-D4-WE
MR1-D3-W
MR3-D3-W
Sys
Meter

注:MR1对应单相电表,MR3对应三相电表。

近红外读表器

近红外读表器主要通过采集红外电表的工作状态和用电情况对电表系统进行长期而有效的监控。通过“红外接口”与单台红外电表连接,从电表端接收用电的各项信息,并通过WiFi的方式将数据传输至本地或远程软件平台,电表的实时状态以及历史数据都能以图表方式呈现,直观、清晰易懂,用户实现随时随地监控电表系统,极大地简化了维护工作。

型号支持组件
NIR-1
NIR-3
Sys
Meter

七、FAQ

问题原因及解决办法
HTTP 访问返回 401 Unauthorized1. 检查Digest认证的用户名和密码是否正确。
2. 首次使用/恢复出厂设置的设备只支持访问指定接口(User.SetConfig)。详情请见Digest认证,修改密码成功后用新密码认证即可正常使用其他接口。
发送广播指令后设备未返回 IP 地址OpenData API尚未开启,导致该功能不可用。详情请见开启API。
获取数据失败1.检查设备是否开启。
2.检查设备与电脑是否连接同一个局域网。