5d

来自Jack's Lab
(版本间的差异)
跳转到: 导航, 搜索
(Old XML Format)
(数据上传格式)
 
(未显示1个用户的46个中间版本)
第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
+
  
 +
<br>
  
* 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
+
现场服务器 IP 地址: 192.168.1.2
* pull data: http://192.168.1.2:8000/tempdata?devid=MKD118581004672
+
  
 +
现场服务端口:8000
  
 +
<br>
  
=== 验证 ===
+
=== 查看数据 ===
  
到此,在调试人员 PC 122.5.18.172 上,开一个 TCP Server 端口在 9011,就能收到,集中器定时上传的 XML 数据:
+
====  Station 1 ====
  
<source lang=bash>
+
浏览器直接访问: http://192.168.1.2:8000/dev/data?meter_id=2B&way_id=5
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>
+
  
 +
XML 格式的第一条时间戳就是最新数据,如果最新数据是一周前的数据,默认监控页面就会没有数据显示。。。
  
集中器默认抄表时间间隔为 2 分钟
+
<br>
  
 +
====  Station 2 ====
  
<br><br>
+
浏览器直接访问: http://192.168.1.2:8000/dev/data?meter_id=1B&way_id=3
  
== Debug Log ==
+
XML 格式的第一条时间戳就是最新数据,如果最新数据是一周前的数据,默认监控页面就会没有数据显示。。。
 
+
* [[8th log for 5d]]
+
 
+
* [[Meter Table of XinDongAn]]
+
  
 
<br><br>
 
<br><br>
  
== NOTES ==
+
=== 上传数据测试接口 ===
  
=== Meter Type ===
+
测试边缘 IoT 云接受数据是否正常:
  
* HEATMETER    0x20
+
<source lang=bash>
* WATERMETER    0x10
+
$ cat d.xml
* ELECTMETER    0x40
+
<?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>
* GASMETER      0x30
+
* SENSORDEV    0x50    // RTU module of sensors
+
$ curl -X POST -d @d.xml http://192.168.1.2:8000/dev/elec
 
+
<?xml version="1.0"?>
<br>
+
<root><code>0</code><message>OK</message></root>
 
+
=== ElectMeter Protocol ===
+
 
+
<source lang=cpp>
+
/*
+
*  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>
 
</source>
  
<br>
 
  
=== Meter Channel ===
+
OK 后,浏览器里访问如下地址查看刚刚 POST 的数据:
  
Only support:
+
*http://192.168.1.2:8000/dev/data?meter_id=99&way_id=1
 +
*http://192.168.1.2:8000/dev/data?meter_id=9A&way_id=1
  
* RS485_DOWN_CHANNEL  7
 
 
<br>
 
 
=== Meter Config in Database ===
 
 
<source lang=bash>
 
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
 
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 ==
+
=== Notes ===
  
=== Serial Console ===
 
  
* CP2102_PIN26 --- ARM9_CORE_J2_32_DRXD
+
* http://192.168.1.2:3000/
* CP2102_PIN25 --- ARM9_CORE_J2_30_DTXD
+
* http://192.168.1.2:18083/
  
<br>
 
  
=== RS485_1 ===
+
* 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
  
* RS485_1_A+ --- MAX485_PIN6
 
* RS485_1_B- --- MAX485_PIN7
 
  
* MAX485_PIN4 --- ARM9_CORE_J2_68_TXD0
+
* pull elect data: http://192.168.1.2:8000/dev/data?meter_id=1B&way_id=3
* MAX485_PIN1 --- ARM9_CORE_J2_69_RXD0
+
* MAX485_PIN2 & 3 --- ARM9_CORE_J1_69_PC30
+
  
<br>
+
* 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
  
=== RS485_2 ===
+
<br><br>
  
* RS485_2_A+ --- MAX485_PIN6
+
=== Log ===
* RS485_2_B- --- MAX485_PIN7
+
  
* MAX485_PIN4 --- ARM9_CORE_J2_55_CANTX1
+
* [[Meter Table of XinDongAn]]
* MAX485_PIN1 --- ARM9_CORE_J2__57_CANRX1
+
* MAX485_PIN2 & 3 --- ARM9_CORE_J1_68_PC31
+
 
+
<br>
+
 
+
== Drivers ==
+
 
+
atmel_usart:
+
 
+
<source lang=bash>
+
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>
+
#define DEVICE4851      "/dev/ttyS1"
+
#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 ==
 
 
<source lang=bash>
 
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!
 
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

















个人工具
名字空间

变换
操作
导航
工具箱