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
DongTai API SDK For Python

DongTai-SDK-Python Quick start You need a config file config.json { "DongTai":{ "token":"your token", "url":"http://127.0.0.1:90"

huoxian 50 Nov 24, 2022
TG-Streaming-bot - TG Simple Streaming bot

TG Simple Streaming bot telegram video straming bot 🎚️ Features Play youtube li

HyDrix 4 May 05, 2022
Visualize size of directories, s3 buckets.

Dir Sizer This is a work in progress, right now consider this an Alpha or Proof of Concept level. dir_sizer is a utility to visualize the size of a di

Scott Seligman 13 Dec 08, 2022
Telegram Group Chat Statistics With Python

Telegram Group Chat Statistics How to Run First add PYTHONPATH in repository root directory enviroment variable by running: export PYTHONPATH=${PWD}

Sina Nazem 3 Apr 18, 2022
Trust-minimized Bitcoin wallet

coldcore Trust-minimized, airgapped Bitcoin management This is experimental software. Wait for a formal release before use with real funds. A trust-mi

James O'Beirne 121 Jan 01, 2023
A Telegram bot to download posts, videos, reels, IGTV and a user profile picture from Instagram!

Telegram Bot A telegram bot to download media from Instagram! No API Key or Login Needed! Requirements You must have python installed (of course) You

Simon Farah 2 Apr 10, 2022
GitGram Bot. Bot Then Message You Your Repo Starts, Forks, And Many More

Yet Another GitAlertBot Inspired From Dev-v2's GitGram Run Bot: Local Host Git Clone Repo : For Telethon Version : git clone https://github.com/TeamAl

Alina RoBot 2 Nov 24, 2021
Aria/qBittorrent Telegram mirror/leech bot

This Telegram Bot written in Python for mirroring files on the Internet to our Google Drive or Telegram. Based on python-aria-mirror-bot Features: qBi

Anas 2.1k Jan 04, 2023
A python based all-in-one tool for Google Drive

gdrive-tools A python based all-in-one tool for Google Drive Uses For Gdrive-Tools ✓ generate SA ✓ Add the SA and Add them to TD automatically ✓ Gener

XcodersHub 32 Feb 09, 2022
This bot is made with Python and it is running using Docker container and is concentrated on heroku.

This bot is made with Python and it is running using Docker container and is concentrated on heroku.

Movindu Bandara 1 Nov 16, 2021
A simple Python app to provide RPC for iTunes and the Music app. MacOS exclusive.

Ongaku You know, ongaku. A port of Ongaku to Python. Why? I don't know. A simple application providing the now playing state from iTunes (or the Music

Deltaion Lee 4 Oct 22, 2022
Simple Python script that lets you upload image/video to imgur

Pymgur 🐍 Simple Python script that lets you upload image/video to imgur! Usage 🔨 Git Clone this repository install the requirements (pip install -r

3 Feb 20, 2022
Polar devices Python API and CLI.

loophole - Polar devices API About Python API for Polar devices. Command line interface included. Tested with: A360 Loop M400 Installation pip install

[roscoe] 145 Sep 14, 2022
Bill is a bot capable to Chat with you, search everything on web to you, and send message to yours contacts for you.

Bill Bot The inteligent Bot Bill is a intelligent bot, it can chat, search and send messages to you. Chat with You Send messages on WhatsApp for you S

João Assalim 3 Sep 12, 2021
Scrapes an instagram user's photos and videos

Instagram Scraper instagram-scraper is a command-line application written in Python that scrapes and downloads an instagram user's photos and videos.

7.3k Nov 18, 2022
A Telegram Bot to generate permanent Stream and Download links for any Telegram file

Telegram File To Stream Link This bot will give you permanent Stream and Download links for Telegram files Deploy the Bot Press the below button to de

Shadow 80 Dec 16, 2022
A Python app to serve Conveyor room requests and run approvals through Slack

✨ CONVEYOR FOR SLACK ✨ This is a friendly little Python app that will allow you to integrate your instance of Conveyor with your Slack workspace. In o

Vivienne 4 Sep 27, 2021
Unlimited Filter Bot

Unlimited Filter Bot The Orginel Owner Of This Repo Is ㅤㅤㅤㅤㅤㅤㅤ ㅤㅤㅤㅤㅤㅤㅤ An advanced Filter Bot with nearly unlimitted filters! Features Nearly unlimite

4 Aug 02, 2022
An API wrapper for Henrik's Unofficial VALORANT API

ValorantAPI.py An API wrapper for Henrik's Unofficial VALORANT API Warning!! This project is still in beta and only contains barely anything yet. If y

Jakkaphat Chalermphanaphan 0 Feb 04, 2022
Discord Remote Administration Tool fully written in Python3.

DiscordRAT Discord Remote Administration Tool fully written in Python3. This is a RAT controlled over Discord with over 50 post exploitation modules.

hozzywozzy 2 Feb 06, 2022