A tool for publishing status data from a local Eaton UPS Companion service to Homeassistant.
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.
- In Homeassistant, navigate to Settings, Add-ons
- Click the Add-on store button
- Search for Mosquitto broker and select the result
- 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
".
As mosquitto requires authentication, I heavily suggest creating a new user for data ingest.
- In Homeassistant, navigate to Settings, People
- Click on Add person, input a user name
- Check Allow person to log in
- Enter all required fields
- Check Can only log in from local network
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
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>
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
- Open Task Scheduler and select Create New Task...
- Select the following options on the General tab:
- Check Run whether user is logged in or not
- Uncheck Do not store password
- On the Triggers tab, create a "At startup" trigger
- 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>
- 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
- Click OK. You will be prompted for a username and password to run the task as.
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.
-
Start a
notepad
instance with Admin privileges -
Open
C:\Program Files (x86)\Eaton\UPSCompanion\configs\config.js
-
Edit the "
httpServers
" line to listen on all interfaces:"httpServers": {"http": {"port": 4679, "hostname": "0.0.0.0"}},
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.