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
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
Apprise - Push Notifications that work with just about every platform!

ap·prise / verb To inform or tell (someone). To make one aware of something. Apprise allows you to send a notification to almost all of the most popul

Chris Caron 7.2k Jan 07, 2023
An Advanced Telegram Bot to Play Radio & Music in Voice Chat. This is Also The Source Code of The Bot Which is Being Used For Playing Radio in @AsmSafone Channel ❤️

Telegram Radio Player V3 An Advanced Telegram Bot to Play Nonstop Radio/Music/YouTube Live in Channel or Group Voice Chats. This is also the source co

SAF ONE 421 Jan 05, 2023
radiant discord anti nuke src leaked lol.

radiant-anti-wizz-leaked radiant discord anti nuke src leaked lol, the whole anti sucks but idc. sucks to suck thats tuff bro LMAOOOOOO join my server

ok 15 Aug 06, 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
Cryptocurrency Prices Telegram Bot For Python

Cryptocurrency Prices Telegram Bot How to Run Set your telegram bot token as environment variable TELEGRAM_BOT_TOKEN: export TELEGRAM_BOT_TOKEN=your_

Sina Nazem 3 Oct 31, 2022
A Twitter Bot that retweets and likes tweets with the hashtag #girlscriptwoc and #girlscript, and also follows the user.

GirlScript Winter of Contributing Twitter Bot A Twitter Bot that retweets and likes tweets with the hashtag #girlscriptwoc and #girlscript, and also f

Pranay Gupta 9 Dec 15, 2022
A very simple Salesforce.com REST API client for Python

Simple Salesforce Simple Salesforce is a basic Salesforce.com REST API client built for Python 3.5, 3.6, 3.7 and 3.8. The goal is to provide a very lo

simple salesforce 1.4k Dec 29, 2022
Project developed as part of a selection process for the company Denox

📝 Tabela de conteúdos Sobre Requisitos para rodar o projeto Instalação Rotas da API Observações 🧐 Sobre Projeto desenvolvido como parte de um proces

Ícaro Sant'Ana 1 Mar 01, 2022
SUPPORTS 500 GROUPS NO NEED OF BOT 😉

LOVELY RADIO SUPPORTS 500 GROUPS NO NEED OF BOT 😉 Requirements Telegram API_ID , API_HASH and SESSION_NAME HEROKU Get YouTube live stream link instal

6 Nov 24, 2021
A Python wrapper for the tesseract-ocr API

tesserocr A simple, Pillow-friendly, wrapper around the tesseract-ocr API for Optical Character Recognition (OCR). tesserocr integrates directly with

Fayez 1.7k Jan 03, 2023
PepeSniper is an open-source Discord Nitro auto claimer/redeemer made in python.

PepeSniper is an open-source Discord Nitro auto claimer made in python. It sure as hell is not the fastest sniper out there but it gets the job done in a timely and stable manner. It also supports ho

Unknown User 1 Dec 22, 2021
My Discord Bot that I used to learn Python. Please disregard the unstructured code!

Botsche My personal Discord Bot. To run this bot, change TOKEN in config.ini to your Discord Bot Token, which can be retrieved from your Discord Dev

Mats Voss 1 Nov 29, 2021
A casino discord bot written in Python

Casino Bot Casino bot is a gambling discord bot I made for my friends. It is able to play blackjack, slots, flip a coin, and roll dice. It stores ever

Connor Swislow 27 Dec 30, 2022
Discord bot written in python

Discord bot created by dpshark#3004 for fun List of features/commands: [keyword] responses tools !add [respons] Adds new response to [keyword] !remove

Daniel K.Gunleiksrud 3 Dec 28, 2021
Python Client for Instagram API

This project is not actively maintained. Proceed at your own risk! python-instagram A Python 2/3 client for the Instagram REST and Search APIs Install

Facebook Archive 2.9k Dec 30, 2022
Python version of PlaceNL's headless bot with automatic access token refresh

Reddit /r/place 2022 headless bot This headless Python bot will automatically login to reddit, obtain access tokens (and refreshes them when they expi

19 May 21, 2022
8300-account-nuker - A simple accoutn nuker or can use it full closing dm and leaving server

8300 ACCOUNT NUKER VERISON: its just simple accoutn nuker or can use it full clo

†† 5 Jan 26, 2022
EC2 that automatically move files received through FTP to S3

ftp-ec2-s3-cf EC2 that automatically move files received through FTP to S3 Installation CloudFormation template Deploy now! Usage IP / domain name: ta

Javier Santana 1 Jun 19, 2021
Evernote SDK for Python

Evernote SDK for Python Evernote API version 1.28 This SDK is intended for use with Python 2.X For Evernote's beta Python 3 SDK see https://github.com

Evernote 612 Dec 30, 2022