Skip to main content

switch-bot meters server

Project description

swb-meter

PyPI Changelog Tests License

A cli tool to gather switchbot meters' data and writes to sqlite.

with streamlit app to visualize the data:

スクリーンショット 2024-07-13 22 35 45

Installation

Install this tool using pip:

pip install swb-meter

Usage

For help, run swb-meter --help:

Usage: swb-meter [OPTIONS] COMMAND [ARGS]...

  SwitchBot Meters Server CLI tool.

  `swb-meter` allows you to listen for SwitchBot meters and insert the data into
  a SQLite database.

  By default the backend database is configured current directory with the name
  `swb_meter.db` (created if not exists).

  To change the database path by setting the environment variable
  `SWB_METER_DB_PATH`:

      $ export SWB_METER_DB_PATH=/path/to/db.sqlite

      or:

      $ SWB_METER_DB_PATH=/path/to/db.sqlite swb-meter listen

  To get started, add a meter with an alias (typically the room name where the
  meter is located) with its MAC address:

      $ swb-meter add "Living Room" 12:34:56:78:90:AB

  This will add a record to the `Meter` table.

      $ swb-meter ls
      Living Room 12:34:56:78:90:AB
      Total: 1 meters

  Then, start listening for the meters:

      $ swb-meter listen

  The data will be inserted into the `Temperature` table in the database.

  To visualize the data, you can run the Streamlit app in another terminal. You
  need optional dependencies [streamlit] installed:

      $ pip install swb-meter[streamlit]

  then run the Streamlit app:

      $ swb-meter streamlit

  By default, the log level is set to `INFO`.

  To change log level, set environment variable `SWB_METER_LOG_LEVEL=DEBUG` for
  verbose output.

      $ export SWB_METER_LOG_LEVEL=DEBUG

      or:

      $ SWB_METER_LOG_LEVEL=DEBUG swb-meter listen

Options:
  --version  Show the version and exit.
  --help     Show this message and exit.

Commands:
  add        Add a SwitchBot meter to the master table with an alias.
  listen     Listen for SwitchBot meters and insert data into the...
  ls         List all SwitchBot meters in the master table.
  rm         Remove a SwitchBot meter from the master table.
  streamlit  Run the Streamlit app for visualizing the temperature data.

You can also use:

python -m swb_meter --help

Commands

swb-meter add

Usage: swb-meter add [OPTIONS] ALIAS MAC_ADDRESS

  Add a SwitchBot meter to the master table with an alias.

  Example: 

      $ swb-meter add "Living Room" 12:34:56:78:90:AB

Options:
  -u, --upsert  Upsert the existing record's alias
  --help        Show this message and exit.

swb-meter ls

Usage: swb-meter ls [OPTIONS]

  List all SwitchBot meters in the master table.

  Example: 

      $ swb-meter ls

Options:
  --help  Show this message and exit.

swb-meter rm

Usage: swb-meter rm [OPTIONS] MAC_ADDRESS

  Remove a SwitchBot meter from the master table.

  Example: 

      $ swb-meter rm 12:34:56:78:90:AB

Options:
  --help  Show this message and exit.

swb-meter listen

Usage: swb-meter listen [OPTIONS]

  Listen for SwitchBot meters and insert data into the temperature table.

  This command listens for SwitchBot meters and inserts the data into the
  temperature table. For each scan, wait for the specified timeout duration
  until all data is found and inserted once for each meter. The interval option
  specifies the time to wait between scans.

  Example: 

      $ swb-meter listen 

      $ swb-meter listen -t 10 -i 60 # Timeout 10 seconds, Interval 60 seconds

Options:
  -t, --timeout FLOAT     Timeout in seconds for each scan
  -i, --interval INTEGER  Interval in seconds between scans
  -s, --scans INTEGER     Number of scans. Default is None (infinite)
  --help                  Show this message and exit.

swb-meter streamlit

Usage: swb-meter streamlit [OPTIONS]

  Run the Streamlit app for visualizing the temperature data.

  Example:  $ swb-meter app

Options:
  --help  Show this message and exit.

Development

To contribute to this tool, first checkout the code. Then create a new virtual environment:

cd swb-meter
python -m venv venv
source venv/bin/activate

Now install the dependencies and test dependencies:

pip install -e '.[test]'

To run the tests:

pytest

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

swb_meter-0.1.0a1.tar.gz (15.0 kB view details)

Uploaded Source

Built Distribution

swb_meter-0.1.0a1-py3-none-any.whl (15.3 kB view details)

Uploaded Python 3

File details

Details for the file swb_meter-0.1.0a1.tar.gz.

File metadata

  • Download URL: swb_meter-0.1.0a1.tar.gz
  • Upload date:
  • Size: 15.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.0 CPython/3.12.4

File hashes

Hashes for swb_meter-0.1.0a1.tar.gz
Algorithm Hash digest
SHA256 e2118ad3689c48fc4a38e716e413d66023fe827f0547d1b97e95d9d4aa76bef9
MD5 0a580428e96d0f899a6fd86d025db525
BLAKE2b-256 d4f015f855f63880a3b5cbfd3cf45796f3a67b08737d82a5170bbde1421e520d

See more details on using hashes here.

File details

Details for the file swb_meter-0.1.0a1-py3-none-any.whl.

File metadata

  • Download URL: swb_meter-0.1.0a1-py3-none-any.whl
  • Upload date:
  • Size: 15.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.0 CPython/3.12.4

File hashes

Hashes for swb_meter-0.1.0a1-py3-none-any.whl
Algorithm Hash digest
SHA256 9eb26c53f5e7822266b627a45de0c63571419072cdc8f5c6823fff017b4b7874
MD5 52937ad62592a84934ece327d389ad4a
BLAKE2b-256 29d68ec8536f507948ca5465b7fd0db351818058298e0ba692df6d66ade3d3d4

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page