aranet4

package module
v0.9.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 9, 2023 License: BSD-3-Clause Imports: 26 Imported by: 4

README

aranet4

Build status GoDoc](https://pkg.go.dev/sbinet.org/x/aranet4)

aranet4 is a Bluez-based driver for the Aranet4 air quality monitor.

Installation

aranet4-ls
$> go install sbinet.org/x/aranet4/cmd/aranet4-ls
$> aranet4-ls
CO2:         547 ppm
temperature: 19.85°C
pressure:    980.5 hPa
humidity:    29%
quality:     green
battery:     96%
interval:    5m0s
time-stamp:  2022-01-20 15:48:28 UTC

$> aranet4-ls -ts -o out.csv
CO2:         547 ppm
temperature: 19.85°C
pressure:    980.5 hPa
humidity:    29%
quality:     green
battery:     96%
interval:    5m0s
time-stamp:  2022-01-20 15:48:28 UTC

$> head out.csv
id;timestamp (UTC);temperature (°C);humidity (%);pressure (hPa);CO2 (ppm)
0;2022-01-18 13:53:28;20.30;38;982.3;667
1;2022-01-18 13:58:28;21.30;36;982.3;836
2;2022-01-18 14:03:28;21.20;36;982.2;763
3;2022-01-18 14:08:28;21.10;35;982.2;825
4;2022-01-18 14:13:28;21.05;35;982.2;807
5;2022-01-18 14:18:28;21.00;34;982.3;765
6;2022-01-18 14:23:28;20.95;34;982.2;928
7;2022-01-18 14:28:28;20.90;34;982.2;911
8;2022-01-18 14:33:28;20.85;34;982.2;861
aranet4-srv

aranet4-srv is a simple HTTP server that plots the full history of data samples one can retrieve from an aranet4 sensor.

img

This Go-based driver is heavily inspired from Anrijs/Aranet4-Python. Thanks a bunch.

Development & mailing list

Development of aranet4 happens on SourceHut.

Discussions can take place over there:

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrNoData indicates a missing data point.
	// This may happen during sensor calibration.
	ErrNoData = errors.New("aranet4: no data")
)

Functions

This section is empty.

Types

type Data

type Data struct {
	H, P, T float64
	CO2     int
	Battery int
	Quality Quality

	Interval time.Duration
	Time     time.Time
}

Data holds measured data samples provided by Aranet4.

func (Data) String

func (data Data) String() string

type Device

type Device struct {
	// contains filtered or unexported fields
}

func New

func New(ctx context.Context, addr string) (*Device, error)

func (*Device) Close

func (dev *Device) Close() error

func (*Device) Interval

func (dev *Device) Interval() (time.Duration, error)

func (*Device) Name

func (dev *Device) Name() string

func (*Device) NumData

func (dev *Device) NumData() (int, error)

func (*Device) Read

func (dev *Device) Read() (Data, error)

func (*Device) ReadAll

func (dev *Device) ReadAll() ([]Data, error)

func (*Device) Since

func (dev *Device) Since() (time.Duration, error)

func (*Device) Version

func (dev *Device) Version() (string, error)

type Message added in v0.9.0

type Message struct {
	Root     string   `json:"root"`
	Devices  []string `json:"devices"`
	DeviceID string   `json:"device_id"`
	Status   string   `json:"status"`
	Refresh  int      `json:"refresh"`
	From     string   `json:"from"`
	To       string   `json:"to"`
	Plots    struct {
		H   string `json:"h"`
		P   string `json:"p"`
		T   string `json:"t"`
		CO2 string `json:"co2"`
	} `json:"plots"`
}

Message holds informations about a device.

type Quality

type Quality int

Quality gives a general assessment of air quality (green/yellow/red).

  • green: [ 0 - 1000) ppm
  • yellow: [1000 - 1400) ppm
  • red: [1400 - ...) ppm

func (Quality) String

func (st Quality) String() string

type Server added in v0.6.0

type Server struct {
	// contains filtered or unexported fields
}

func NewServer added in v0.6.0

func NewServer(root, dbfile string) (*Server, error)

func (*Server) Close added in v0.6.0

func (srv *Server) Close() error

func (*Server) ServeHTTP added in v0.6.0

func (srv *Server) ServeHTTP(w http.ResponseWriter, r *http.Request)

Directories

Path Synopsis
cmd
aranet4-daq
Command aranet4-daq retrieves data from an Aranet4 device and uploads it to an HTTP server.
Command aranet4-daq retrieves data from an Aranet4 device and uploads it to an HTTP server.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL