Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

wattpilot

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

wattpilot

Python library to connect to a Fronius Wattpilot Wallbox

  • 0.2
  • Source
  • PyPI
  • Socket score

Maintainers
1

Wattpilot

:warning: This project is still in early development and might never leave this state

wattpilot is a Python 3 (>= 3.10) module to interact with Fronius Wattpilot wallboxes which do not support (at the time of writting) a documented API. This functionality of this module utilized a undocumented websockets API, which is also utilized by the official Wattpilot.Solar mobile app.

Wattpilot API Documentation

See API.md for the current state of the API documentation this implementation is based on.

It has been compiled from different sources, but primarily from:

Wattpilot Shell

The shell provides an easy way to explore the available properties and get or set their values.

# Install the wattpilot module, if not yet done so:
pip install .

Run the interactive shell

# Usage:
export WATTPILOT_HOST=<wattpilot_ip>
export WATTPILOT_PASSWORD=<password>
wattpilotshell
Welcome to the Wattpilot Shell 0.2.   Type help or ? to list commands.

wattpilot> help

Documented commands (type help <topic>):
========================================
EOF      exit  ha    info  properties  server  unwatch  watch
connect  get   help  mqtt  rawvalues   set     values 

The shell supports TAB-completion for all commands and their arguments. Detailed documentation can be found in ShellCommands.md.

It's also possible to pass a single command to the shell to integrate it into scripts:

# Usage:
wattpilotshell <wattpilot_ip> <password> "<command> <args...>"

# Examples:
wattpilotshell <wattpilot_ip> <password> "get amp"
wattpilotshell <wattpilot_ip> <password> "set amp 6"

MQTT Bridge Support

It is possible to publish JSON messages received from Wattpilot and/or individual property value changes to an MQTT server. The easiest way to start the shell with MQTT support is using these environment variables:

export MQTT_ENABLED=true
export MQTT_HOST=<mqtt_host>
export WATTPILOT_HOST=<wattpilot_ip>
export WATTPILOT_PASSWORD=<wattpilot_password>
wattpilotshell

Pay attention to environment variables starting with MQTT_ to fine-tune the MQTT support (e.g. which messages or properties should published to MQTT topics).

MQTT support can be easily tested using mosquitto:

# Start mosquitto in a separate console:
mosquitto

# Subscribe to topics in a separate console:
mosquitto_sub -t 'wattpilot/#' -v

Home Assistant MQTT Discovery Support

To enable Home Assistant integration (using MQTT) set MQTT_ENABLED and HA_ENABLED to true and make sure to correctly configure the MQTT Integration. It provides auto-discovery of entities using property configuration from wattpilot.yaml. The is the simplest possible way to start the shell with HA support:

export MQTT_ENABLED=true
export HA_ENABLED=true
export MQTT_HOST=<mqtt_host>
export WATTPILOT_HOST=<wattpilot_ip>
export WATTPILOT_PASSWORD=<wattpilot_password>
wattpilotshell

Pay attention to environment variables starting with HA_ to fine-tune the Home Assistant integration (e.g. which properties should be exposed).

The discovery config published to MQTT can be tested using this in addition to the testing steps from MQTT above:

MQTT support can be easily tested using mosquitto:

# Subscribe to homeassisant topics in a separate console:
mosquitto_sub -t 'homeassistant/#' -v

Docker Support

The Wattpilot MQTT bridge with Home Assistant MQTT discovery can be run as a docker container. Here's how to do that:

# Build image:
docker-compose build

# Create .env file with environment variables:
cat .env
HA_ENABLED=true
MQTT_ENABLED=true
MQTT_HOST=<mqtt_host>
WATTPILOT_HOST=<wattpilot_ip>
WATTPILOT_PASSWORD=<my_secret_password>

# Run container (recommended with MQTT_ENABLED=true and HA_ENABLED=true - e.g. on a Raspberry Pi):
docker-compose up -d

To diagnose the hundreds of Wattpilot parameters the shell can be started this way (typically recommended with MQTT_ENABLED=false and HA_ENABLED=false on a local machine, in case a Docker container with MQTT support may be running permanently on e.g. a Raspberry Pi):

# Create .env file with environment variables:
cat .env
HA_ENABLED=false
MQTT_ENABLED=false
MQTT_HOST=<mqtt_host>
WATTPILOT_HOST=<wattpilot_ip>
WATTPILOT_PASSWORD=<my_secret_password>

# Run the shell:
docker-compose run wattpilot shell

Environment Variables

Environment VariableDescriptionDefault Value
HA_ENABLEDEnable Home Assistant Discoveryfalse
HA_PROPERTIESOnly discover given properties (leave unset for all properties having homeAssistant set in wattpilot.yaml)
HA_TOPIC_CONFIGTopic pattern for HA discovery confighomeassistant/{component}/{uniqueId}/config
HA_WAIT_INIT_SWait initial number of seconds after starting discovery (in addition to wait time depending on the number of properties). May be increased, if entities in HA are not populated with values.5
HA_WAIT_PROPS_MSWait milliseconds per property after discovery before publishing property values. May be increased, if entities in HA are not populated with values.50
MQTT_AVAILABLE_PAYLOADPayload for the availability topic in case the MQTT bridge is onlineonline
MQTT_CLIENT_IDMQTT client IDwattpilot2mqtt
MQTT_ENABLEDEnable MQTTfalse
MQTT_HOSTMQTT host to connect to
MQTT_MESSAGESList of space-separated message types to be published to MQTT (leave unset for all messages)
MQTT_NOT_AVAILABLE_PAYLOADPayload for the availability topic in case the MQTT bridge is offline (last will message)offline
MQTT_PORTPort of the MQTT host to connect to1883
MQTT_PROPERTIESList of space-separated property names to publish changes for (leave unset for all properties)
MQTT_PUBLISH_MESSAGESPublish received Wattpilot messages to MQTTfalse
MQTT_PUBLISH_PROPERTIESPublish received property values to MQTTtrue
MQTT_TOPIC_AVAILABLETopic pattern to publish Wattpilot availability status to{baseTopic}/available
MQTT_TOPIC_BASEBase topic for MQTTwattpilot
MQTT_TOPIC_MESSAGESTopic pattern to publish Wattpilot messages to{baseTopic}/messages/{messageType}
MQTT_TOPIC_PROPERTY_BASEBase topic for properties{baseTopic}/properties/{propName}
MQTT_TOPIC_PROPERTY_SETTopic pattern to listen for property value changes for~/set
MQTT_TOPIC_PROPERTY_STATETopic pattern to publish property values to~/state
WATTPILOT_AUTOCONNECTAutomatically connect to Wattpilot on startuptrue
WATTPILOT_CONNECT_TIMEOUTConnect timeout for Wattpilot connection30
WATTPILOT_DEBUG_LEVELDebug levelINFO
WATTPILOT_HOSTIP address of the Wattpilot device to connect to
WATTPILOT_INIT_TIMEOUTWait timeout for property initialization30
WATTPILOT_PASSWORDPassword for connecting to the Wattpilot device
WATTPILOT_SPLIT_PROPERTIESWhether compound properties (e.g. JSON arrays or objects) should be decomposed into separate propertiestrue

HELP improving API definition in wattpilot.yaml

The MQTT and Home Assistant support heavily depends on the API definition in wattpilot.yaml which has been compiled from different sources and does not yet contain a full set of information for all relevant properties. See API.md for a generated documentation of the available data.

If you want to help, please have a look at the properties defined in wattpilot.yaml and fill in the missing pieces (e.g. title, description, rw, jsonType, childProps, homeAssistant, device_class, unit_of_measurement, enabled_by_default) to properties you care about. The file contains enough documentation and a lot of working examples to get you started.

Keywords

FAQs


Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc