AC Current Meter for Raspberry PI with GPIOZERO and MCP3008


Keywords
enerpi, current, gpiozero, raspberry, analog, data-logging, energy-data, energy-monitor, flask-application, python-3
License
MIT
Install
pip install enerpi==0.9.7

Documentation

ENERPI

⚡⚡ AC Current Meter for Raspberry PI ⚡⚡

A simple current meter based on:

  • SCT-030 030 Current sensor,
  • MCP3008 Analog to Digital converter (on RASP.IO Analog Zero Hat)
  • Raspberry PI
  • Plus a little web server (flask based) with real-time streaming, beautiful matplotlib svg's,

and some bokeh plots.

Warning

TODO Hacer descripción del módulo


To get started:

pip install enerpi

enerpi -h

CLI Help:

usage: enerpi [-h] [-e] [-r] [-d] [-f [TS]] [-p [IM]] [--store ST] [--compact]
          [--backup BKP] [--clear] [--clearlog] [-i] [--last] [--temps]
          [-l] [--debug] [-v] [-T ∆T] [-ts ∆T] [-w ∆T]

⚡⚡ ︎ENERPI AC CURRENT SENSOR ⚡⚡

AC Current Meter for Raspberry PI with GPIOZERO and MCP3008

optional arguments:
  -h, --help            show this help message and exit

☆  ENERPI Working Mode:
  →  Choose working mode between RECEIVER / SENDER

  -e, -s, --enerpi      ⚡  SET ENERPI LOGGER & BROADCAST MODE
  -r, --receive         ⚡  SET Broadcast Receiver mode (by default)
  -d, --demo            ☮️  SET Demo Mode (broadcast random values)

ℹ️  QUERY & REPORT DATA:
  -f [TS], --filter [TS]
                    ✂️  Query the HDF Store with pandas-like slicing:
                         "2016-01-07 :: 2016-02-01 04:00" --> df.loc["2016-01-07":"2016-02-01 04:00"]
                         (Pay atention to the double "::"!!)
                         · By default, "-f" filters data from 24h ago (.loc[2016-08-07 17:14:48:]).

  -p [IM], --plot [IM]  ⎙  Plot & save image with matplotlib in any compatible format.
                         · If not specified, PNG file is generated with MASK:
                               "enerpi_potencia_consumo_ldr_{{:%Y%m%d_%H%M}}_{{:%Y%m%d_%H%M}}.png" using datetime data limits.
                         · If only specifying image format, default mask is used with the desired format.
                         · If image path is passed, the initial (and final, optionally) timestamps of filtered data
                         can be used with formatting masks, like:
                             "/path/to/image/image_{:%c}_{:%H%M}.pdf" or "report_{:%d%m%y}.svg".

⚙  HDF Store Options:
  --store ST            ✏️  Set the .h5 file where save the HDF store.
                         Default: "/Users/uge/Dropbox/PYTHON/PYPROJECTS/enerpi/enerpi/../DATA/enerpi_data.h5"
  --compact             ✙✙  Compact the HDF Store database (read, delete, save)
  --backup BKP          ☔️  Backup the HDF Store
  --clear               ☠  Delete the HDF Store database
  --clearlog            ⚠️  Delete the LOG FILE at: "/Users/uge/Dropbox/PYTHON/PYPROJECTS/enerpi/enerpi/../DATA/enerpi.log"
  -i, --info            ︎ℹ️  Show data info
  --last                ︎ℹ️  Show last saved data

☕  DEBUG Options:
  --temps               ♨️  Show RPI temperatures (CPU + GPU)
  -l, --log             ☕  Show LOG FILE
  --debug               ☕  DEBUG Mode (save timing to csv)
  -v, --verbose         ‼️  Verbose mode ON BY DEFAULT!

⚒  Current Meter Sampling Configuration:
  -T ∆T, --delta ∆T     ⌚  Set Ts sampling (to database & broadcast), in seconds. Default ∆T: 1 s
  -ts ∆T                ⏱  Set Ts raw sampling, in ms. Default ∆T_s: 12 ms
  -w ∆T, --window ∆T    ⚖  Set window width in seconds for instant RMS calculation. Default ∆T_w: 2 s

*** By default, ENERPI starts as receiver (-r) ***
CLI Receiver CLI Compact & Backup data

Matplotlib plot sample

⚡ ︎ENERPI AC CURRENT SENSOR ⚡⚡
   AC Current Meter for Raspberry PI with GPIOZERO and MCP3008
   SENDER - RECEIVER vía UDP. Broadcast IP: 192.168.1.255, PORT: 57775
⚡ 17:10:51.380: 378 W; LDR=0.546 ◼◼◼◼◼◼◼◼◼◼◼◼︎⇡