Automated JSON API based communication with Fronius Symo

Overview

PyFronius - a very basic Fronius python bridge

Build Status Coverage Status PyPI version PyPI - Python Version PyPI - Status

A package that connects to a Fronius device in the local network and provides data that is provided via the JSON API of the Fronius. This includes the grid consumption, grid return, photovoltaic production and many more details on the status of the local power supply.

Features

The package supports the following data provided by Fronius devices:

  • Power Flow (System scope)
  • Meter (System and Device scope)
  • Inverter (System and Device scope)
  • Storage (System and Device scope, Experimental)
  • Active Devices
  • Logger Information
  • Inverter Information

The package currently supportes the Fronius API V1 and V0 and aims to support as many different device types as possible (Hybrid, GEN24,...).

I also know there are better scripts, yet they are not on pypi which is necessary for using them with Home Assistant

Contributing

Support may be enhanced based on the official documentation (V1, V0). Pull requests are very welcome.

If you own a Fronius device, feel free to provide us with raw data returned by fetching the API endpoints manually. Data from systems featuring Ohmpilots and Storages are much welcomed as we have no data for testing these so far.

Comments
  • unable to clone

    unable to clone

    Not sure if it is releated to my machine, or the content of the project. If I clone I get an error: image nothing gets cloned. With the suggested git restore I have more: image

    opened by retos 6
  • Drop loop kwarg from asyncio.gather call

    Drop loop kwarg from asyncio.gather call

    On Python 3.10 gather does not accept the loop kwarg anymore:

    >       res = await asyncio.gather(*requests, loop=loop, return_exceptions=True)
    E       TypeError: gather() got an unexpected keyword argument 'loop'
    

    Tested against python 3.9/3.10.

    opened by mweinelt 5
  • New Fronius API

    New Fronius API

    As discovered here there seems to be a new api under http:///components/readable where the GEN24 web interface gets it data from which seems quite extensive, maybe all we ever dreamed of :)

    For example it has very interesting lifetime stats for BYD battery storages:

                                            "BAT_CAPACITY_ESTIMATION_MAX_F64" : 21897.0,
    					"BAT_CAPACITY_ESTIMATION_REMAINING_F64" : 16247.0,
    					"BAT_CURRENT_DC_F64" : -4.9048422066971815,
    					"BAT_CURRENT_DC_INTERNAL_F64" : -4.8977628097185475,
    					"BAT_ENERGYACTIVE_LIFETIME_CHARGED_F64" : 2152417.0,
    					"BAT_ENERGYACTIVE_LIFETIME_DISCHARGED_F64" : 1856524.0,
    					"BAT_MODE_CELL_STATE_U16" : 3.0,
    					"BAT_MODE_HYBRID_OPERATING_STATE_U16" : 1.0,
    					"BAT_MODE_LAST_FAULT_PARAMETER_U16" : 0.0,
    					"BAT_MODE_STATE_U16" : 64.0,
    					"BAT_MODE_U16" : 2.0,
    					"BAT_MODE_WAKE_ENABLE_STATUS_U16" : 1.0,
    					"BAT_TEMPERATURE_CELL_F64" : 8.5,
    					"BAT_TEMPERATURE_CELL_MAX_F64" : 9.0,
    					"BAT_TEMPERATURE_CELL_MIN_F64" : 8.0,
    					"BAT_VALUE_STATE_OF_CHARGE_RELATIVE_U16" : 74.200000000000003,
    					"BAT_VALUE_STATE_OF_HEALTH_RELATIVE_U16" : 99.0,
    					"BAT_VALUE_WARNING_CODE_U16" : 46.0,
    					"BAT_VOLTAGE_DC_INTERNAL_F64" : 415.69999999999999,
    					"COMPONENTS_MODE_ENABLE_U16" : 1.0,
    					"COMPONENTS_MODE_VISIBLE_U16" : 1.0,
    					"COMPONENTS_TIME_STAMP_U64" : 1646425005.0,
    					"DCLINK_POWERACTIVE_LIMIT_DISCHARGE_F64" : 16628.0,
    					"DCLINK_POWERACTIVE_MAX_F32" : 16748.0,
    					"DCLINK_VOLTAGE_MEAN_F32" : 415.10000000000002,
    					"DEVICE_TEMPERATURE_AMBIENTEMEAN_F32" : 10.0
    

    @farmio How could this treasure of data best be integrated in pyfronius and then home assistant?

    opened by jmtatsch 5
  • Push data to the connector (by @budbundi)

    Push data to the connector (by @budbundi)

    @budbundi

    Hello, I'm not sure if this is the right place or the home assistant repo. But at this moment I can't use the official HA Fronius component since the poll interval is too long for my purposes and the data of the IOs are missing. I know the IOs are not present in the pull API the user must set a push service for "Datamanager IO Sates". Maybe it is possible to ask the user if he wants to push or pull the data in a config flow and if he chose to push, the component shows a link of the webhook to send the data to.

    @nielstron

    Hello @BudBundi, I am not quite sure which tool you are talking about. This Library is primarily aimed at obtaining the data directly supplied by Fronius devices via the official Fronius JSON API V1. Is there another way to access this data? Is there a way to control switches in the fronius device? Does this require certain devices?

    @budbundi

    I think no special device is necessary.

    You can use all JSON API Data and some more, for me the "Datamanager IO Sates" part is essential.

    Screenshot 2021-02-19 203753 see also official documentation Operating Instruction Fronius Push Service.pdf

    @nielstron

    That looks really interesting! I do not currently have a Fronius device available to play around with this. Also, this requires a completely different setup than the current one (as the current package is aimed at user-initiated requests rather than regular incoming notifications). So thanks for the suggestion but I think this will (and can) not be implemented soonish (at least in this package).

    Regarding the issue of too long poll intervals - you can manually configure the scan interval of the fronius component (down to any time interval you'd like). You will definitely get down to 10 seconds with this while too small intervals might slow down home assistant considerably.

    @gbeine

    The Push Service is in fact an interesting feature. If the HTTP polling interval slows down HA too much, one could try the https://github.com/gbeine/fronius2mqtt script. That polls the Fronius devices using pyfronius and publishes the results via MQTT. Given an HA configured as a MQTT client, the interval of 10 seconds definitely will not slow down the HA.

    @jmtatsch

    The inverter can also be controlled via modbus tcp Look at this how they set the charge target https://github.com/godfuture/SymoGen24Weather/blob/96bcde1c31a6ec144f4f17355a577100b75c90b3/SymoGen24Controller.py#L60

    Note: reconstructed after temporary deletion of the project

    opened by nielstron 0
  • Submitting PRs after accidental deletion

    Submitting PRs after accidental deletion

    Hey everyone, I accidentally deleted this repository...

    So all fork relationships are lost. If you want to submit a PR from a fork before the deletion, fork this repository, copy your changes over from the old fork, and place a PR. Sorry for the inconveniences!

    @farmio

    opened by nielstron 3
Releases(release-0.7.1)
Owner
Niels Mündler
Informatics student on work days. Working on smart and not-so-smart home and mechanized verification of data structures.
Niels Mündler
un outil pour bypasser les code d'états HTTP négatif coté client ( 4xx )

4xxBypasser un outil pour bypasser les code d'états HTTP négatif coté client ( 4xx ) Liscence : MIT license Creator Installation : git clone https://g

21 Dec 25, 2022
hydrotoolbox is a Python script for hydrologic calculations and analysis or by function calls within Python.

hydrotoolbox is a Python script for hydrologic calculations and analysis or by function calls within Python.

Tim Cera 4 Aug 20, 2022
A Bot Telegram Anti Users Channel to automatic ban users who using channel to send message in group.

Tg_Anti_UsersChannel A Bot Telegram Anti Users Channel to automatic ban users who using channel to send message in group. Features: Automatic ban Whit

idzeroid 6 Dec 26, 2021
Telegram Bot to store Posts and Documents and it can Access by Special Links.

File-sharing-Bot Telegram Bot to store Posts and Documents and it can Access by Special Links. I Guess This Will Be Usefull For Many People..... 😇 .

Code X Botz 1.2k Jan 08, 2023
Monitoring plugin for MikroTik devices

check_routeros - Monitoring MikroTik devices This is a monitoring plugin for Icinga, Nagios and other compatible monitoring solutions to check MikroTi

DinoTools 6 Dec 24, 2022
Advanced telegram link in a message attach bot

Attach-Bot-V2 An advanced telegram attach bot Made with Python3 (C) @FayasNoushad Copyright permission under MIT License License - https://github.com

Fayas Noushad 8 Oct 21, 2022
Python wrapper for GitHub API v3

Squeezeit - Python CSS and Javascript minifier Copyright (C) 2011 Sam Rudge This program is free software: you can redistribute it and/or modify it un

David Medina 207 Oct 24, 2022
AWS SDK for Python

Boto3 - The AWS SDK for Python Boto3 is the Amazon Web Services (AWS) Software Development Kit (SDK) for Python, which allows Python developers to wri

the boto project 7.8k Jan 08, 2023
Price checker windows application

Price-Checker price checker windows application This application monitors the prices of selected products and displays a notification if the price has

Danila Tsareff 1 Nov 29, 2021
Python library to connect to Firebots API

This is a firebot library to connect to Firebots API. https://firebot.app/ From Firebots Website: "Firebot is a fully featured open-source bot that c

1 Jan 08, 2022
Braintree Python library

Braintree Python library The Braintree Python library provides integration access to the Braintree Gateway. TLS 1.2 required The Payment Card Industry

Braintree 230 Dec 18, 2022
Get random jokes bapack2 from jokes-bapack2-api

Random Jokes Bapack2 Get random jokes bapack2 from jokes-bapack2-api Requirements Python Requests HTTP library How to Run py random-jokes-bapack2.py T

Miftah Afina 1 Nov 18, 2021
This project, search all entities related to A2P in twilio

Mirror A2P Twilio This project, search all entities related to A2P in twilio (phone numbers, messaging services, campaign, A2P brand information and P

Iván Cárdenas 2 Nov 03, 2022
Python 3 tools for interacting with Notion API

NotionDB Python 3 tools for interacting with Notion API: API client Relational database wrapper Installation pip install notiondb API client from noti

Viet Hoang 14 Nov 24, 2022
A Python wrapper around the Twitter API.

Python Twitter A Python wrapper around the Twitter API. By the Python-Twitter Developers Introduction This library provides a pure Python interface fo

Mike Taylor 3.4k Jan 01, 2023
Simple yet efficient tool used to check and sort tokens in terms of there validation.

Discord Token Checker Simple yet efficient tool used to check and sort tokens in terms of there validation.When the program is done,go to the "output"

Robotnik 15 Dec 27, 2022
Python Twitter API

Python Twitter Tools The Minimalist Twitter API for Python is a Python API for Twitter, everyone's favorite Web 2.0 Facebook-style status updater for

Mike Verdone 2.9k Jan 03, 2023
A discord bot to check if messages have the correct code formatting.

discord-code-formatter A discord bot to check if messages have the correct code formatting. This was a basic project to help me learn Python and learn

Nash Boisvert 1 Nov 23, 2021
KalmanFilterExercise - A Kalman Filter is a algorithmic filter that is used to estimate the state of an unknown variable

Kalman Filter Exercise What are Kalman Filters? A Kalman Filter is a algorithmic

4 Feb 26, 2022
Python library to interact with a Z-Wave JS server.

zwave-js-server-python Python library for communicating with zwave-js-server. Goal for this library is to replicate the structure and the events of Z-

Home Assistant Libraries 54 Dec 18, 2022