2017 © Pedro Peláez
 

library owl-packet-interceptor

Intercepts packet from OWL Intuition and parses them

image

dalen/owl-packet-interceptor

Intercepts packet from OWL Intuition and parses them

  • Tuesday, July 19, 2016
  • by danieleorler
  • Repository
  • 1 Watchers
  • 1 Stars
  • 6 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 1 Open issues
  • 2 Versions
  • 0 % Grown

The README.md

owl-packet-interceptor

Official repo stats, (*1)

Build Status Coverage Status Scrutinizer Code Quality, (*2)

Description

owl-packet-interceptor is a PHP library which intercepts and parses XML packets sent via UDP by an OWL Monitor., (*3)

To do so you first need to change the Data Push Settings on your OWL Intuition Dashboard providing IP address and port where you will install owl-packet-interceptor., (*4)

At the moment owl-packet-interceptor is able to handle packets coming from these devices: * OWL Intuition-e * OWL Intuition-pv, (*5)

Structure

owl-packet-interceptor is divided in four main packages: * Packet: Classes into which the packet is unmarshalled. The Packet package contains a sub-package for each kind of packet sent from OWL devices, for now only the Electricity and Solar packets type are supported. Each packet is represented by a main class (Electricity.php for electricity, Solar.php for solar) which implements the IPacket interface. * Listener: Contains the UDP Listener which intercepts packets sent from the device. * Parser: Contains the classes which are used to extract data from the XML packet. Each parser implements the interface IParser. * Storage: Contains the classes which handle the Packet representation. Each storage class implements the IStorage interface., (*6)

So: * the Listener intercepts a new packet, * the Parser extract data from the packet and build a new Packet object, * the Packet object in handled by the Storage, (*7)

Getting started

Create a new folder and move into it, (*8)

Install owl-packet-interceptor, (*9)

$ composer require dalen/owl-packet-interceptor:dev-master

Create a new php file, say App.php, and write something like:, (*10)

<?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());
}

Run App.php, (*11)

$ php App.php

Open a new shell and try to send a packet, (*12)

$ 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 should print, (*13)

This is an Electricity Packet

Now you're ready to write your own Storage!, (*14)

License

MIT, (*15)

The Versions

19/07 2016

dev-master

9999999-dev

Intercepts packet from OWL Intuition and parses them

  Sources   Download

MIT

The Requires

  • php >=5.5

 

The Development Requires

xml owl udp

16/02 2015

dev-dev

dev-dev

Intercepts packet from OWL Intuition and parses them

  Sources   Download

MIT

The Requires

  • php >=5.5

 

The Development Requires

xml owl udp