Skip to content

arifnd/buckpow-node

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BuckPow Node

Measure. Benchmark. Understand.

Official firmware for the BuckPow platform. Transforms ESP8266 and ESP32 devices into plug-and-play power measurement nodes.

License

What is BuckPow Node

BuckPow Node is the edge firmware that collects voltage, current, and power measurements using hardware sensors and sends them to the BuckPow API for storage, visualization, and benchmarking.

BuckPow Node is an appliance, not an Arduino sketch. Users should install, configure, and use it like a finished product, while developers can extend it through a modular architecture.

One firmware. Multiple sensors. Zero configuration.

Key Features

  • INA219 voltage/current/power measurement
  • Automatic device registration via BuckPow API
  • OLED display with live readings
  • Captive portal WiFi configuration
  • Web dashboard for setup and status
  • Over-the-air firmware updates
  • REST API integration

Supported Hardware

Board Platform Status
Wemos D1 Mini ESP8266 Primary
ESP32 DevKit ESP32 Secondary

Supported Sensors

Sensor Metrics Status
INA219 V, mA, mW v1.0

Wiring

INA219 + OLED (shared I2C bus)

Component Pin Wemos D1 Mini ESP32
SCL Clock D1 (GPIO 5) GPIO 22
SDA Data D2 (GPIO 4) GPIO 21
VCC Power 3.3V 3.3V
GND Ground GND GND

I2C addresses: INA219 = 0x40, OLED = 0x3C

Required Libraries

  • Adafruit INA219
  • Adafruit SSD1306
  • Adafruit GFX Library
  • ArduinoJson

Build & Flash

# Build firmware
pio run -e d1_mini

# Upload firmware
pio run -e d1_mini -t upload

# Upload web interface (after editing data/ files)
pio run -e d1_mini -t uploadfs

# Monitor serial output
pio device monitor

Configuration

Open the web interface at the device IP to configure:

Setting Default Description
Device Name buckpow-node Unique identifier
Server URL http://192.168.1.10:8000 BuckPow API endpoint
API Key (empty) Bearer token for authentication
Sample Interval 1000ms Measurement frequency

API Endpoint

BuckPow Node sends measurements to the BuckPow API:

POST /api/v1/measurements
Content-Type: application/json
Authorization: Bearer <api_key>

{
  "device_id": "buckpow-node",
  "bus_voltage": 4.82,
  "current": 182.5,
  "power": 910.2
}

Get your API key from the BuckPow dashboard device detail page.

Project Structure

buckpow-node/
├── src/              # Firmware source
├── include/          # Headers
├── data/             # LittleFS web assets
├── test/             # Unit tests
├── tasks/            # Development task specs
├── .github/          # CI/CD workflows
└── platformio.ini

Testing

pio test -e d1_mini

Contributing

Contributions are welcome. Bug reports, feature requests, documentation improvements, and pull requests are greatly appreciated.

Please open an issue before submitting large changes to discuss the proposed implementation.

License

MIT License

About

No description, website, or topics provided.

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors