# Fronius Binding

This binding uses the Fronius Solar API V1 (opens new window) to obtain data from Fronius devices.

It supports Fronius inverters, smart meters and Ohmpilot devices connected to a Fronius Datamanager 1.0 / 2.0, Fronius Datalogger or with integrated Solar API V1 support.

Inverters with integrated Solar API V1 support include:

  • Fronius Galvo
  • Fronius Primo
  • Fronius Symo
  • Fronius Symo Gen24
  • Fronius Symo Gen24 Plus

# Supported Things

Thing Type Description
bridge The Bridge
powerinverter Fronius Galvo, Symo and other Fronius inverters: You can add multiple inverters that depend on the same datalogger with different device ids. (default id = 1)
meter Fronius Smart Meter: You can add multiple smart meters with different device ids. (default id = 0)
ohmpilot Fronius Ohmpilot ( default id = 0)

# Discovery

There is no discovery implemented. You have to create your Things manually and specify the hostname or IP address of the Datalogger and the device id.

# Binding Configuration

The binding has no configuration options, all configuration is done at bridge, powerinverter, meter or ohmpilot level.

# Thing Configuration

# Bridge Thing Configuration

Parameter Description Required
hostname The hostname or IP address of your Fronius Datamanager, Datalogger or inverter Yes
username The username to authenticate with the inverter settings for battery control No
password The password to authenticate with the inverter settings for battery control No
refreshInterval Refresh interval in seconds No

# Powerinverter Thing Configuration

Parameter Description
deviceId The identifier of your device (Default: 1)

# Meter Thing Configuration

Parameter Description
deviceId The identifier of your smart meter (Default: 0)

# Ohmpilot Thing Configuration

Parameter Description
deviceId The identifier of your ohmpilot (Default: 0)

# Channels

# powerinverter Thing Channels

Channel ID Item Type Description
inverterdatachannelpac Number:Power AC Power generated
inverterdatachannelpdc Number:Power DC Power calculated from DC voltage * DC current
inverterdatachannelpdc2 Number:Power DC Power generated by MPPT tracker 2
inverterdatachannelpdc3 Number:Power DC Power generated by MPPT tracker 3
inverterdatachannelfac Number:Frequency AC frequency
inverterdatachanneliac Number:ElectricCurrent AC current
inverterdatachannelidc Number:ElectricCurrent DC current
inverterdatachannelidc2 Number:ElectricCurrent DC current of MPPT tracker 2
inverterdatachannelidc3 Number:ElectricCurrent DC current of MPPT tracker 3
inverterdatachanneluac Number:ElectricPotential AC voltage
inverterdatachanneludc Number:ElectricPotential DC voltage
inverterdatachanneludc2 Number:ElectricPotential DC voltage of MPPT tracker 2
inverterdatachanneludc3 Number:ElectricPotential DC voltage of MPPT tracker 3
inverterdatachanneldayenergy Number:Energy Energy generated on current day
inverterdatachannelyear Number:Energy Energy generated in current year
inverterdatachanneltotal Number:Energy Energy generated overall
inverterdatadevicestatuserrorcode Number Device error code
inverterdatadevicestatusstatuscode Number Device status code
0 - 6 Startup
7 Running
8 Standby
9 Bootloading
10 Error
powerflowchannelpgrid Number:Power Grid Power (+ from grid, - to grid)
powerflowchannelpload Number:Power Load Power (+ generator, - consumer)
powerflowchannelpakku Number:Power Battery Power (+ discharge, - charge)
powerflowchannelppv Number:Power Solar Power (+ production)
powerflowautonomy Number:Dimensionless The current relative autonomy in %
powerflowselfconsumption Number:Dimensionless The current relative self consumption in %
powerflowinverterpower Number:Power Current power of the inverter, null if not running (+ produce/export, - consume/import)
powerflowinvertersoc Number:Dimensionless Current state of charge of the battery connected to the inverter in percent.
powerflowinverter1power Number:Power Current power of inverter 1, null if not running (+ produce/export, - consume/import) - DEPRECATED
powerflowinverter1soc Number:Dimensionless Current state of charge of inverter 1 in percent - DEPRECATED

# meter Thing Channels

Channel ID Item Type Description
enable Number 1 = enabled, 0 = disabled
location Number 0 = grid interconnection point (primary meter)
1 = load (primary meter)
3 = external generator (secondary meters)(multiple)
256-511 = subloads (secondary meters)(unique). Refer to Fronius Solar API.
currentacphase1 Number:ElectricCurrent AC Current on Phase 1
currentacphase2 Number:ElectricCurrent AC Current on Phase 2
currentacphase3 Number:ElectricCurrent AC Current on Phase 3
voltageacphase1 Number:ElectricPotential AC Voltage on Phase 1
voltageacphase2 Number:ElectricPotential AC Voltage on Phase 2
voltageacphase3 Number:ElectricPotential AC Voltage on Phase 3
powerrealphase1 Number:Power Real Power on Phase 1
powerrealphase2 Number:Power Real Power on Phase 2
powerrealphase3 Number:Power Real Power on Phase 3
powerrealsum Number:Power Real Power summed up
powerfactorphase1 Number Power Factor on Phase 1
powerfactorphase2 Number Power Factor on Phase 2
powerfactorphase3 Number Power Factor on Phase 3
energyrealsumconsumed Number:Energy Real Energy consumed
energyrealsumproduced Number:Energy Real Energy produced

# ohmpilot Thing Channels

Channel ID Item Type Description
energyrealsumconsumed Number:Energy Real Energy consumed
powerrealsum Number:Power Real Power
temperaturechannel1 Number:Temperature Temperature
errorcode Number Device error code
statecode Number Device state code
0 up and running
1 keep minimum temperature
2 legionella protection
3 critical fault
4 fault
5 boost mode

# Properties

# meter Thing Properties

Property Description
modelId The model name of the meter
serialNumber The serial number of the meter

# ohmpilot Thing Properties

Property Description
modelId The model name of the ohmpilot
serialNumber The serial number of the ohmpilot

# Actions

WARNING

Battery control uses the battery management's time-dependent battery control settings of the inverter settings and therefore overrides user-specified time of use settings. Please note that user-specified time of use plans cannot be used together with battery control, as battery control will override the user-specified time of use settings.

The powerinverter Thing provides actions to control the battery charging and discharging behaviour of hybrid inverters, such as Symo Gen24 Plus, if username and password are provided in the bridge configuration.

You can retrieve the actions as follows:

    Where the first parameter must always be fronius and the second must be the full Thing UID of the inverter.

    # Available Actions

    Once the actions instance has been retrieved, you can invoke the following methods:

    • resetBatteryControl(): Remove all battery control schedules from the inverter.
    • holdBatteryCharge(): Prevent the battery from discharging (removes all battery control schedules first and applies all the time).
    • addHoldBatteryChargeSchedule(LocalTime from, LocalTime until): Add a schedule to prevent the battery from discharging in the specified time range.
    • addHoldBatteryChargeSchedule(ZonedDateTime from, ZonedDateTime until): Add a schedule to prevent the battery from discharging in the specified time range.
    • forceBatteryCharging(QuantityType<Power> power): Force the battery to charge with the specified power (removes all battery control schedules first and applies all the time).
    • addForcedBatteryChargingSchedule(LocalTime from, LocalTime until, QuantityType<Power> power): Add a schedule to force the battery to charge with the specified power in the specified time range.
    • addForcedBatteryChargingSchedule(ZonedDateTime from, ZonedDateTime until, QuantityType<Power> power): Add a schedule to force the battery to charge with the specified power in the specified time range.

    All methods return a boolean value indicating whether the action was successful.

    # Examples

    var froniusInverterActions = actions.thingActions('fronius', 'fronius:powerinverter:mybridge:myinverter');
    
    froniusInverterActions.resetBatteryControl();
    froniusInverterActions.holdBatteryCharge();
    froniusInverterActions.forceBatteryCharging(Quantity('5 kW'));
    
    froniusInverterActions.resetBatteryControl();
    froniusInverterActions.addHoldBatteryChargeSchedule(time.toZDT('18:00'), time.toZDT('22:00'));
    froniusInverterActions.addForcedBatteryChargingSchedule(time.toZDT('22:00'), time.toZDT('23:59'), Quantity('5 kW'));
    froniusInverterActions.addForcedBatteryChargingSchedule(time.toZDT('00:00'), time.toZDT('06:00'), Quantity('5 kW'));
    

    # Full Example

    demo.things:

    Bridge fronius:bridge:mybridge [hostname="192.168.66.148", refreshInterval=5] {
        Thing powerinverter myinverter [deviceId=1]
        Thing meter mymeter [deviceId=0]
        Thing ohmpilot myohmpilot [deviceId=0]
    }
    

    demo.items:

    Number:Power AC_Power { channel="fronius:powerinverter:mybridge:myinverter:inverterdatachannelpac" }
    Number:Energy Day_Energy { channel="fronius:powerinverter:mybridge:myinverter:inverterdatachanneldayenergy" }
    Number:Energy Total_Energy { channel="fronius:powerinverter:mybridge:myinverter:inverterdatachanneltotal" }
    Number:Energy Year_Energy { channel="fronius:powerinverter:mybridge:myinverter:inverterdatachannelyear" }
    Number:Frequency FAC { channel="fronius:powerinverter:mybridge:myinverter:inverterdatachannelfac" }
    Number:ElectricCurrent IAC { channel="fronius:powerinverter:mybridge:myinverter:inverterdatachanneliac" }
    Number:ElectricCurrent IDC { channel="fronius:powerinverter:mybridge:myinverter:inverterdatachannelidc" }
    Number:ElectricPotential UAC { channel="fronius:powerinverter:mybridge:myinverter:inverterdatachanneluac" }
    Number:ElectricPotential UDC { channel="fronius:powerinverter:mybridge:myinverter:inverterdatachanneludc" }
    Number ErrorCode { channel="fronius:powerinverter:mybridge:myinverter:inverterdatadevicestatuserrorcode" }
    Number StatusCode { channel="fronius:powerinverter:mybridge:myinverter:inverterdatadevicestatusstatuscode" }
    Number:Power Grid_Power { channel="fronius:powerinverter:mybridge:myinverter:powerflowchannelpgrid" }
    Number:Power Load_Power { channel="fronius:powerinverter:mybridge:myinverter:powerflowchannelpload" }
    Number:Power Battery_Power { channel="fronius:powerinverter:mybridge:myinverter:powerflowchannelpakku" }
    Number:Power Production_Power { channel="fronius:powerinverter:mybridge:myinverter:powerflowchannelppv" }
    Number:Dimensionless Power_Autonomy { channel="fronius:powerinverter:mybridge:myinverter:powerflowautonomy" }
    Number:Dimensionless Power_SelfConsumption { channel="fronius:powerinverter:mybridge:myinverter:powerflowselfconsumption" }
    Number:Power Inverter1_Power { channel="fronius:powerinverter:mybridge:myinverter:powerflowinverter1power" }
    Number:Dimensionless Inverter1_SOC { channel="fronius:powerinverter:mybridge:myinverter:powerflowinverter1soc" }
    
    Number Meter_Enable { channel="fronius:meter:mybridge:mymeter:enable" }
    Number Meter_Location { channel="fronius:meter:mybridge:mymeter:location" }
    Number:ElectricCurrent Meter_CurrentPhase1 { channel="fronius:meter:mybridge:mymeter:currentacphase1" }
    Number:ElectricCurrent Meter_CurrentPhase2 { channel="fronius:meter:mybridge:mymeter:currentacphase2" }
    Number:ElectricCurrent Meter_CurrentPhase3 { channel="fronius:meter:mybridge:mymeter:currentacphase3" }
    Number:Voltage Meter_VoltagePhase1 { channel="fronius:meter:mybridge:mymeter:voltageacphase1" }
    Number:Voltage Meter_VoltagePhase2 { channel="fronius:meter:mybridge:mymeter:voltageacphase2" }
    Number:Voltage Meter_VoltagePhase3 { channel="fronius:meter:mybridge:mymeter:voltageacphase3" }
    Number:Power Meter_PowerPhase1 { channel="fronius:meter:mybridge:mymeter:powerrealphase1" }
    Number:Power Meter_PowerPhase2 { channel="fronius:meter:mybridge:mymeter:powerrealphase2" }
    Number:Power Meter_PowerPhase3 { channel="fronius:meter:mybridge:mymeter:powerrealphase3" }
    Number:Power Meter_PowerSum    { channel="fronius:meter:mybridge:mymeter:powerrealsum" }
    Number Meter_PowerFactorPhase1 { channel="fronius:meter:mybridge:mymeter:powerfactorphase1" }
    Number Meter_PowerFactorPhase2 { channel="fronius:meter:mybridge:mymeter:powerfactorphase2" }
    Number Meter_PowerFactorPhase3 { channel="fronius:meter:mybridge:mymeter:powerfactorphase3" }
    Number:Energy Meter_EnergyConsumed { channel="fronius:meter:mybridge:mymeter:energyrealsumconsumed" }
    Number:Energy Meter_EnergyProduced { channel="fronius:meter:mybridge:mymeter:energyrealsumproduced" }
    
    Number:Energy Ohmpilot_EnergyConsumed { channel="fronius:ohmpilot:mybridge:myohmpilot:energyrealsumconsumed" }
    Number:Power Ohmpilot_PowerSum { channel="fronius:ohmpilot:mybridge:myohmpilot:powerrealsum" }
    Number:Temperature Ohmpilot_Temperature { channel="fronius:ohmpilot:mybridge:myohmpilot:temperaturechannel1" }
    Number Ohmpilot_State { channel="fronius:ohmpilot:mybridge:myohmpilot:statecode" }
    Number Ohmpilot_Errorcode { channel="fronius:ohmpilot:mybridge:myohmpilot:errorcode" }
    

    Note: Make sure to turn on the Night Mode in the Display Settings on the Fronius inverter to keep it from going offline at night.