1.0.3 • Public • Published


A node package helper to control your UPS PIco HV3.0A/B/B+ HAT

This library was not developped by the PiModules(R) UPSPIco company. Any query/issue concerning their product won't find answers here, sorry :/ Feel free to refer to their official github repo: https://github.com/modmypi/PiModules

Be aware that this package uses exclusively await/async, no callbacks ;)

Getting Started

The PiModule documentation can be a bit tricky to read. So here is a small helper of the most common features you may want to use. Once you've followed the installation process, you'll be able to use:

  • Set pimodule addresses
  • Get pimodule temperature
  • Set shutdown timer
  • Get pimodule battery level
  • Get/set pimodule powering mode (battery or power)
  • Set backed auxilary power
  • Get pimodule running state
  • Set buzzer state
  • Generate sounds
  • Get/set pimodule bistable relay state
  • Set leds (orange, green, blue)
  • Set events on keys (these named A, B and C)
  • Get/set pimodule fan mode (automatic, manual, disable)
  • Get pimodule fan state
  • Get/set pimodule fan speed
  • Set temperature treshold


You'll need a UPS PIco HV3.0A/B/B+ HAT, you can order it here: https://pimodules.com/plus-advanced

You'll also need to get the installation process right. Two ways:

  • Ansible Make it easy to reproduce via Ansible, in case your rasperry pi fails. To use the playbook provided, just clone this repository on your dev machine:
git clone https://github.com/RomeHein/pimodule.git

You'll need at least ansible installed. Make sure to change the local address of your raspberry pi aswell as the correct user in the following command:

cd /ansible
ANSIBLE_HOST_KEY_CHECKING=false ansible-playbook pimodule.yml -i raspberrypi.local, --user=pi --ask-pass
  • Script: installer.sh

Just copy past the script installer.sh on your raspberry pi. Make sure you have the right permissions to run the script:

    chmod +x installer.sh

And run it with sudo:

sudo ./installer.sh

Alternatively, you can run it via npm once the repo cloned on your raspberry pi:

sudo npm run installer


Just install via npm:

npm i pimodule --save


Import the module and start using it:

    const PiModuleHelper = require('pimodule')
    const piModule = new PiModuleHelper()

    const state = await piModule.piModuleIsRunningProperly()
    console.log(`PiModule is running: ${state}`)

When you instantiate pimodule, make sure you are using the right set of addresses: Three are available: 'default', 'alternate' and 'noRtc' If you are using 'alternate', instantiate the module like so:

    const PiModuleHelper = require('pimodule')
    const piModule = new PiModuleHelper('alternate')

    // Plays imperial starwars march from pimodule built in buzzer
    await piModule.playSounds([[220, 700], [220, 700], [220, 700],[174, 525], [261, 175], [220, 700], [174, 525], [261, 175], [220, 1400]])

Running the tests

Tests seem a bit useless here as functions are very simple wrappers of the i2c-bus node library (which is heavily tested). But I would make sure the library match the current implementation of the PiModule firmware before using pimodule. You can check that by running directly on the raspberry pi

npm run check

This will run tests without mocking the i2c-bus library. That way we are sure addresses are correct


All pull requests/suggestions are welcome


  • Romain Cayzac


This project is licensed under the MIT License - see the LICENSE.md file for details

Package Sidebar


npm i pimodule

Weekly Downloads






Unpacked Size

19.8 kB

Total Files


Last publish


  • romehein