dalen / owl-packet-interceptor
拦截来自 OWL Intuition 的数据包并解析它们
dev-master
2016-07-19 11:43 UTC
Requires
- php: >=5.5
Requires (Dev)
- satooshi/php-coveralls: dev-master
This package is not auto-updated.
Last update: 2024-09-22 07:27:55 UTC
README
官方仓库统计
###描述 owl-packet-interceptor 是一个 PHP 库,它拦截并解析由 OWL Monitor 通过 UDP 发送的 XML 数据包。
为此,您首先需要在 OWL Intuition 控制面板上更改数据推送设置,提供您将安装 owl-packet-interceptor 的 IP 地址和端口。
目前 owl-packet-interceptor 能够处理来自以下设备的包
###结构 owl-packet-interceptor 被划分为四个主要包
- Packet: 包含将数据包反序列化的类。Packet 包包含来自 OWL 设备发送的每种类型的数据包的子包,目前只支持电力和太阳能包类型。每个数据包都由一个主要类(Electricity.php 用于电力,Solar.php 用于太阳能)表示,该类实现了 IPacket 接口。
- Listener: 包含拦截从设备发送的包的 UDP 监听器。
- Parser: 包含用于从 XML 数据包中提取数据的类。每个解析器实现了 IParser 接口。
- Storage: 包含处理数据包表示的类。每个存储类实现了 IStorage 接口。
所以
- Listener 拦截新的数据包,
- Parser 从数据包中提取数据并构建一个新的 Packet 对象,
- 数据包对象由 Storage 处理
###入门指南
创建一个新的文件夹并进入它
安装 owl-packet-interceptor
$ composer require dalen/owl-packet-interceptor:dev-master
创建一个新的 PHP 文件,例如 App.php,并写入类似以下内容
<?php require_once('./vendor/autoload.php'); use Dalen\OWLPacketInterceptor\Listener\UDPListener; use Dalen\OWLPacketInterceptor\Storage\StdOutStorage; use Dalen\OWLPacketInterceptor\Parser\Parser; // create listener on port 8000 $listener = new UDPListener('0.0.0.0',8000); // create a new parser $parser = new Parser(); // create standard output storage (outputs on the console) $storage = new StdOutStorage(); // listen for new packets while(true) { // pass the XML string to the parser $parser->setXMLString($listener->read()); // make the storage handle the Packet object extracted by the parser $storage->storePacket($parser->parse()); }
运行 App.php
$ php App.php
打开一个新的 shell 并尝试发送一个数据包
$ echo -n "<electricity id='AA12345679'><signal rssi='-86' lqi='91'/><battery level='100%'/><chan id='0'><curr units='w'>1288.00</curr><day units='wh'>9904.89</day></chan></electricity>" | nc -4u -q1 127.0.0.1 8000 > /dev/null 2>/dev/null &
App.php 应该打印
This is an Electricity Packet
现在您可以为 Storage 编写自己的代码!
###许可证
MIT