Skip to content

A Client for the RFM69-USB-Gateway and Indoor Air Quality Sensor

License

Notifications You must be signed in to change notification settings

rosetta-home/ieq_gateway

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

IEQ (Indoor Environmental Quality) Gateway

A Client for the RFM69-USB-Gateway and Indoor Air Quality Sensor

Use

1. git clone https://github.com/NationalAssociationOfRealtors/ieq_gateway.git
2. mix do deps.get, deps.compile
3. iex -S mix

Explanation

As a new sensor array starts broadcasting, a process is started to parse and store the state of the sensor array. Each update triggers an event notification over IEQGateway.Events event bus. You can add a handler to the event bus by calling IEQGateway.EventManager.add_handler. To see an example implementation of a handler look at IEQGateway.Handler and also be sure to look at the tests.

An event is the state of a sensor array which looks like this.

%IEQGateway.IEQStation.State{
    battery: 0,
    co: 39.0,
    co2: 450.0,
    door: 0,
    energy: 0,
    humidity: 35.4,
    id: :"IEQStation-2",
    light: 216.0,
    motion: 0,
    no2: 0.0,
    pm: 0,
    pressure: 29.96,
    rssi: -27.0,
    sound: 526.0,
    temperature: 31.6,
    uv: 0,
    voc: 125.0
}

Different nodes on the network will report different values, the state represents all possible values.

Architecture

Architecture Image

IEQGateway.Client is a small Serial client. It is the main interface for sending and receiving messages. As a new IEQ(Indoor Environmental Quality) station is discovered a process is spawned through IEQGateway.StationSupervisor and the station processes' state represents the station's attributes.

Every 8 seconds the station sends updated attribute information, the station process (IEQGateway.IEQStation) parses the data and updates it's state, the state is then broadcast (using notify) over IEQGateway.Events event bus. Anyone can add a handler to the event bus to handle updated station state by calling IEQGateway.EventManager.add_handler. See IEQGateway.Handler for an example implementation of an event handler.

About

A Client for the RFM69-USB-Gateway and Indoor Air Quality Sensor

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages