Skip to main content

Eaton UPS Companion to MQTT Publisher

Project description

euc2mqtt

License PyPI - Version

A tool for publishing status data from a local Eaton UPS Companion service to Homeassistant.

Quick Start

The following quick start guide should get you up and running from a blank Homeassistant installation. Feel free to skip a step if your system is already configured.

Install mosquitto

  1. In Homeassistant, navigate to Settings, Add-ons
  2. Click the Add-on store button
  3. Search for Mosquitto broker and select the result
  4. Click on Install

[!NOTE] When using the Mosquitto broker Add-on, your MQTT broker hostname will be the same as your Homeassistant's, e.g. "homeassistant.local".

Create a new Homeassistant user for data ingest

As mosquitto requires authentication, I heavily suggest creating a new user for data ingest.

  1. In Homeassistant, navigate to Settings, People
  2. Click on Add person, input a user name
  3. Check Allow person to log in
  4. Enter all required fields
  5. Check Can only log in from local network

Get the application

Windows binaries are provided on the GitHub Releases page.

If you prefer to use your own Python insallation, a pre-built package is hosted on PyPI and can be installed and updated using the pip utility:

pip install -U euc2mqtt

Run it!

[!NOTE] This tool needs to run on the same host as Eaton UPS Companion, as EUC in its default configuration only accepts connections on localhost:4679.

Open a terminal and run the tool, providing the broker hostname (your Homeassistant hostname), username and the password!

Option 1: Standalone application

.\euc2mqtt --mqtt <broker hostname> --username <user> --password <password>

Option 2: Run as Python module

python -m euc2mqtt --mqtt <broker hostname> --username <user> --password <password>

More info

A more in-depth description of available command line parameters can be viewed by appending -h at the end of your input. For example:

> .\euc2mqtt -h

usage: euc2mqtt [-h] [--name NAME] [--mqtt MQTT] [--euc EUC] [--username USERNAME] [--password PASSWORD] [--interval INTERVAL] [--full-update FULL_UPDATE] [--logfile LOGFILE] [--verbose]

MQTT Publisher for Eaton UPS Companion status messages to Home Assistant. See https://github.com/islandcontroller/euc2mqtt for more info!

options:
  -h, --help            show this help message and exit
  --name NAME           Device name
  --mqtt MQTT           MQTT broker hostname and port (hostname[:port])
  --euc EUC             Eaton UPS Companion hostname and port (hostname[:port])
  --username USERNAME   Username for MQTT broker authentication
  --password PASSWORD   Password for MQTT broker authentication
  --interval INTERVAL   Update interval in seconds
  --full-update FULL_UPDATE
                        Number of incremental dataset fetches between full updates
  --logfile LOGFILE     Output log messages to a file
  --verbose             Enable verbose logging

Running as a Windows Task

  1. Open Task Scheduler and select Create New Task...
  2. Select the following options on the General tab:
    • Check Run whether user is logged in or not
    • Uncheck Do not store password
  3. On the Triggers tab, create a "At startup" trigger
  4. On the Actions tab, add the standalone application as a program to run:
    • Action: Start a program
    • Program/Script: (Navigate to your euc2mqtt.exe here)
    • Add arguments: --mqtt <broker hostname> --username <user> --password <password>
  5. On the Settings tab, select the following options:
    • Check Allow task to be run on demand
    • Select If task fails, restart every: 1 minute
    • Uncheck Stop the task if it runs longer than: ...
    • Select If the task is already running: Do not start a new instance
  6. Click OK. You will be prompted for a username and password to run the task as.

Configuring bind address for Eaton UPS Companion

[!WARNING] Exposing the EUC service may pose a security risk.

[!NOTE] When euc2mqtt is run on the same host as EUC, it is not required to expose the EUC service.

  1. Start a notepad instance with Admin privileges

  2. Open C:\Program Files (x86)\Eaton\UPSCompanion\configs\config.js

  3. Edit the "httpServers" line to listen on all interfaces:

     "httpServers": {"http": {"port": 4679, "hostname": "0.0.0.0"}}, 
    

Legal Information

The contents of this repository are licensed under the MIT License. The full license text is provided in the LICENSE file.

SPDX-License-Identifier: MIT

"Eaton" is a trademark of Eaton Corporation. "Windows" is a trademark of Microsoft Corporation. All trademarks are property of their respective owners.

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

euc2mqtt-1.0.0.tar.gz (92.5 kB view details)

Uploaded Source

Built Distribution

euc2mqtt-1.0.0-py3-none-any.whl (12.2 kB view details)

Uploaded Python 3

File details

Details for the file euc2mqtt-1.0.0.tar.gz.

File metadata

  • Download URL: euc2mqtt-1.0.0.tar.gz
  • Upload date:
  • Size: 92.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for euc2mqtt-1.0.0.tar.gz
Algorithm Hash digest
SHA256 e4300da9a2499b362ae7f75eb8922dcf044e0d37817610f2bd1aea9c0ed53e01
MD5 327105b3007aebc018dec6cbdc446e50
BLAKE2b-256 3388d10b1e2e2f4d56de248adacd4fa40716953d848bcac8abc8b90c62724612

See more details on using hashes here.

File details

Details for the file euc2mqtt-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: euc2mqtt-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 12.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for euc2mqtt-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 80c8c4e755f429112dfc669c6d1871775e396f80ca5f685b321c5f942a006a0e
MD5 733789b2da536ea6f9324cc91c88a6ae
BLAKE2b-256 b33970e1e8fbe23c3abf88ca7ef71dd7f77eb515f11700471a9d6dc22a8447db

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