You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置WEM-MX电表实现能源追踪与数据上报对接

WEM-MX电表对接实操步骤

一、先排查PHP页面未触发的问题

先不要写业务逻辑,按以下顺序定位:

  • 先在web根目录写一个最简请求记录脚本,内容如下:
<?php
$log = sprintf(
    "[%s] METHOD:%s HOST:%s URI:%s HEADERS:%s BODY:%s\n",
    date('Y-m-d H:i:s'),
    $_SERVER['REQUEST_METHOD'],
    $_SERVER['HTTP_HOST'],
    $_SERVER['REQUEST_URI'],
    json_encode(getallheaders()),
    file_get_contents('php://input')
);
file_put_contents('./access_debug.log', $log, FILE_APPEND);

把web服务器的访问日志、错误日志级别调到最高,临时关闭WAF、HTTPS强制跳转、路径伪静态规则,触发一次电表上报,看日志里有没有收到请求,重点确认3个点:

  • 电表请求的目标端口、路径是否和你配置的一致:该型号老设备不支持非80端口、不支持多级路径、仅识别.php后缀的处理入口,配置上报地址时不要带多余参数
  • 服务器是否拦截了请求:老SOAP设备固定带Content-Type: text/xml头,部分默认配置的web服务器会拦截非form类型的POST请求,直接返回403/415状态码,不会转发给PHP解析
  • 虚拟主机是否匹配:部分固件版本硬编码了上报请求的HOST头,用IP直连时要把接收脚本设为web服务器的默认站点,避免请求落到其他虚拟主机上
  • 注意:该设备固件不支持HTTP 301/302跳转,所有上报地址必须直接返回200状态码,不要做路径补全、协议跳转类的规则。

二、SOAP上报最小实现

不需要系统学习SOAP/XML规范,针对该设备的ReportData上报接口,按最小逻辑实现即可:

  • 不要用$_POST获取上报数据:SOAP报文是放在HTTP请求体里的XML格式数据,不是表单格式,必须用file_get_contents('php://input')获取原始请求体
  • 解析数据直接用PHP内置的SimpleXML扩展,注意处理SOAP命名空间,示例代码:
<?php
// 获取原始请求体
$rawXml = file_get_contents('php://input');
// 解析XML,忽略CDATA转义
$xml = simplexml_load_string($rawXml, 'SimpleXMLElement', LIBXML_NOCDATA);
// 注册SOAP和业务接口的命名空间,不注册无法读取报文体节点
$xml->registerXPathNamespace('soap', 'http://schemas.xmlsoap.org/soap/envelope/');
$xml->registerXPathNamespace('et', 'http://etanalytics.com/');
// 提取上报数据节点
$reportData = $xml->xpath('//soap:Body//et:ReportData')[0] ?? null;
if ($reportData) {
    // 此处写自己的业务逻辑,提取设备编号、时间戳、各回路能耗值,存入数据库/文件
    file_put_contents('./meter_data_storage.log', print_r($reportData, true)."\n", FILE_APPEND);
}
  • 必须返回符合规范的SOAP响应,否则设备会判定上报失败,持续重复发送请求,固定返回成功的响应报文如下:
<?php
header('Content-Type: text/xml; charset=utf-8');
echo <<<XML
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <ReportDataResponse xmlns="http://etanalytics.com/">
      <ReportDataResult>true</ReportDataResult>
    </ReportDataResponse>
  </soap:Body>
</soap:Envelope>
XML;
exit;

三、兜底方案(SOAP对接受阻时使用)

如果SOAP模式调试无进展,直接切换为FTP上报模式,配置成本更低、稳定性更高:

  • 部署FTP服务,为电表单独创建账号,仅开放单个上传目录的写入权限,注意该设备仅支持FTP主动模式,不支持FTPS、SFTP加密,不要开启相关安全选项
  • 设备按固定间隔生成标准格式的能耗数据文件(csv/dat格式)上传到FTP目录,写定时任务扫描该目录,解析新增文件的字段入库即可,完全不需要处理XML/SOAP逻辑
  • 注意给FTP目录关闭执行权限,避免文件上传类安全风险

内容的提问来源于stack exchange,提问作者Leary00

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 10:57:14