5d

来自Jack's Lab
(版本间的差异)
跳转到: 导航, 搜索
(Update APP)
(数据上传格式)
 
(未显示1个用户的47个中间版本)
第1行: 第1行:
== 采集器建议规范 ==
+
== Data Collector Spec ==
  
=== 采集器硬件要求  ===
+
=== 系统功能要求 ===
  
单次采集,数据量很大,硬件最好满足如下基本要求:
+
采集数据默认抄表时间间隔为 2 分钟
  
* 至少 1GB 内存
 
* 16GB 存储
 
* 能跑嵌入式 Linux 系统
 
* 支持千兆 Ethernet
 
* 支持 3G/4G
 
* 支持 WiFi
 
* 支持 LoRa
 
  
* 下行最少一路 RS485 最少支持 40 块表,支持多路 RS485
+
* 上行到服务器,支持以太网/GPRS(可选WiFi/3G/4G),IP 地址和端口可配置,支持 DHCP
 +
* 通过 http 请求往边缘服务器推送数据
 +
* 数据间隔可调,最小粒度1min,即:每 1min 抄一次所有表,随后 http 发往边缘服务器
  
<br>
+
* 集中器需支持配置电表的 CT 变比,自动乘上 CT 变比
  
=== 采集器系统功能要求 ===
 
  
* 上行到服务器,支持以太网/WiFi/3G/4G,IP 地址和端口可配置,支持 DHCP
 
* 通过 http 请求往边缘服务器推送数据
 
* 数据间隔可调,最小粒度5s,即:每 5s 抄一次所有表,随后 http 发往边缘服务器
 
 
* 集中器如果数据上行 push 失败,至少要能存储一天的历史数据,待边缘服务器恢复后,自动将历史数据推送到边缘服务器 (可选)
 
* 集中器如果数据上行 push 失败,至少要能存储一天的历史数据,待边缘服务器恢复后,自动将历史数据推送到边缘服务器 (可选)
 
* 支持配置 building_id 和 gateway_id(可选)
 
* 支持配置 building_id 和 gateway_id(可选)
  
* 集中器需支持配置电表的 CT 变比,自动乘上 CT 变比
+
<br>
  
 +
=== 数据上传格式 ===
 
<br>
 
<br>
 +
<b style="color:#b00">采集数据默认抄表时间间隔为 2 分钟</b>
  
=== 采集器上传数据格式 ===
 
  
 
* building_id 为建筑编号
 
* building_id 为建筑编号
 
* gateway_id 为采集器编号
 
* gateway_id 为采集器编号
  
* meter_id 为电表地址
+
* meter id 为电表地址
* way_id 为电表的路号,支持 1 路的电表 way_id 为 1;支持 2 路三相电监控的路号为 1 ~ 2;支持 6 路三相电监控的路号为 1 ~ 6
+
* way id 为电表的路号,支持 1 路的电表 way id 为 1;支持 2 路三相电监控的路号为 1 ~ 2;支持 6 路三相电监控的路号为 1 ~ 6
 +
 
 +
 
 +
* 电表数据可以详细到三相电的每一相,就是下面 xml 格式内的 phase A, B,C
 +
* 每项的监测数据有电压 (U),电流 (I),功率 (P),功率因数 (PF),视在功率 (S),无功功率 (Q)
  
  
* 电表数据可以详细到三相电的每一相,就是下面 xml 格式内的 phase A, B,C。每项的监测数据有电压 (U),电流 (I),功率 (P),功率因数 (PF),视在功率 (S)和无功功率 (Q)
 
 
* 三相总的(phase All)数据:功率因数 (PF),有功功率 (P),无功功率 (Q),视在功率 (S),正向有功总电能 (PEP),反向有功总电能 (NEP),正向无功总电能 (PEQ),反向无功总电能 (NEQ)
 
* 三相总的(phase All)数据:功率因数 (PF),有功功率 (P),无功功率 (Q),视在功率 (S),正向有功总电能 (PEP),反向有功总电能 (NEP),正向无功总电能 (PEQ),反向无功总电能 (NEQ)
 +
 +
 +
* 电表没有的数据,数据域填 0 即可
  
  
第45行: 第43行:
  
  
以下是电表地址 (meter_id) 为 70(一路)和 72 (两路)两块表的数据同时上传例子:
+
以下是电表地址 (meter id) 为 0x46(一路)和 0x48 (两路)两块表的数据同时上传例子:
  
 
<source lang=xml>
 
<source lang=xml>
第60行: 第58行:
 
       <total>1</total>
 
       <total>1</total>
 
       <current>1</current>
 
       <current>1</current>
       <meter id="70">
+
       <meter id="46">
 
         <function id="1" coding="01" error="0">
 
         <function id="1" coding="01" error="0">
 
           <way id="1">
 
           <way id="1">
第100行: 第98行:
 
         </function>
 
         </function>
 
       </meter>
 
       </meter>
       <meter id="72">
+
       <meter id="48">
 
         <function id="1" coding="01" error="0">
 
         <function id="1" coding="01" error="0">
 
           <way id="1">
 
           <way id="1">
第190行: 第188行:
 
User-Agent: curl/7.52.1
 
User-Agent: curl/7.52.1
 
Accept: */*
 
Accept: */*
Content-Length: 3401
+
Content-Length: 3402
 
Content-Type: application/x-www-form-urlencoded
 
Content-Type: application/x-www-form-urlencoded
 
Expect: 100-continue
 
Expect: 100-continue
  
<?xml version="1.0" encoding="utf-8" ?><root><common><building_id>110101B001</building_id><gateway_id>2</gateway_id><type>report</type><data operation="report"><sequence>0</sequence><parser>yes</parser><time>20170810093040</time><total>1</total><current>1</current><meter id="70"><function id="1" coding="01" error="0"><way id="1"><phase id="A"><U>226.12</U><I>7.00</I><S>0.00</S><P>0.70</P><Q>0.00</Q><PF>0.77</PF></phase><phase id="B"><U>226.12</U><I>7.00</I><S>0.00</S><P>0.70</P><Q>0.00</Q><PF>0.77</PF></phase><phase id="C"><U>226.12</U><I>7.00</I><S>0.00</S><P>0.70</P><Q>0.00</Q><PF>0.77</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way></function></meter><meter id="1"><function id="1" coding="01" error="0"><way id="1"><phase id="A"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.10</PF></phase><phase id="B"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.10</PF></phase><phase id="C"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.10</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way><way id="2"><phase id="A"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.20</PF></phase><phase id="B"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.20</PF></phase><phase id="C"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.20</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way><way id="3"><phase id="A"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.30</PF></phase><phase id="B"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.30</PF></phase><phase id="C"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.30</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way><way id="4"><phase id="A"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.40</PF></phase><phase id="B"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.40</PF></phase><phase id="C"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.40</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way><way id="5"><phase id="A"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.50</PF></phase><phase id="B"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.50</PF></phase><phase id="C"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.50</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way><way id="6"><phase id="A"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.60</PF></phase><phase id="B"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.60</PF></phase><phase id="C"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.60</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way></function></meter></data></common></root>
+
<?xml version="1.0" encoding="utf-8" ?><root><common><building_id>110101B001</building_id><gateway_id>2</gateway_id><type>report</type><data operation="report"><sequence>0</sequence><parser>yes</parser><time>20180810093040</time><total>1</total><current>1</current><meter id="99"><function id="1" coding="01" error="0"><way id="1"><phase id="A"><U>226.12</U><I>7.00</I><S>0.00</S><P>0.70</P><Q>0.00</Q><PF>0.77</PF></phase><phase id="B"><U>226.12</U><I>7.00</I><S>0.00</S><P>0.70</P><Q>0.00</Q><PF>0.77</PF></phase><phase id="C"><U>226.12</U><I>7.00</I><S>0.00</S><P>0.70</P><Q>0.00</Q><PF>0.77</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way></function></meter><meter id="9A"><function id="1" coding="01" error="0"><way id="1"><phase id="A"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.10</PF></phase><phase id="B"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.10</PF></phase><phase id="C"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.10</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way><way id="2"><phase id="A"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.20</PF></phase><phase id="B"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.20</PF></phase><phase id="C"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.20</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way><way id="3"><phase id="A"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.30</PF></phase><phase id="B"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.30</PF></phase><phase id="C"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.30</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way><way id="4"><phase id="A"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.40</PF></phase><phase id="B"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.40</PF></phase><phase id="C"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.40</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way><way id="5"><phase id="A"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.50</PF></phase><phase id="B"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.50</PF></phase><phase id="C"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.50</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way><way id="6"><phase id="A"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.60</PF></phase><phase id="B"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.60</PF></phase><phase id="C"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.60</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way></function></meter></data></common></root>
 
</source>
 
</source>
  
第201行: 第199行:
 
<source lang=bash>
 
<source lang=bash>
 
$ cat d.xml
 
$ cat d.xml
<?xml version="1.0" encoding="utf-8" ?><root><common><building_id>110101B001</building_id><gateway_id>2</gateway_id><type>report</type><data operation="report"><sequence>0</sequence><parser>yes</parser><time>20170810093040</time><total>1</total><current>1</current><meter id="70"><function id="1" coding="01" error="0"><way id="1"><phase id="A"><U>226.12</U><I>7.00</I><S>0.00</S><P>0.70</P><Q>0.00</Q><PF>0.77</PF></phase><phase id="B"><U>226.12</U><I>7.00</I><S>0.00</S><P>0.70</P><Q>0.00</Q><PF>0.77</PF></phase><phase id="C"><U>226.12</U><I>7.00</I><S>0.00</S><P>0.70</P><Q>0.00</Q><PF>0.77</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way></function></meter><meter id="1"><function id="1" coding="01" error="0"><way id="1"><phase id="A"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.10</PF></phase><phase id="B"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.10</PF></phase><phase id="C"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.10</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way><way id="2"><phase id="A"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.20</PF></phase><phase id="B"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.20</PF></phase><phase id="C"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.20</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way><way id="3"><phase id="A"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.30</PF></phase><phase id="B"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.30</PF></phase><phase id="C"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.30</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way><way id="4"><phase id="A"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.40</PF></phase><phase id="B"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.40</PF></phase><phase id="C"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.40</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way><way id="5"><phase id="A"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.50</PF></phase><phase id="B"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.50</PF></phase><phase id="C"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.50</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way><way id="6"><phase id="A"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.60</PF></phase><phase id="B"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.60</PF></phase><phase id="C"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.60</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way></function></meter></data></common></root>
+
<?xml version="1.0" encoding="utf-8" ?><root><common><building_id>110101B001</building_id><gateway_id>2</gateway_id><type>report</type><data operation="report"><sequence>0</sequence><parser>yes</parser><time>20180810093040</time><total>1</total><current>1</current><meter id="99"><function id="1" coding="01" error="0"><way id="1"><phase id="A"><U>226.12</U><I>7.00</I><S>0.00</S><P>0.70</P><Q>0.00</Q><PF>0.77</PF></phase><phase id="B"><U>226.12</U><I>7.00</I><S>0.00</S><P>0.70</P><Q>0.00</Q><PF>0.77</PF></phase><phase id="C"><U>226.12</U><I>7.00</I><S>0.00</S><P>0.70</P><Q>0.00</Q><PF>0.77</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way></function></meter><meter id="9A"><function id="1" coding="01" error="0"><way id="1"><phase id="A"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.10</PF></phase><phase id="B"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.10</PF></phase><phase id="C"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.10</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way><way id="2"><phase id="A"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.20</PF></phase><phase id="B"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.20</PF></phase><phase id="C"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.20</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way><way id="3"><phase id="A"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.30</PF></phase><phase id="B"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.30</PF></phase><phase id="C"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.30</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way><way id="4"><phase id="A"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.40</PF></phase><phase id="B"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.40</PF></phase><phase id="C"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.40</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way><way id="5"><phase id="A"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.50</PF></phase><phase id="B"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.50</PF></phase><phase id="C"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.50</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way><way id="6"><phase id="A"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.60</PF></phase><phase id="B"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.60</PF></phase><phase id="C"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.60</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way></function></meter></data></common></root>
  
$ curl -X POST -d @d.xml http://192.168.1.20:8000/dev/elec
+
$ curl -X POST -d @d.xml http://192.168.1.2:8000/dev/elec
 
</source>
 
</source>
  
 
<br>
 
<br>
  
== 现场调试操作 ==
+
=== 硬件要求  ===
  
* http://192.168.1.2:3000/
+
单次采集,数据量很大,硬件最好满足如下基本要求:
* http://192.168.1.2:18083/
+
  
 +
* 至少 32MB(建议 1GB)内存
 +
* 至少 32MB(建议 4GB)存储
 +
* 能跑嵌入式 Linux 系统
 +
* 支持百兆/千兆 Ethernet
 +
* 支持 3G/4G(可选)
 +
* 支持 WiFi(可选)
 +
* 支持 LoRa(可选)
  
* http://192.168.1.2:8000/device/yard
+
* 下行最少一路 RS485 最少支持 40 块表,支持多路 RS485
* http://192.168.1.2:8000/device/yard2
+
* http://192.168.1.2:8000/device/temp
+
* http://192.168.1.2:8000/device/temp2
+
 
+
 
+
* pull elect data: http://192.168.1.2:8000/dev/data?meter_id=1B&way_id=3
+
 
+
* push data: http://192.168.1.2:8000/dev/temp?building_id=110101B001&devid=MKD393830497658&temp=19.2
+
* pull data: http://192.168.1.2:8000/tempdata?devid=MKD118581004672
+
 
+
 
+
 
+
=== 验证 ===
+
 
+
到此,在调试人员 PC 122.5.18.172 上,开一个 TCP Server 端口在 9011,就能收到,集中器定时上传的 XML 数据:
+
 
+
<source lang=bash>
+
comcat@jackslab:/work/5d/src/src-x$ sudo nc -l -p 9011
+
<?xml version="1.0" encoding="utf-8"?>
+
<root><common><sadd>37060001</sadd><oadd></oadd><func_type>6</func_type><oper_type>3</oper_type></common><trans><total_meter_num>1</total_meter_num><frame_idx>1</frame_idx><meter_num>1</meter_num><time_node>2017-01-05 22:38:00</time_node></trans><row id="1"><f_id>2375</f_id><f_meter_type>40</f_meter_type><f_device_id>3</f_device_id><f_meter_address>00000000000087</f_meter_address><f_timestamp>2017-01-05 22:38:43</f_timestamp><f_time>2017-01-05 22:38:00</f_time><f_pact_tot_elec>null</f_pact_tot_elec><f_nact_tot_elec>null</f_nact_tot_elec><f_preact_tot_elec>null</f_preact_tot_elec><f_nreact_tot_elec>null</f_nreact_tot_elec><f_act_tot_elec>null</f_act_tot_elec><f_react_tot_elec>null</f_react_tot_elec></row></root>
+
<?xml version="1.0" encoding="utf-8"?>
+
<root><common><sadd>37060001</sadd><oadd></oadd><func_type>6</func_type><oper_type>3</oper_type></common><trans><total_meter_num>1</total_meter_num><frame_idx>1</frame_idx><meter_num>1</meter_num><time_node>2017-01-05 22:38:00</time_node></trans><row id="1"><f_id>2375</f_id><f_meter_type>40</f_meter_type><f_device_id>3</f_device_id><f_meter_address>00000000000087</f_meter_address><f_timestamp>2017-01-05 22:38:43</f_timestamp><f_time>2017-01-05 22:38:00</f_time><f_pact_tot_elec>null</f_pact_tot_elec><f_nact_tot_elec>null</f_nact_tot_elec><f_preact_tot_elec>null</f_preact_tot_elec><f_nreact_tot_elec>null</f_nreact_tot_elec><f_act_tot_elec>null</f_act_tot_elec><f_react_tot_elec>null</f_react_tot_elec></row></root>
+
......
+
......
+
</source>
+
 
+
 
+
集中器默认抄表时间间隔为 2 分钟
+
 
+
 
+
<br><br>
+
 
+
== Debug Log ==
+
 
+
* [[8th log for 5d]]
+
 
+
* [[Meter Table of XinDongAn]]
+
 
+
<br><br>
+
 
+
== Old XML Format ==
+
 
+
From collector:
+
 
+
<source lang=xml>
+
<?xml version="1.0" encoding="utf-8"?>
+
<root>
+
<common>
+
<sadd>37060001</sadd>
+
<oadd></oadd>
+
<func_type>6</func_type>
+
<oper_type>3</oper_type>
+
</common>
+
 
+
<trans>
+
<total_meter_num>1</total_meter_num>
+
<frame_idx>1</frame_idx>
+
<meter_num>1</meter_num
+
<time_node>2017-01-05 22:38:00</time_node>
+
</trans>
+
 
+
<row id="1">
+
<f_id>2375</f_id>
+
<f_meter_type>40</f_meter_type>
+
<f_device_id>3</f_device_id>
+
<f_meter_address>00000000000087</f_meter_address>
+
<f_timestamp>2017-01-05 22:38:43</f_timestamp>
+
<f_time>2017-01-05 22:38:00</f_time>
+
<f_pact_tot_elec>null</f_pact_tot_elec>
+
<f_nact_tot_elec>null</f_nact_tot_elec>
+
<f_preact_tot_elec>null</f_preact_tot_elec>
+
<f_nreact_tot_elec>null</f_nreact_tot_elec>
+
<f_act_tot_elec>null</f_act_tot_elec>
+
<f_react_tot_elec>null</f_react_tot_elec>
+
</row>
+
</root>
+
</source>
+
  
 
<br>
 
<br>
  
== NOTES ==
+
== 现场调试操作 ==
  
=== Meter Type ===
+
现场服务器 IP 地址: 192.168.1.2
  
* HEATMETER    0x20
+
现场服务端口:8000
* WATERMETER    0x10
+
* ELECTMETER    0x40
+
* GASMETER      0x30
+
* SENSORDEV    0x50    // RTU module of sensors
+
  
 
<br>
 
<br>
  
=== ElectMeter Protocol ===
+
=== 查看数据 ===
  
<source lang=cpp>
+
==== Station 1 ====
/*
+
*  Format:串口设置, 读取电表数据标识符, 前导符个数, 通讯类型 (0:MBUS  1:485), 通讯协议类型(0:MODBUS  1:645)
+
*/
+
uint16 gELEC_METER_Table[ELECMETER_PROTO_SUM][5] = {
+
  {ELEC_COMSET_1, 0x0000, 0, ELEC_RS485, ELEC_PROTO_MODBUS}, //力创电表              -----idx: -0-
+
  {ELEC_COMSET_1, 0x0000, 0, ELEC_RS485, ELEC_PROTO_MODBUS},  //acrel DDSD1352单相电表 -----idx: -1-
+
  {ELEC_COMSET_1, 0x0000, 0, ELEC_RS485, ELEC_PROTO_MODBUS},  //acrel DTSF1352三相电表 -----idx: -2-
+
  {ELEC_COMSET_1, 0x0000, 0, ELEC_RS485, ELEC_PROTO_MODBUS},  //acrel PZ80-E4C三相电表 -----idx: -3-
+
};
+
</source>
+
 
+
<br>
+
 
+
=== Meter Channel ===
+
  
Only support:
+
浏览器直接访问: http://192.168.1.2:8000/dev/data?meter_id=2B&way_id=5
  
* RS485_DOWN_CHANNEL  7
+
XML 格式的第一条时间戳就是最新数据,如果最新数据是一周前的数据,默认监控页面就会没有数据显示。。。
  
 
<br>
 
<br>
  
=== Meter Config in Database ===
+
====  Station 2 ====
  
<source lang=bash>
+
浏览器直接访问: http://192.168.1.2:8000/dev/data?meter_id=1B&way_id=3
sqlite> .schema t_meter_info
+
CREATE TABLE t_meter_info
+
(
+
    f_id    integer primary key autoincrement,
+
    f_meter_type    varchar(2),
+
    f_device_id varchar(4),
+
    f_meter_address varchar(14),
+
    f_meter_channel varchar(2),
+
    f_meter_proto_type  varchar(2),
+
    f_install_pos  varchar(50)
+
);
+
sqlite> select * from t_meter_info;
+
18|40|3|00000000000001|7|0|3#地下室
+
19|20|4|11110020160429|1|0|3#under
+
  
sqlite> .dump t_meter_info
+
XML 格式的第一条时间戳就是最新数据,如果最新数据是一周前的数据,默认监控页面就会没有数据显示。。。
PRAGMA foreign_keys=OFF;
+
BEGIN TRANSACTION;
+
 
+
INSERT INTO "t_meter_info" VALUES(18,'40','3','00000000000001','7','0','3#地下室');
+
INSERT INTO "t_meter_info" VALUES(19,'20','4','11110020160429','1','0','3#under');
+
COMMIT;
+
</source>
+
  
 
<br><br>
 
<br><br>
  
== Hardware ==
+
=== 上传数据测试接口 ===
  
=== Serial Console ===
+
测试边缘 IoT 云接受数据是否正常:
  
* CP2102_PIN26 --- ARM9_CORE_J2_32_DRXD
+
<source lang=bash>
* CP2102_PIN25 --- ARM9_CORE_J2_30_DTXD
+
$ cat d.xml
 +
<?xml version="1.0" encoding="utf-8" ?><root><common><building_id>110101B001</building_id><gateway_id>2</gateway_id><type>report</type><data operation="report"><sequence>0</sequence><parser>yes</parser><time>20180810093040</time><total>1</total><current>1</current><meter id="99"><function id="1" coding="01" error="0"><way id="1"><phase id="A"><U>226.12</U><I>7.00</I><S>0.00</S><P>0.70</P><Q>0.00</Q><PF>0.77</PF></phase><phase id="B"><U>226.12</U><I>7.00</I><S>0.00</S><P>0.70</P><Q>0.00</Q><PF>0.77</PF></phase><phase id="C"><U>226.12</U><I>7.00</I><S>0.00</S><P>0.70</P><Q>0.00</Q><PF>0.77</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way></function></meter><meter id="9A"><function id="1" coding="01" error="0"><way id="1"><phase id="A"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.10</PF></phase><phase id="B"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.10</PF></phase><phase id="C"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.10</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way><way id="2"><phase id="A"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.20</PF></phase><phase id="B"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.20</PF></phase><phase id="C"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.20</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way><way id="3"><phase id="A"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.30</PF></phase><phase id="B"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.30</PF></phase><phase id="C"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.30</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way><way id="4"><phase id="A"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.40</PF></phase><phase id="B"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.40</PF></phase><phase id="C"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.40</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way><way id="5"><phase id="A"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.50</PF></phase><phase id="B"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.50</PF></phase><phase id="C"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.50</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way><way id="6"><phase id="A"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.60</PF></phase><phase id="B"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.60</PF></phase><phase id="C"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.60</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way></function></meter></data></common></root>
 +
 +
$ curl -X POST -d @d.xml http://192.168.1.2:8000/dev/elec
 +
<?xml version="1.0"?>
 +
<root><code>0</code><message>OK</message></root>
 +
</source>
  
<br>
 
  
=== RS485_1 ===
+
OK 后,浏览器里访问如下地址查看刚刚 POST 的数据:
  
* RS485_1_A+ --- MAX485_PIN6
+
*http://192.168.1.2:8000/dev/data?meter_id=99&way_id=1
* RS485_1_B- --- MAX485_PIN7
+
*http://192.168.1.2:8000/dev/data?meter_id=9A&way_id=1
  
* MAX485_PIN4 --- ARM9_CORE_J2_68_TXD0
 
* MAX485_PIN1 --- ARM9_CORE_J2_69_RXD0
 
* MAX485_PIN2 & 3 --- ARM9_CORE_J1_69_PC30
 
  
<br>
+
<br><br>
  
=== RS485_2 ===
+
=== Notes ===
  
* RS485_2_A+ --- MAX485_PIN6
 
* RS485_2_B- --- MAX485_PIN7
 
  
* MAX485_PIN4 --- ARM9_CORE_J2_55_CANTX1
+
* http://192.168.1.2:3000/
* MAX485_PIN1 --- ARM9_CORE_J2__57_CANRX1
+
* http://192.168.1.2:18083/
* MAX485_PIN2 & 3 --- ARM9_CORE_J1_68_PC31
+
  
<br>
 
  
== Drivers ==
+
* http://192.168.1.2:8000/device/yard
 +
* http://192.168.1.2:8000/device/yard2
 +
* http://192.168.1.2:8000/device/temp
 +
* http://192.168.1.2:8000/device/temp2
  
atmel_usart:
 
  
<source lang=bash>
+
* pull elect data: http://192.168.1.2:8000/dev/data?meter_id=1B&way_id=3
atmel_usart.0: ttyS0 at MMIO 0xfefff200 (irq = 1) is a ATMEL_SERIAL
+
atmel_usart.1: ttyS1 at MMIO 0xf801c000 (irq = 5) is a ATMEL_SERIAL
+
atmel_usart.2: ttyS2 at MMIO 0xf8020000 (irq = 6) is a ATMEL_SERIAL
+
atmel_usart.3: ttyS3 at MMIO 0xf8024000 (irq = 7) is a ATMEL_SERIAL
+
atmel_usart.5: ttyS5 at MMIO 0xf8040000 (irq = 15) is a ATMEL_SERIAL
+
atmel_usart.6: ttyS6 at MMIO 0xf8044000 (irq = 16) is a ATMEL_SERIAL
+
</source>
+
  
<source lang=c>
+
* push data: http://192.168.1.2:8000/dev/temp?building_id=110101B001&devid=MKD393830497658&temp=19.2
#define DEVICE4851      "/dev/ttyS1"
+
* pull data: http://192.168.1.2:8000/tempdata?devid=MKD118581004672
#define DEVICE4852      "/dev/ttyS2"
+
#define DEVICEGPRS      "/dev/ttyS3"
+
#define DEVICEMBUS      "/dev/ttyS6"
+
#define IO_CONTROL  "/dev/CONTROL_IO"
+
</source>
+
  
 
<br><br>
 
<br><br>
  
== Boot log ==
+
=== Log ===
  
<source lang=bash>
+
* [[Meter Table of XinDongAn]]
RomBOOT
+
Start AT91Bootstrap...
+
Init DDR... Done!
+
Loading 1-Wire info...
+
Enumerate all roms:
+
Done, 0x0 1-wire chips found!
+
  
No 1-Wire chip found on EXID=0x0x2!
+
<br><br>
MCUzone:try to load from preset area...
+
sn: 0xa0284a4;  rev: 0x248421
+
Downloading image...
+
chip id: 0xecda
+
Copy 0x50000 bytes from 0x40000 to 0x26f00000
+
Done!
+
 
+
 
+
U-Boot 2010.06 (May 24 2012 - 14:30:50)
+
 
+
DRAM:  128 MiB
+
NAND:  256 MiB
+
*** Warning - bad CRC or NAND, using default environment
+
 
+
In:    serial
+
Out:  serial
+
Err:  serial
+
Net:  macb0
+
macb0: Starting autonegotiation...
+
macb0: Autonegotiation complete
+
macb0: link up, 100Mbps full-duplex (lpa: 0x4de1)
+
Hit any key to stop autoboot:  0
+
 
+
NAND read: device 0 offset 0x200000, size 0x250000
+
2424832 bytes read: OK
+
## Booting kernel from Legacy Image at 22000000 ...
+
  Image Name:  Linux-2.6.39
+
  Image Type:  ARM Linux Kernel Image (uncompressed)
+
  Data Size:    2107352 Bytes = 2 MiB
+
  Load Address: 20008000
+
  Entry Point:  20008000
+
  Verifying Checksum ... OK
+
  Loading Kernel Image ... OK
+
OK
+
 
+
Starting kernel ...
+
 
+
Uncompressing Linux... done, booting the kernel.
+
Linux version 2.6.39 (root@mcuzone) (gcc version 4.5.2 (Sourcery G++ Lite 2011.03-41) ) #30 Wed Aug 28 10:47:14 CST 2013
+
CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177
+
CPU: VIVT data cache, VIVT instruction cache
+
Machine: Atmel AT91SAM9X5-EK
+
Memory policy: ECC disabled, Data cache writeback
+
Clocks: CPU 400 MHz, master 133 MHz, main 12.000 MHz
+
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 32512
+
Kernel command line: mem=128M console=ttyS0,115200 mtdparts=atmel_nand:8M(bootstrap/uboot/kernel)ro,-(rootfs) root=/dev/mtdblock1 rw rootfstype=ubifs ubi.mtd=1 root=ubi0:rootfs
+
PID hash table entries: 512 (order: -1, 2048 bytes)
+
Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
+
Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
+
Memory: 128MB = 128MB total
+
Memory: 125696k/125696k available, 5376k reserved, 0K highmem
+
Virtual kernel memory layout:
+
    vector  : 0xffff0000 - 0xffff1000  (  4 kB)
+
    fixmap  : 0xfff00000 - 0xfffe0000  ( 896 kB)
+
    DMA    : 0xff000000 - 0xffe00000  (  14 MB)
+
    vmalloc : 0xc8800000 - 0xfee00000  ( 870 MB)
+
    lowmem  : 0xc0000000 - 0xc8000000  ( 128 MB)
+
    modules : 0xbf000000 - 0xc0000000  (  16 MB)
+
      .init : 0xc0008000 - 0xc002a000  ( 136 kB)
+
      .text : 0xc002a000 - 0xc03e0708  (3802 kB)
+
      .data : 0xc03e2000 - 0xc0408a40  ( 155 kB)
+
NR_IRQS:192
+
AT91: 128 gpio irqs in 4 banks
+
Console: colour dummy device 80x30
+
console [ttyS0] enabled
+
Calibrating delay loop... 199.06 BogoMIPS (lpj=995328)
+
pid_max: default: 32768 minimum: 301
+
Mount-cache hash table entries: 512
+
CPU: Testing write buffer coherency: ok
+
NET: Registered protocol family 16
+
AT91: CM rev B and higher
+
AT91: EK rev B and higher
+
AT91: Power Management (with slow clock mode)
+
AT91: Starting after user reset
+
bio: create slab <bio-0> at 0
+
SCSI subsystem initialized
+
usbcore: registered new interface driver usbfs
+
usbcore: registered new interface driver hub
+
usbcore: registered new device driver usb
+
i2c-gpio i2c-gpio.0: using pins 62 (SDA) and 63 (SCL)
+
at_hdmac at_hdmac.0: Atmel AHB DMA Controller ( cpy slave ), 8 channels
+
at_hdmac at_hdmac.1: Atmel AHB DMA Controller ( cpy slave ), 8 channels
+
cfg80211: Calling CRDA to update world regulatory domain
+
Switching to clocksource tcb_clksrc
+
NET: Registered protocol family 2
+
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
+
TCP established hash table entries: 4096 (order: 3, 32768 bytes)
+
TCP bind hash table entries: 4096 (order: 2, 16384 bytes)
+
TCP: Hash tables configured (established 4096 bind 4096)
+
TCP reno registered
+
UDP hash table entries: 256 (order: 0, 4096 bytes)
+
UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
+
NET: Registered protocol family 1
+
RPC: Registered udp transport module.
+
RPC: Registered tcp transport module.
+
RPC: Registered tcp NFSv4.1 backchannel transport module.
+
NetWinder Floating Point Emulator V0.97 (double precision)
+
JFFS2 version 2.2. (NAND) (SUMMARY)  © 2001-2006 Red Hat, Inc.
+
msgmni has been set to 245
+
io scheduler noop registered (default)
+
atmel_usart.0: ttyS0 at MMIO 0xfefff200 (irq = 1) is a ATMEL_SERIAL
+
atmel_usart.1: ttyS1 at MMIO 0xf801c000 (irq = 5) is a ATMEL_SERIAL
+
atmel_usart.2: ttyS2 at MMIO 0xf8020000 (irq = 6) is a ATMEL_SERIAL
+
atmel_usart.3: ttyS3 at MMIO 0xf8024000 (irq = 7) is a ATMEL_SERIAL
+
atmel_usart.5: ttyS5 at MMIO 0xf8040000 (irq = 15) is a ATMEL_SERIAL
+
atmel_usart.6: ttyS6 at MMIO 0xf8044000 (irq = 16) is a ATMEL_SERIAL
+
pioa_baseaddr is ok
+
pioc_baseaddr  is ok
+
CONTROL_IO initialized
+
brd: module loaded
+
loop: module loaded
+
ssc ssc.0: Atmel SSC device at 0xc8898000 (irq 28)
+
atmel_nand atmel_nand: Using dma0chan0 for DMA transfers.
+
NAND device: Manufacturer ID: 0xec, Chip ID: 0xda (Samsung NAND 256MiB 3,3V 8-bit)
+
atmel_pmecc_init_params
+
Scanning device for bad blocks
+
Bad eraseblock 220 at 0x000001b80000
+
Bad eraseblock 590 at 0x0000049c0000
+
Bad eraseblock 1126 at 0x000008cc0000
+
Bad eraseblock 1268 at 0x000009e80000
+
Bad eraseblock 1313 at 0x00000a420000
+
2 cmdlinepart partitions found on MTD device atmel_nand
+
Creating 2 MTD partitions on "atmel_nand":
+
0x000000000000-0x000000800000 : "bootstrap/uboot/kernel"
+
0x000000800000-0x000010000000 : "rootfs"
+
UBI: attaching mtd1 to ubi0
+
UBI: physical eraseblock size:  131072 bytes (128 KiB)
+
UBI: logical eraseblock size:    126976 bytes
+
UBI: smallest flash I/O unit:    2048
+
UBI: VID header offset:          2048 (aligned 2048)
+
UBI: data offset:                4096
+
UBI: max. sequence number:      88
+
UBI: attached mtd1 to ubi0
+
UBI: MTD device name:            "rootfs"
+
UBI: MTD device size:            248 MiB
+
UBI: number of good PEBs:        1979
+
UBI: number of bad PEBs:        5
+
UBI: number of corrupted PEBs:  0
+
UBI: max. allowed volumes:      128
+
UBI: wear-leveling threshold:    4096
+
UBI: number of internal volumes: 1
+
UBI: number of user volumes:    1
+
UBI: available PEBs:            0
+
UBI: total number of reserved PEBs: 1979
+
UBI: number of PEBs reserved for bad PEB handling: 19
+
UBI: max/mean erase counter: 2/0
+
UBI: image sequence number:  216742870
+
UBI: background thread "ubi_bgt0d" started, PID 360
+
macb macb.0: invalid hw address, using random
+
macb macb.0: eth0: Features changed: 0x00004800 -> 0x00004000
+
MACB_mii_bus: probed
+
eth0: Atmel MACB at 0xf802c000 irq 24 (52:ac:b8:80:5f:b2)
+
eth0: attached PHY driver [Generic PHY] (mii_bus:phy_addr=0:00, irq=-1)
+
ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
+
atmel-ehci atmel-ehci: Atmel EHCI UHP HS
+
atmel-ehci atmel-ehci: new USB bus registered, assigned bus number 1
+
atmel-ehci atmel-ehci: irq 22, io mem 0x00700000
+
atmel-ehci atmel-ehci: USB 2.0 started, EHCI 1.00
+
hub 1-0:1.0: USB hub found
+
hub 1-0:1.0: 3 ports detected
+
ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
+
at91_ohci at91_ohci: AT91 OHCI
+
at91_ohci at91_ohci: new USB bus registered, assigned bus number 2
+
at91_ohci at91_ohci: irq 22, io mem 0x00600000
+
hub 2-0:1.0: USB hub found
+
hub 2-0:1.0: 3 ports detected
+
Initializing USB Mass Storage driver...
+
usbcore: registered new interface driver usb-storage
+
USB Mass Storage support registered.
+
usbcore: registered new interface driver libusual
+
atmel_usba_udc atmel_usba_udc: MMIO registers at 0xf803c000 mapped at c88fe000
+
atmel_usba_udc atmel_usba_udc: FIFO at 0x00500000 mapped at d9100000
+
atmel_tsadcc atmel_tsadcc: Master clock is set at: 133333333 Hz
+
atmel_tsadcc atmel_tsadcc: Prescaler is set at: 221
+
input: atmel touch screen controller as /devices/platform/atmel_tsadcc/input/input0
+
rtc-rx8025 0-0032: rtc core: registered rx8025 as rtc0
+
i2c /dev entries driver
+
usbcore: registered new interface driver usbhid
+
usbhid: USB HID core driver
+
nf_conntrack version 0.5.0 (1964 buckets, 7856 max)
+
ip_tables: (C) 2000-2006 Netfilter Core Team
+
TCP cubic registered
+
NET: Registered protocol family 17
+
lib80211: common routines for IEEE802.11 drivers
+
Registering the dns_resolver key type
+
rtc-rx8025 0-0032: setting system clock to 2017-01-06 00:38:50 UTC (1483634330)
+
atmel_mci atmel_mci.0: Using dma0chan1 for DMA transfers
+
atmel_mci atmel_mci.0: Atmel MCI controller at 0xf0008000 irq 12, 1 slots
+
atmel_mci atmel_mci.1: Using dma1chan0 for DMA transfers
+
atmel_mci atmel_mci.1: Atmel MCI controller at 0xf000c000 irq 26, 1 slots
+
UBIFS: recovery needed
+
UBIFS: recovery completed
+
UBIFS: mounted UBI device 0, volume 0, name "rootfs"
+
UBIFS: file system size:  58662912 bytes (57288 KiB, 55 MiB, 462 LEBs)
+
UBIFS: journal size:      7872512 bytes (7688 KiB, 7 MiB, 62 LEBs)
+
UBIFS: media format:      w4/r0 (latest is w4/r0)
+
UBIFS: default compressor: lzo
+
UBIFS: reserved for root:  0 bytes (0 KiB)
+
VFS: Mounted root (ubifs filesystem) on device 0:12.
+
Freeing init memory: 136K
+
********************************
+
Exec rcS
+
********************************
+
********mount all********
+
mount: according to /proc/mounts, porc is already mounted on /proc
+
mount: mounting usbfs on /proc/bus/usb failed: No such file or directory
+
********Starting mdev********
+
This may take some time ...
+
--------Start Local Services--------
+
********Starting telnetd********
+
*********alsa restore***********
+
alsactl: load_state:1625: No soundcards found...
+
*********touchscreen************
+
********************************
+
    513 xi'an R&D Center     
+
                               
+
  Linux For Energy Monitor   
+
                               
+
********************************
+
********************************************
+
              program restart!
+
********************************************
+
 
+
mcuzone login: Creat QMSG_FILE OK.
+
g_uiQmsgFd = 0.
+
XMLBuf_Init OK.
+
QueuesInit OK!
+
open_IOControl OK!
+
[db.c][read_meter_info][996]read meter info: select f_meter_address, f_meter_type, f_meter_channel, f_id, f_install_pos, f_device_id, f_meter_proto_type from t_meter_info order by f_meter_channel, f_id desc;
+
[db.c][each_meter_info][1027] meter_type length : 2
+
[db.c][each_meter_info][1030] meter_type: 40
+
[db.c][each_meter_info][1052]135000000
+
Create RS485Up_Rec_pthreadID OK!
+
Create UartGprs_Rec_pthreadID OK!
+
Create UartMbus_Rec_pthreadID OK!
+
Create UartDown485_Rec_pthreadID OK!
+
Create pthread_GPRS_Mana OK!
+
Create pthread_GPRS_IPD OK!
+
Create pthread_GprsDataDeal OK!
+
Create pthread_RS485UpDeal OK!
+
Create pthread_ReadAllMeters OK!
+
Create pthread_up_long_data OK!
+
RS485Down com parameter set OK.
+
MBUS com parameter set OK.
+
GPRS com parameter set OK.
+
 
+
...
+
...
+
</source>
+
 
+
<br>
+
  
 
== 有功无功 ==
 
== 有功无功 ==

2019年4月2日 (二) 08:27的最后版本

目录

[编辑] 1 Data Collector Spec

[编辑] 1.1 系统功能要求

采集数据默认抄表时间间隔为 2 分钟


  • 上行到服务器,支持以太网/GPRS(可选WiFi/3G/4G),IP 地址和端口可配置,支持 DHCP
  • 通过 http 请求往边缘服务器推送数据
  • 数据间隔可调,最小粒度1min,即:每 1min 抄一次所有表,随后 http 发往边缘服务器
  • 集中器需支持配置电表的 CT 变比,自动乘上 CT 变比


  • 集中器如果数据上行 push 失败,至少要能存储一天的历史数据,待边缘服务器恢复后,自动将历史数据推送到边缘服务器 (可选)
  • 支持配置 building_id 和 gateway_id(可选)


[编辑] 1.2 数据上传格式


采集数据默认抄表时间间隔为 2 分钟


  • building_id 为建筑编号
  • gateway_id 为采集器编号
  • meter id 为电表地址
  • way id 为电表的路号,支持 1 路的电表 way id 为 1;支持 2 路三相电监控的路号为 1 ~ 2;支持 6 路三相电监控的路号为 1 ~ 6


  • 电表数据可以详细到三相电的每一相,就是下面 xml 格式内的 phase A, B,C
  • 每项的监测数据有电压 (U),电流 (I),功率 (P),功率因数 (PF),视在功率 (S),无功功率 (Q)


  • 三相总的(phase All)数据:功率因数 (PF),有功功率 (P),无功功率 (Q),视在功率 (S),正向有功总电能 (PEP),反向有功总电能 (NEP),正向无功总电能 (PEQ),反向无功总电能 (NEQ)


  • 电表没有的数据,数据域填 0 即可


  • 每一个时间间隔抄表,上行数据的 timestamp 必须统一 (xml: <time>20170908123000</time>,即:2017-09-08 12:30:00)


以下是电表地址 (meter id) 为 0x46(一路)和 0x48 (两路)两块表的数据同时上传例子:

<?xml version="1.0" encoding="utf-8"?>
<root>
  <common>
    <building_id>110101B001</building_id>
    <gateway_id>2</gateway_id>
    <type>report</type>
    <data operation="report">
      <sequence>0</sequence>
      <parser>yes</parser>
      <time>20170810093040</time>
      <total>1</total>
      <current>1</current>
      <meter id="46">
        <function id="1" coding="01" error="0">
          <way id="1">
            <phase id="A">
              <U>226.12</U>
              <I>7.00</I>
              <S>0.00</S>
              <P>0.70</P>
              <Q>0.00</Q>
              <PF>0.77</PF>
            </phase>
            <phase id="B">
              <U>226.12</U>
              <I>7.00</I>
              <S>0.00</S>
              <P>0.70</P>
              <Q>0.00</Q>
              <PF>0.77</PF>
            </phase>
            <phase id="C">
              <U>226.12</U>
              <I>7.00</I>
              <S>0.00</S>
              <P>0.70</P>
              <Q>0.00</Q>
              <PF>0.77</PF>
            </phase>
            <phase id="All">
              <S>0.00</S>
              <P>0.00</P>
              <Q>0.00</Q>
              <PF>0.00</PF>
              <PEP>5.00</PEP>
              <NEP>6.00</NEP>
              <PEQ>5.00</PEQ>
              <NEQ>6.00</NEQ>
            </phase>
          </way>
        </function>
      </meter>
      <meter id="48">
        <function id="1" coding="01" error="0">
          <way id="1">
            <phase id="A">
              <U>226.12</U>
              <I>0.00</I>
              <S>0.00</S>
              <P>0.00</P>
              <Q>0.00</Q>
              <PF>0.10</PF>
            </phase>
            <phase id="B">
              <U>226.12</U>
              <I>0.00</I>
              <S>0.00</S>
              <P>0.00</P>
              <Q>0.00</Q>
              <PF>0.10</PF>
            </phase>
            <phase id="C">
              <U>226.12</U>
              <I>0.00</I>
              <S>0.00</S>
              <P>0.00</P>
              <Q>0.00</Q>
              <PF>0.10</PF>
            </phase>
            <phase id="All">
              <S>0.00</S>
              <P>0.00</P>
              <Q>0.00</Q>
              <PF>0.00</PF>
              <PEP>5.00</PEP>
              <NEP>6.00</NEP>
              <PEQ>5.00</PEQ>
              <NEQ>6.00</NEQ>
            </phase>
          </way>
          <way id="2">
            <phase id="A">
              <U>226.12</U>
              <I>0.00</I>
              <S>0.00</S>
              <P>0.00</P>
              <Q>0.00</Q>
              <PF>0.20</PF>
            </phase>
            <phase id="B">
              <U>226.12</U>
              <I>0.00</I>
              <S>0.00</S>
              <P>0.00</P>
              <Q>0.00</Q>
              <PF>0.20</PF>
            </phase>
            <phase id="C">
              <U>226.12</U>
              <I>0.00</I>
              <S>0.00</S>
              <P>0.00</P>
              <Q>0.00</Q>
              <PF>0.20</PF>
            </phase>
            <phase id="All">
              <S>0.00</S>
              <P>0.00</P>
              <Q>0.00</Q>
              <PF>0.00</PF>
              <PEP>5.00</PEP>
              <NEP>6.00</NEP>
              <PEQ>5.00</PEQ>
              <NEQ>6.00</NEQ>
            </phase>
          </way>
        </function>
      </meter>
    </data>
  </common>
</root>


[编辑] 1.3 HTTP POST 格式

POST /dev/elec HTTP/1.1
Host: 192.168.1.20
User-Agent: curl/7.52.1
Accept: */*
Content-Length: 3402
Content-Type: application/x-www-form-urlencoded
Expect: 100-continue

<?xml version="1.0" encoding="utf-8" ?><root><common><building_id>110101B001</building_id><gateway_id>2</gateway_id><type>report</type><data operation="report"><sequence>0</sequence><parser>yes</parser><time>20180810093040</time><total>1</total><current>1</current><meter id="99"><function id="1" coding="01" error="0"><way id="1"><phase id="A"><U>226.12</U><I>7.00</I><S>0.00</S><P>0.70</P><Q>0.00</Q><PF>0.77</PF></phase><phase id="B"><U>226.12</U><I>7.00</I><S>0.00</S><P>0.70</P><Q>0.00</Q><PF>0.77</PF></phase><phase id="C"><U>226.12</U><I>7.00</I><S>0.00</S><P>0.70</P><Q>0.00</Q><PF>0.77</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way></function></meter><meter id="9A"><function id="1" coding="01" error="0"><way id="1"><phase id="A"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.10</PF></phase><phase id="B"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.10</PF></phase><phase id="C"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.10</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way><way id="2"><phase id="A"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.20</PF></phase><phase id="B"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.20</PF></phase><phase id="C"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.20</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way><way id="3"><phase id="A"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.30</PF></phase><phase id="B"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.30</PF></phase><phase id="C"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.30</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way><way id="4"><phase id="A"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.40</PF></phase><phase id="B"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.40</PF></phase><phase id="C"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.40</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way><way id="5"><phase id="A"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.50</PF></phase><phase id="B"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.50</PF></phase><phase id="C"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.50</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way><way id="6"><phase id="A"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.60</PF></phase><phase id="B"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.60</PF></phase><phase id="C"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.60</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way></function></meter></data></common></root>

or:

$ cat d.xml
<?xml version="1.0" encoding="utf-8" ?><root><common><building_id>110101B001</building_id><gateway_id>2</gateway_id><type>report</type><data operation="report"><sequence>0</sequence><parser>yes</parser><time>20180810093040</time><total>1</total><current>1</current><meter id="99"><function id="1" coding="01" error="0"><way id="1"><phase id="A"><U>226.12</U><I>7.00</I><S>0.00</S><P>0.70</P><Q>0.00</Q><PF>0.77</PF></phase><phase id="B"><U>226.12</U><I>7.00</I><S>0.00</S><P>0.70</P><Q>0.00</Q><PF>0.77</PF></phase><phase id="C"><U>226.12</U><I>7.00</I><S>0.00</S><P>0.70</P><Q>0.00</Q><PF>0.77</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way></function></meter><meter id="9A"><function id="1" coding="01" error="0"><way id="1"><phase id="A"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.10</PF></phase><phase id="B"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.10</PF></phase><phase id="C"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.10</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way><way id="2"><phase id="A"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.20</PF></phase><phase id="B"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.20</PF></phase><phase id="C"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.20</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way><way id="3"><phase id="A"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.30</PF></phase><phase id="B"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.30</PF></phase><phase id="C"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.30</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way><way id="4"><phase id="A"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.40</PF></phase><phase id="B"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.40</PF></phase><phase id="C"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.40</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way><way id="5"><phase id="A"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.50</PF></phase><phase id="B"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.50</PF></phase><phase id="C"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.50</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way><way id="6"><phase id="A"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.60</PF></phase><phase id="B"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.60</PF></phase><phase id="C"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.60</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way></function></meter></data></common></root>

$ curl -X POST -d @d.xml http://192.168.1.2:8000/dev/elec


[编辑] 1.4 硬件要求

单次采集,数据量很大,硬件最好满足如下基本要求:

  • 至少 32MB(建议 1GB)内存
  • 至少 32MB(建议 4GB)存储
  • 能跑嵌入式 Linux 系统
  • 支持百兆/千兆 Ethernet
  • 支持 3G/4G(可选)
  • 支持 WiFi(可选)
  • 支持 LoRa(可选)
  • 下行最少一路 RS485 最少支持 40 块表,支持多路 RS485


[编辑] 2 现场调试操作

现场服务器 IP 地址: 192.168.1.2

现场服务端口:8000


[编辑] 2.1 查看数据

[编辑] 2.1.1 Station 1

浏览器直接访问: http://192.168.1.2:8000/dev/data?meter_id=2B&way_id=5

XML 格式的第一条时间戳就是最新数据,如果最新数据是一周前的数据,默认监控页面就会没有数据显示。。。


[编辑] 2.1.2 Station 2

浏览器直接访问: http://192.168.1.2:8000/dev/data?meter_id=1B&way_id=3

XML 格式的第一条时间戳就是最新数据,如果最新数据是一周前的数据,默认监控页面就会没有数据显示。。。



[编辑] 2.2 上传数据测试接口

测试边缘 IoT 云接受数据是否正常:

$ cat d.xml
<?xml version="1.0" encoding="utf-8" ?><root><common><building_id>110101B001</building_id><gateway_id>2</gateway_id><type>report</type><data operation="report"><sequence>0</sequence><parser>yes</parser><time>20180810093040</time><total>1</total><current>1</current><meter id="99"><function id="1" coding="01" error="0"><way id="1"><phase id="A"><U>226.12</U><I>7.00</I><S>0.00</S><P>0.70</P><Q>0.00</Q><PF>0.77</PF></phase><phase id="B"><U>226.12</U><I>7.00</I><S>0.00</S><P>0.70</P><Q>0.00</Q><PF>0.77</PF></phase><phase id="C"><U>226.12</U><I>7.00</I><S>0.00</S><P>0.70</P><Q>0.00</Q><PF>0.77</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way></function></meter><meter id="9A"><function id="1" coding="01" error="0"><way id="1"><phase id="A"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.10</PF></phase><phase id="B"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.10</PF></phase><phase id="C"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.10</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way><way id="2"><phase id="A"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.20</PF></phase><phase id="B"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.20</PF></phase><phase id="C"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.20</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way><way id="3"><phase id="A"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.30</PF></phase><phase id="B"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.30</PF></phase><phase id="C"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.30</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way><way id="4"><phase id="A"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.40</PF></phase><phase id="B"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.40</PF></phase><phase id="C"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.40</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way><way id="5"><phase id="A"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.50</PF></phase><phase id="B"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.50</PF></phase><phase id="C"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.50</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way><way id="6"><phase id="A"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.60</PF></phase><phase id="B"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.60</PF></phase><phase id="C"><U>226.12</U><I>0.00</I><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.60</PF></phase><phase id="All"><S>0.00</S><P>0.00</P><Q>0.00</Q><PF>0.00</PF><PEP>5.00</PEP><NEP>6.00</NEP><PEQ>5.00</PEQ><NEQ>6.00</NEQ></phase></way></function></meter></data></common></root>
 
$ curl -X POST -d @d.xml http://192.168.1.2:8000/dev/elec
<?xml version="1.0"?>
<root><code>0</code><message>OK</message></root>


OK 后,浏览器里访问如下地址查看刚刚 POST 的数据:




[编辑] 2.3 Notes





[编辑] 2.4 Log



[编辑] 3 有功无功

根据《多功能电能表通信协议》DL/T645-2007的规定,我们将一个平面坐标系的横轴定义为无功功率,纵轴定义为有功功率,二个轴将一个平面划分为四个区域,左上角的为Ⅰ象限,顺时针依次为Ⅱ象限、Ⅲ象限和Ⅳ象限;Ⅰ象限和Ⅱ象限无功定义为正向无功, Ⅲ象限和Ⅳ象限无功定义为反向无功;

我们按下面的要求定义实际功率的方向:

  • 正向有功功率:即输入有功功率,是电网向用户送电,是用户用电功率;
  • 反向有功功率:即输出有功功率,是用户向电网送电,是用户发电功率;
  • 正向无功功率:即输入无功功率,是电网向用户送无功,是用户用无功功率;
  • 反向无功功率:即输出无功功率,是用户向电网送无功,是用户发无功功率;


  • Ⅰ象限无功:输入有功功率,输入无功功率,用户为阻感性负载;
  • Ⅱ象限无功:输出有功功率,输入无功功率,用户负荷相当于一台欠励磁发电机;
  • Ⅲ象限无功:输出有功功率,输出无功功率,用户负荷相当于一台过励磁发电机;
  • Ⅳ象限无功:输入有功功率,输出无功功率,用户为阻容性负载


正向无功是指系统呈感性 反向无功是指系统呈容性 ,正反向都计量无功


[编辑] 4 Reference

















个人工具
名字空间

变换
操作
导航
工具箱