dbus - victronenergy/venus GitHub Wiki
List of available services and their paths
This documents lists data available on the Venus OS D-Bus.
The data is published by multiple services. For example each solar charger will have its own service on the D-Bus. As will a VE.Bus inverter/charger system, and-so-forth.
This list is probably not complete, in case you miss something you need, welcome to figure it out (ie. login to a device, and run dbus -y ), and then add it here.
And, besides dbus -y
and dbus-spy
, see also the Modbus-TCP excelsheet, available on our website. It also contains lots of details. Another reliable source are the gui qml pages.
Notes:
- not all paths are available for each type of device. For example a PV Inverter: in case the data on the D-Bus comes from an ethernet connected Fronius, there will be a Fronius device type on the D-Bus. But in case the PV Inverter is actually a Carlo Gavazzi energy meter configured to be measuring a PV Inverter, there is no Fronius Status code (of course).
- SI units are used for all measurements, with these exceptions: Energy is in kWh and temperature is in degrees Celsius.
Disclaimer on the stability of path naming & structure: we give no warranty about these paths and function to be the same for ever. Of course we will not change them often and/or without good reasons.
Index:
- generic
- error codes
- system
- ess
- settings
- vebus (inverter/charger)
- multi (Multi RS and other future inverter/chargers, including external transfer switch)
- acsystem (Managing service for Multi-RS and other future inverter/chargers)
- inverter (VE.Direct inverters & Inverter RS)
- battery
- solar chargers
- DCDC converters
- pvinverters
- ac chargers
- grid (and genset) meter
- temperatures
- tank levels
- (diesel) generator
- generator start/stop
- vecan-xxx
- alternator, dcsource
- fuelcell
- motordrive
- dcsystem
- dcload
- evcharger
- heatpump
- switch
- rvc
- platform
Generic paths
/ProductName
/CustomName
/Mgmt/Connection
/Mgmt/ProcessName
/Mgmt/ProcessVersion
/Connected
/DeviceInstance
/ProductId
/Serial
/HardwareVersion
/FirmwareVersion
See dbus-api for more details.
Error codes
Note: This is currently being developed and has not been implemented yet!
For Victron devices/services the /ErrorCode
path should be used. Thirdparty devices should use the path /Error/n/Id
.
The format of the /Error/n/Id
payload is as follows: "man:[ewi]-code".
Where man is the manufacturer, [ewi] is used to indicate the level of the alarm (e=error, w=warning, i=informational), and code is the device specific error code/id as found in the manual or on a display of the third party device. If the manufacturer does not provide an error code, define a unique number per error.
Translating the code into a human readable string is done by venus-platform. It uses the library in veutil for that. See for example this file: https://github.com/victronenergy/veutil/blob/master/src/qt/genset_error.cpp.
- venus-platform parses the errorcode to populate the notifications, used to trigger alarms on the GX.
Rules:
- There will only be one consumer:
venus-platform
. All other services should use the/Notification/n
paths ofvenus-platform
and not access the error path of the dbus services directly. Venus-platform starts parsing at slot 0 and continues until it finds the first empty slot. - The service must claim and initially populate all error paths before setting
/Connected
to 1. - Always fill all parts of the payload: man, [ewi], and code.
- A service may publish up to 8 (n=7) error paths. The amount of paths published should be fixed. So if a device supports 8 or more different errors/warnings/infos, claim all 8. If only
m
(<=8) errors are supported simultaneously, claimm
paths. A service may also claim 0 error paths when error reporting is not supported on the third party device. This will be considered as no active errors. - An error slot must be set to an empty string if it does not hold an active notification.
- Always fill the slots in order of severity: First all
e
's, followed by allw
's and then alli
's. - When the error condition is resolved, rearrange all slots to satisfy requirements 5 and 6. Make sure not to clear an error slot in-between to prevent parsing errors, see rule 1.
System
The system service is published by the dbus-systemcalc-py process. It takes the various readings like SOC, Battery voltages and other things from other processes, and then republishes these readings on the D-Bus. The System service is also where the System Overview pages in the GUI, and the VRM Dashboard get their data.
com.victronenergy.system
AC related paths:
/Ac/ActiveIn/Source <- The active AC-In source of the multi.
0:not available, 1:grid, 2:genset,
3:shore, 240: inverting/island mode.
This value is determined by matching
the active input on the multi with the
AC Input types as configured in the
System setup menu. Some notes:
1) 0:not available means a config
error by the user: he configured
that input as not in use while it is.
2) 240: inverting/island mode will be added
in version v2.12~26.
https://github.com/victronenergy/venus-private/issues/21
/Ac/ActiveIn/FeedbackEnabled <- 0: Excess PV will not be fed into the grid
1: Excess PV (either AC- or DC-coupled) will be fed into the grid
Note: This is a summary of the ESS settings for VE.Bus systems, or the config of a Multi-RS, so that
there is a single place where this information can always be found.
/Ac/Consumption/L1/Power <- DEPRECATED. Total of /ConsumptionOnInput &
/ConsumptionOnOutput
/Ac/Consumption/L2/Power
/Ac/Consumption/L3/Power
/Ac/Consumption/NumberOfPhases <- Either 1 (single phase), 2 (split-phase) or
3 (three-phase)
/Ac/ConsumptionOnInput/* <- Same subpaths as /Ac/Consumption
/Ac/ConsumptionOnOutput/* <- Same subpaths as /Ac/Consumption
/Ac/Genset/* <- Same subpaths as /Ac/Consumption, and two more:
/Ac/Genset/ProductId
/Ac/Genset/DeviceType
/Ac/Grid/* <- Same subpaths as /Ac/Consumption, and two more:
/Ac/Grid/ProductId <- Meter product id
/Ac/Grid/DeviceType <- Meter device type. Invalid if Grid is not measured by an energy meter. 0 for generic grid meter.
/Ac/PvOnGenset/* <- Same subpaths as /Ac/Consumption
/Ac/PvOnGrid/* <- Same subpaths as /Ac/Consumption
/Ac/PvOnOutput/* <- Same subpaths as /Ac/Consumption
AC-input information (for use by user interfaces)
Ac/In/0/Connected -> Whether the first AC input is connected (0=disconnected, 1=connected)
Ac/In/0/DeviceInstance -> DeviceInstance of the service performing the measurements for this input
Ac/In/0/ServiceName -> Name of service performing the measurements for this input
Ac/In/0/ServiceType -> Type of service (vebus,grid,genset,multi)
Ac/In/0/Source -> The source connected to the first input, 0=not used, 1=Grid, 2=Generator, 3=Shore
Ac/In/1/Connected -> Whether the second AC input is connected (invalid if no second input supported)
Ac/In/1/DeviceInstance -> DeviceInstance of the service performing the measurements for this input
Ac/In/1/ServiceName -> Name of service performing the measurements for this input
Ac/In/1/ServiceType -> Type of service (vebus,grid,genset,multi)
Ac/In/1/Source -> The source connected to the second input, 0=not used, 1=Grid, 2=Generator, 3=Shore
DC & main battery related paths:
/Dc/Battery/Alarms/CircuitBreakerTripped <- Something special
/Dc/Battery/ConsumedAmphours
/Dc/Battery/Current
/Dc/Battery/Power
/Dc/Battery/Soc
/Dc/Battery/State
/Dc/Battery/Temperature
/Dc/Battery/TimeToGo <- in seconds, until battery SOC reaches "SOC relay/discharge floor" value. Capped at 864000 (10 days) when battery is not discharging
/Dc/Battery/Voltage
/Dc/Charger/Power
/Dc/Pv/Current <- total output current of all
connected solar chargers
/Dc/Pv/Power <- same, but then the power
/Dc/System/Power <- see manual, has DC system
/Dc/Vebus/Current <- charge/discharge current from
the VE.Bus system
/Dc/Vebus/Power <- same, but then the power
/Dc/InverterCharger/Power <- The overall power used by inverter/chargers, including Multi, Multi RS, Inverter RS and other inverters
Use this instead of the Vebus power, or Service, when showing a system overview.
/Dc/InverterCharger/Current <- The current value for the above power
Above paths all relate to the main aka central battery in a system. It is possible to have more than one battery. Normally not in an ESS system, but other applications, especially boats, have more. For example two starter batteries + a main service battery. For that there is the Settings -> System setup -> Battery measurements menu.
Related path:
/Batteries -> All batteries in the system (used in gui-v2 and html5-app and VRM)
Use /Batteries in places where you want to show all batteries.
/AvailableBatteries -> List of all battery measurements, used in Settings -> System setup -> Battery measurements.
Paths related to the Settings -> System setup -> Battery selection menu:
/ActiveBatteryService
/AutoSelectedBatteryMeasurement
/AutoSelectedBatteryService
/AvailableBatteryMeasurements
/AvailableBatteryServices
Indicators of various automatic functions such as enhancing or syncing the VE.Bus SOC. See user manual for more info.
/Control/ExtraBatteryCurrent -> 0: no syncing, 1: solar charger current synced with Multi to improve SOC
/Control/SolarChargeCurrent -> 0: no limiting, 1: solar charger limited by user setting or intelligent battery
/Control/SolarChargeVoltage -> 0: no control, 1: solar charger voltage is controlled by intelligent battery or Multi
/Control/VebusSoc -> 0: no syncing, 1: battery SOC is synced with the Multi
/Control/BatteryCurrentSense -> 0: Disabled (battery current is NOT sent to solar chargers).
1: Disabled because External control (ESS or intelligent battery) is used.
2: Disabled because there are no compatible solar chargers.
3: Disabled because a suitable battery monitor is not available.
4: Enabled (battery current is sent to solar chargers to improve tail detection).
Aggregated System State, used to display and record a more comprehensive view of what the system is doing. This mostly mirrors VE.Bus states, but adds more. It also breaks out separate conditions as flags.
/SystemState/State -> 0: Off
-> 1: Low power
-> 2: VE.Bus Fault condition
-> 3: Bulk charging
-> 4: Absorption charging
-> 5: Float charging
-> 6: Storage mode
-> 7: Equalisation charging
-> 8: Passthru
-> 9: Inverting
-> 10: Assisting
-> 244: Battery Sustain (because Prefer Renewable Energy is enabled)
-> 252: External control
-> 256: Discharging
-> 257: Sustain (battery voltage dropped below ESS dynamic cut-off)
-> 258: Recharge
-> 259: Scheduled recharge
System State flags:
/SystemState/BatteryLife -> BatteryLife is active (in Settings->ESS->Mode)
/SystemState/ChargeDisabled -> BMS has disabled charging
/SystemState/DischargeDisabled -> BMS has disabled discharge
/SystemState/LowSoc -> Battery at minimum configured SoC (Settings->ESS->Actual state of charge limit)
/SystemState/SlowCharge -> Slow-charging from grid (if battery has been left discharged for too long).
/SystemState/UserChargeLimited -> User configured a charge limit of 0
/SystemState/UserDischargeLimited -> User configured a maximum inverter power of 0
Timers:
/Timers/TimeOnGrid -> Time spent connect to the grid since last reboot (in seconds)
/Timers/TimeOnGenerator -> Time spent on generator power since last reboot (in seconds)
/Timers/TimeOnInverter -> Time spent inverting (grid disconnected) since last reboot (in seconds)
/Timers/TimeOff -> Time that the inverter was off since last reboot (in seconds)
IO / hardware abstraction:
/Buzzer/State
/Relay/0/State
/Relay/1/State
Other:
/SystemType -> Text string indicating hub-type corresponding with /Hub
/Hub -> 1: Hub-1, 2: Hub-2, 3: Hub-3, 4: ESS
/VebusInstance -> The VRM DeviceInstance of the VE.Bus service; for use over mqtt.
/VebusService -> Returns the service name of the vebus service
/PvInvertersProductIds -> Returns a list of product ids for connected PV-inverters
/AutoSelectedBatteryMeasurement -> The service used for battery voltage measurements and V-sense synchronisation.
ESS (formerly called Hub-4)
When writing functions that manipulate ESS, make sure to study the ESS manual and the Advanced ESS manual which documents mode 2 & 3.
In addition to these operational paths, also see the ESS related paths in settings.
com.victronenergy.hub4
/PvPowerLimiterActive <- In the GUI this is visible as Fronius Zero-feed in active
/MaxChargePower <- Active maximum charge power limit
/MaxDischargePower <- Active maximum discharge power limit
/Overrides/ForceCharge <- Used by scheduled charging and DynamicEss to activate charging
/Overrides/MaxDischargePower <- Used by scheduled charging and DynamicEss to limit DC discharge power
/Overrides/Setpoint <- Used by DynamicEss to override the AC Power setpoint; Can also be used by users when DynamicEss is not used.
Deprecated paths (use the same paths in .settings/Settings/CGWacs tree instead):
/State
/AcPowerSetpoint
/MaxChargePercentage
/MaxChargePower
/MaxDischargePercentage
/MaxDischargePower
Settings
See localsettings for source.
Note that are many more settings than documented here.
gui-v1/gui-v2 related settings:
com.victronenergy.settings
Settings/Gui/RunningVersion: the gui that the user has configured in the UI (Settings -> Display -> User Interface)
1 = gui-v1, 2 = gui-v2.
Note that in some situations a user might have configured to prefer X, but actually another version
is running. For example because gui-v2 has not always been shipped in official releases, hence
no matter what preference is here in the settings, gui-v1 will be running regardless.
Another situation is Cerbo GX without GX Touch: since gui-v2 cannot run without a framebuffer,
gui-v1 is started on Cerbos without GX Touch display, even though user selected gui-v2. User will
never notice that; and his preference for gui-v2 does help him elsewhere: Remote Console on LAN also
looks at this same setting.
For systems that need to know which gui is actually running, such as VRM, we have this second path on dbus:
com.victronenergy.platform Gui/RunningVersion
This holds the actually running version on the GX itself. 1 = gui-v1 is running. 2 = gui-v2 is running.
note that for devices where gui-v1 is needed (CCGX) this is always 1.
Gui/OnScreenGuiv2Supported
This allows the wasm version to determine if gui-v2 can be started on
a screen or if only the remote console on LAN version is switched.
ESS related settings:
com.victronenergy.settings
/Settings/CGwacs/AcPowerSetPoint <- User setting: Grid set-point; Also see com.victronenergy.hub/Overrides/Setpoint.
/Settings/CGwacs/BatteryLife/DischargedSoc <- Deprecated
/Settings/CGwacs/BatteryLife/DischargedTime <- Internal
/Settings/CGwacs/BatteryLife/Flags <- Internal
/Settings/CGwacs/BatteryLife/MinimumSocLimit <- User setting: Minimum Discharge SOC
/Settings/CGwacs/BatteryLife/SocLimit <- Output of the BatteryLife algorithm (read only)
/Settings/CGwacs/BatteryLife/State <- ESS state (read & write, see below)
/Settings/CGwacs/Hub4Mode <- ESS mode (read & write, see below)
/Settings/CGwacs/MaxChargePercentage <- Deprecated
/Settings/CGwacs/MaxChargePower <- User setting: Max Charge Power
/Settings/CGwacs/MaxDischargePercentage <- Deprecated
/Settings/CGwacs/MaxDischargePower <- User setting: Max Inverter Power
/Settings/CGwacs/OvervoltageFeedIn <- User setting: Feed-in excess solar charger power (yes/no)
/Settings/CGwacs/PreventFeedback <- User setting: PV Inverter Zero Feed-in (on/off)
/Settings/CGwacs/RunWithoutGridMeter <- User setting: Grid meter installed (on/off)
ESS mode (/Settings/CGwacs/Hub4Mode):
1: Optimized mode or 'keep batteries charged' and phase compensation enabled
2: Optimized mode or 'keep batteries charged' and phase compensation disabled
3: External control
ESS state (/Settings/CGwacs/BatteryLife/State):
This path can both be read from, and written to.
For reading the ESS state:
0: No longer used.
Optimized mode with BatteryLife:
1: Value set by the GUI when BatteryLife is enabled. Hub4Control uses it to find the right BatteryLife state (values 2-7) based on system state
2: Self consumption
3: Self consumption, SoC exceeds 85%
4: Self consumption, SoC at 100%
5: SoC below BatteryLife dynamic SoC limit
6: SoC has been below SoC limit for more than 24 hours. Charging with battery with 5amps
7: Multi/Quattro is in sustain
8: Recharge, SOC dropped 5% or more below MinSOC.
Keep batteries charged mode:
9: 'Keep batteries charged' mode enabled
Optimized mode without BatteryLife:
10: Self consumption, SoC at or above minimum SoC
11: Self consumption, SoC is below minimum SoC
12: Recharge, SOC dropped 5% or more below minimum SoC
For changing the ESS state:
1: Change the ESS mode to "Optimized (with BatteryLife)"
9: Change the ESS mode to "Keep Batteries Charged"
10: Change the ESS mode to "Optimized (without BatteryLife)"
So to summarise:
To set the system to External Control:
- write 3 to /Settings/CGwacs/Hub4Mode
To set the system to Keep Batteries charged:
- write 1 or 2 to /Settings/CGwacs/Hub4Mode (1 enabled phase compensation; 2 disables it).
- write 9 to /Settings/CGwacs/BatteryLife/State
To set the system to Optimized
- write 1 or 2 to /Settings/CGwacs/Hub4Mode (1 enabled phase compensation; 2 disables it).
- write 1 or 10 to /Settings/CGwacs/BatteryLife/State (1 for BatteryLife, 10 for without).
VE.Bus systems (Multis, Quattros, Inverters)
com.victronenergy.vebus
AC Input measurements:
/Ac/ActiveIn/* <- The ActiveIn paths show the readings of the
current active input. Readings for the other,
AC input are, unfortunately, not available.
The hardware can only measure the data for the
active one (which can also be not connected - ie.
ac-ignored).
/Ac/ActiveIn/L1/F <- Frequency
/Ac/ActiveIn/L1/I <- Current
/Ac/ActiveIn/L1/P <- Real power (or not, for very old devices, see
/Ac/PowerMeasurementType, further below).
/Ac/ActiveIn/L1/S <- Note that all */S paths only change their
value. No update of the change is transmitted
in order to reduce D-Bus load. (and we don't
need nor use the /S paths anywhere).
/Ac/ActiveIn/L1/V
/Ac/ActiveIn/Lx/* <- Same as L1
/Ac/ActiveIn/P <- Total power.
/Ac/ActiveIn/S <- Total apparent power (and see */S node above)
AC Output measurements:
/Ac/Out/L*/* <- Same as ActiveIn, and also same */S paths
restriction as explained above.
There is only a measurement for the total output
power; ie AC out1 & AC out 2 are not independently
measured.
ActiveIn other paths:
/Ac/ActiveIn/Connected <- 0 when inverting, 1 when connected to
an AC in. Path is not available when
VE.Bus is connected via VE.Can.
DEPRECATED in favor of /Ac/ActiveIn/ActiveInput
/Ac/ActiveIn/ActiveInput <- Active input: 0 = ACin-1, 1 = ACin-2,
240 is none (inverting).
Note open issue:
https://github.com/victronenergy/venus-private/issues/21
/Ac/ActiveIn/CurrentLimit <- DEPRECATED in favor of /Ac/In/[1 and 2] paths
/Ac/ActiveIn/CurrentLimitIsAdjustable <- DEPRECATED in favor of /Ac/In/[1 and 2] paths
0 when disabled in VEConfigure, or when
there is a VE.Bus BMS or DMC, etc.
/Ac/In/1/CurrentLimit <- these are the new and current paths to control input
/Ac/In/1/CurrentLimitIsAdjustable current limits.
/Ac/In/2/CurrentLimit
/Ac/In/2/CurrentLimitIsAdjustable
/Settings/SystemSetup/AcInput1 <- since approx v2.70 or v2.80, these paths exist and indicate the
/Settings/SystemSetup/AcInput2 type of that input: 0 (Not used), 1 (Grid), 2(Generator), 3(Shore).
/Ac/PowerMeasurementType <- Indicates the type of power measurement used by the system. The
best one, 4, is the method used for all recent hardware and software
since 2018 or even earlier.
0 = Apparent power only -> under the /P paths, apparent power
is published.
1 = Real power, but only measured by phase masters, and not
synced in time. (And multiplied by number of units in
parallel)
2 = Real power, from all devices, but at different points in time
3 = Real power, at the same time snapshotted, but only by the
phase masters and then multiplied by number of units in
parallel.
4 = Real power, from all devices and at snaphotted at the same
moment.
Ac ignore AC in control:
/Ac/Control/IgnoreAcIn1 <- 0=do not ignore, 1=ignore AcIn1, invalid=Not supported by Multifirmware
/Ac/Control/IgnoreAcIn2 <- 0=do not ignore, 1=ignore AcIn2, invalid=Not supported by Multifirmware
NOTE: The /Ac/Control/IgnoreAcIn# dbus item is only available with Multi firmware version 502 and up.
The actual ignore status is available on Ac/State/IgnoreAcIn#
Ac state information:
/Ac/State/IgnoreAcIn1 <- 0 = AcIn1 is not ignored; 1 = AcIn1 is being ignored.
/Ac/State/IgnoreAcIn2 <- 0 = AcIn2 is not ignored; 1 = AcIn2 is being ignored.
NOTE: AcIn can be ignored by "/Ac/Control/IgnoreAcIn#, Grid code, BMS control, Assistants and Virtual Switch
Ac/State/SplitPhaseL2L1OutSummed <- 0 = L1 and L2 output power values seperately available; 1 = L1+L2 power values summed together.
NOTE: is available only in the 120V versions for the North American markets.
On some models L2 output power can not be reported separately when not in Passthru
/Ac/State/SplitPhaseL2Passthru <- 0 = L1+L2 shorted together; 1 = L2 connected to external L2; Invalid = unused in this configuration
NOTE: Split Phase Passthru is available only in the 120V versions for the North American markets.
For all alarms: 0=OK; 1=Warning; 2=Alarm
Generic alarms:
/Alarms/HighDcCurrent <- 0=OK; 2=High DC current condition in one or more Multis/Quattros
/Alarms/HighDcVoltage <- 0= K; 2=High DC voltage
/Alarms/LowBattery
/Alarms/PhaseRotation <- 0=OK, 1=Warning when AC input phase rotation direction is wrong
/Alarms/Ripple
/Alarms/TemperatureSensor <- Battery temperature sensor alarm
Phase specific alarms:
/Alarms/L1/HighTemperature <- inverter/charger high temperature alarm
/Alarms/L1/LowBattery
/Alarms/L1/Overload
/Alarms/L1/Ripple
/Alarms/L2/* <- same
/Alarms/L3/* <- same
Paths related to BMSes connected to the Multi or VE.Bus system (excluding Can-bus BMSes).
/Bms/AllowToCharge <- BMS allows the battery to be charged
/Bms/AllowToDischarge <- BMS allows the battery to be discharged
/Bms/BmsExpected <- Set if the Multi/Quattro is configured with a VE.Bus BMS.
/Bms/BmsType <- 1 = Two signal BMS; 2 = VE.Bus BMS
/Bms/Error <- BMS error code
/Bms/PreAlarm <- Raised a few seconds before the BMS disconnects on low battery
DC/Battery related information:
/Dc/0/Voltage <- Battery Voltage
/Dc/0/Current <- Battery current in Ampere, positive when charging
/Dc/0/Power <- Battery power in Watts, positive when charging
/Dc/0/Temperature <- Battery temperature in degrees Celsius
/Mode <- Position of the switch.
1=Charger Only;2=Inverter Only;3=On;4=Off
Make sure to read CCGX manual, and limitations
of this switch, for example when using a VE.Bus BMS.
/ModeIsAdjustable <- 0. Switch position cannot be controlled remotely (typically because a VE.Bus BMS is present).
1. Switch position can be controlled remotely
/State <- 0=Off;1=Low Power Mode;2=Fault;3=Bulk;4=Absorption;5=Float;
6=Storage;7=Equalize;8=Passthru;9=Inverting;10=Power assist;
11=Power supply mode;244=Sustain(Prefer Renewable Energy);252=External control
/VebusChargeState <- 1. Bulk
2. Absorption
3. Float
4. Storage
5. Repeat absorption
6. Forced absorption
7. Equalise
8. Bulk stopped
/VebusSetChargeState <- 1. Force to Equalise. 1 hour 1, 2 or 4 V above
absorption (12/24/48V). Charge current is limited
to 1/4 of normal value. Will be followed by a normal
24-hour float state.
2. Force to Absorption, for maximum absorption time.
Will be followed by a normal 24-hour float state.
3. Force to Float, for 24 hours.
(from "Interfacing with VE.Bus products – MK2 Protocol" doc)
The new CurrentLimit paths, only available on VE.Bus 415 or later:
/Ac/In/1/CurrentLimit <- R/W for input current limit.
/Ac/In/1/CurrentLimit GetMin <- not implemented!)
/Ac/In/1/CurrentLimit GetMax
/Ac/In/1/CurrentLimitIsAdjustable
/Ac/In/2/* <- same
LEDs: 0 = Off, 1 = On, 2 = Blinking, 3 = Blinking inverted
/Leds/Mains
/Leds/Bulk
/Leds/Absorption
/Leds/Float
/Leds/Inverter
/Leds/Overload
/Leds/LowBattery
/Leds/Temperature
BMS: only contains valid data if a VE.Bus BMS is present
/Bms/AllowToCharge <- 0=No, 1=Yes
/Bms/AllowToDischarge <- 0=No, 1=Yes
/Bms/BmsExpected <- 0=No, 1=Yes
/Bms/Error <- 0=No, 1=Yes
A full list of commonly used operational paths is available as
the modbusexcelsheet. See whitepaper section on our website.
More VE.Bus D-Bus documentation about ESS control and various
other more complex features is on the Victron internal wiki,
ccgx/specs/mk2-dbus.
Multi RS and other future new inverter/chargers
com.victronenergy.multi
AC Input measurements:
/Ac/In/1/L1/V <- Voltage of AC IN1 on L1
/Ac/In/1/L1/F <- Frequency of AC IN1 on L1
/Ac/In/1/L1/I <- Current of AC IN1 on L1
/Ac/In/1/L1/P <- Real power of AC IN1 on L1
/Ac/In/n/Lx/* <- Same for every input and every phase
AC Input settings:
/Ac/In/n/CurrentLimit <- The input current limit of AC INn; n=1 => AC IN1
/Ac/In/n/CurrentLimit GetMin <- Minimum allowed current limit
/Ac/In/n/CurrentLimit GetMax <- Maximum allowed current limit
/Ac/In/n/CurrentLimitIsAdjustable <- Reflects whether the current limit is adjustable or not
0 when disabled in VictronConnect
/Ac/In/1/Type <- AC IN1 type: 0 (Not used), 1 (Grid), 2(Generator), 3(Shore)
/Ac/In/n/Type <- Same for every input
AC Output measurements:
/Ac/Out/Lx/* <- Same as Ac/In
ActiveIn paths:
/Ac/ActiveIn/ActiveInput <- Active input: 0 = ACin-1, 1 = AC in2, 240 = not connected.
Other AC paths:
Ac/NumberOfPhases
Ac/NumberOfAcInputs
For all alarms: 0=OK; 1=Warning; 2=Alarm
Generic alarms:
/Alarms/LowSoc <- Low state of charge
/Alarms/LowVoltage <- Low battery voltage
/Alarms/HighVoltage <- High battery voltage
/Alarms/LowVoltageAcOut <- Low AC Out voltage
/Alarms/HighVoltageAcOut <- High AC Out voltage
/Alarms/HighTemperature <- High device temperature
/Alarms/Overload <- Inverter overload
/Alarms/Ripple <- High DC ripple
/Dc/0/Voltage <- Battery Voltage
/Dc/0/Current <- Battery current in Ampere, positive when charging
/Dc/0/Temperature <- Battery temperature in degrees Celsius
/Mode <- Position of the switch.
1=Charger Only;2=Inverter Only;3=On;4=Off
/State <- Charger state
0=Off
2=Fault
3=Bulk
4=Absorption
5=Float
6=Storage
7=Equalize
8=Passthrough
9=Inverting
245=Wake-up
25-=Blocked
252=External control
/Soc <- State of charge of internal battery monitor
/ErrorCode
/DeviceOffReason
/Relay/0/State
PV tracker information:
/NrOfTrackers
/Pv/0/V <- PV array voltage from 1st tracker
/Pv/x/V <- PV array voltage from tracker x+1; todays max number of trackers in a single Victron product is 4
/Pv/0/P <- PV array power (Watts) from 1st tracker
/Pv/x/P <- PV array power from tracker no. x+1
/Pv/0/MppOperationMode <- Operating mode of the 1st tracker (See /MppOperationMode below, since v3.??)
/Pv/x/MppOperationMode <- Operating mode of tracker no. x+1 (See /MppOperationMode below, since v3.??)
/Pv/0/Name <- Custom name of the 1st tracker
/Pv/x/Name <- Custom name tracker no. x+1
/Yield/Power <- PV array power (Watts)
/Yield/User <- Total kWh produced (user resettable)
/Yield/System <- Total kWh produced (not resettable)
/MppOperationMode <- 0 = Off
1 = Voltage or Current limited
2 = MPPT Tracker active
For products with multiple trackers, this is an aggregate of the separate tracker states. When one or more
trackers are voltage/current limited, this value also shows voltage/current limited. If there is no tracker
that is voltage/current limited, but one or more trackers are on (so mpp tracking), then the overall state
is MPP tracking.
Acsystem
(managing service for Multi-RS and other inverter/chargers)
Also see the project README.
Mode and settings
com.victronenergy.acsystem
/Ac/In/n/Type <--- Type of AC input configured in VictronConnect,
1=Grid, 2=Genset, 3=Shore.
/Ac/In/n/CurrentLimit <--- AC input current limit for input n
/Ac/In/1/CurrentLimitIsAdjustable <--- Whether current limit can be adjusted.
All units must be adjustable otherwise
this will be 0.
/Mode <--- Switch position. Sent to one RS only, the RSes sync this themselves
/Ess/AcPowerSetpoint <--- AC power setpoint
/Ess/DisableFeedIn <--- Disable grid feedin (at metering point)
/Ess/UseInverterPowerSetpoint <--- InverterPowerSetpoint is used instead of
AcPowerSetpoint. Used by DynamicEss.
/Ess/InverterPowerSetpoint <--- How much DC to convert from/to AC, positive
values charges the battery, negative
discharges the battery.
/Settings/Ess/MinimumSocLimit <--- Minimum SOC limit for ESS
/Settings/Ess/Mode <--- ESS mode
* 0 = Optimised with BatteryLife
* 1 = Optimised without BatteryLife
* 2 = Keep Batteries Charged
* 3 = External Control
/Settings/AlarmLevel/... <--- Disable, warn, or only alarm.
Capabilities
/Capabilities/HasAcPassthroughSupport <--- All RS units support passthru
/Capabilities/HasDynamicEssSupport <--- DynamicEss is supported
Data
/State <--- Summarised state of the system
/Ac/ActiveIn/ActiveInput <--- Active AC input(s) on RS units. All units are
expected to be the same, otherwise this will
show invalid.
/Ac/In/n/Lx/I <--- Total current drawn on phase x, input n
/Ac/In/n/Lx/P <--- Total power drawn on phase x, input n
/Ac/In/n/P <--- Total power drawn over all phases
/Ac/NumberOfAcInputs <--- Number of AC inputs
/Ac/NumberOfPhases <--- Number of phases
/Ac/Out/Lx/I <--- Total current drawn on output
/Ac/Out/Lx/P <--- Total power drawn on output
/Devices/x/Service <--- List of service/instances that make up this service
/Devices/x/Instance
Inverter
(vedirect inverters & Inverter RS)
com.victronenergy.inverter
/Alarms/LowVoltage <- 0=No Alarm; 1=Warning; 2=Alarm
/Alarms/HighVoltage
/Alarms/LowTemperature
/Alarms/HighTemperature
/Alarms/Overload
/Alarms/Ripple
/Alarms/LowVoltageAcOut
/Alarms/HighVoltageAcOut
/Dc/0/Voltage <- Battery voltage
/Ac/Out/L1/V <- AC Output voltage
/Ac/Out/L1/I <- AC Output current
/Ac/Out/L1/P <- Not used on vedirect inverters
/Mode <- Switch position: 2=Inverter on; 4=Off; 5=Low Power/ECO
/State <- 0=Off; 1=Low Power; 2=Fault; 9=Inverting
/Relay/0/State <- Not used on vedirect inverters
Battery
com.victronenergy.battery
/Dc/0/Voltage <- V DC
/Dc/0/Current <- A DC positive when charged, negative when discharged
/Dc/0/Power <- W positive when charged, negative when discharged
/Dc/0/Temperature <- °C Battery temperature (BMV-702 configured to read
temperature only)
/Dc/0/MidVoltage <- V DC Mid voltage (BMV-702 configured to read midpoint
voltage only)
/Dc/0/MidVoltageDeviation <- Percentage deviation
/Dc/1/Voltage <- V DC - Starter voltage (BMV-702 configured to read starter
battery voltage only)
/ConsumedAmphours <- Ah (BMV, Lynx BMS).
/Soc <- 0 to 100 % (BMV, BYD, Lynx BMS)
/TimeToGo <- Time to in seconds (BMV "SOC relay/discharge floor" value, Lynx BMS). Max value 864,000 when battery is not discharging.
DVCC & BOL related paths. These are published by batteries.
/Info/MaxChargeCurrent <- Charge Current Limit aka CCL
(BYD, Lynx BMS and FreedomWon)
/Info/MaxDischargeCurrent <- Discharge Current Limit aka DCL
(BYD, Lynx BMS and FreedomWon)
/Info/MaxChargeVoltage <- Maximum voltage to charge to
(BYD, Lynx BMS and FreedomWon)
/Info/BatteryLowVoltage <- Note that Low Voltage is ignored by the system
(BYD, Lynx BMS and FreedomWon)
/Info/ChargeRequest <- Battery is extremely low and needs to be charged
(BYD, Pylontech and BlueNova)
For all alarms: 0=OK; 1=Warning; 2=Alarm
/Alarms/Alarm <- Generic alarm condition (deprecated; ignored by GUI & VRM)
/Alarms/LowVoltage <- BMV, BYD, Lynx BMS
/Alarms/HighVoltage <- BMV, BYD, Lynx BMS
/Alarms/LowStarterVoltage <- BMV-702 configured to read starter battery voltage only
/Alarms/HighStarterVoltage <- BMV-702 configured to read starter battery voltage only
/Alarms/LowSoc <- BMV, Lynx BMS
/Alarms/HighChargeCurrent <- BYD
/Alarms/HighDischargeCurrent <- BYD
/Alarms/HighCurrent <= Lynx Smart BMS
/Alarms/CellImbalance <- BYD
/Alarms/InternalFailure <- BYD
/Alarms/HighChargeTemperature <- BYD
/Alarms/LowChargeTemperature <- BYD
/Alarms/LowCellVoltage <- Lynx BMS
/Alarms/LowTemperature <- BMV, Lynx BMS, BYD
/Alarms/HighTemperature <- BMV, Lynx BMS, BYD
/Alarms/MidVoltage <- Midpoint deviation, BMV only when configured to monitor
the midpoint.
/Alarms/Contactor <- Lynx Smart BMS
/Alarms/BmsCable <- Lynx Smart BMS; only used in Lynx Smart BMS NG, disabled in firmware (but still visible in dbus) for the
other version.
/Alarms/HighInternalTemperature <- Lynx Smart BMS
/Alarms/FuseBlown <- Lynx Shunt VE.Can
/Settings/HasTemperature
/Settings/HasStarterVoltage
/Settings/HasMidVoltage
/Relay/0/State <- Read to see the state of the relay in the Battery Monitor. In case configured
to the "Remote" mode, using the VictronConnect App, the relay can be controlled
by writing to this path.
More information also here: https://www.victronenergy.com/live/venus-os:large#controlling_relays
/History/DeepestDischarge
/History/LastDischarge
/History/AverageDischarge
/History/ChargeCycles
/History/FullDischarges
/History/TotalAhDrawn
/History/MinimumVoltage
/History/MaximumVoltage
/History/TimeSinceLastFullCharge
/History/AutomaticSyncs
/History/LowVoltageAlarms
/History/HighVoltageAlarms
/History/LowStarterVoltageAlarms
/History/HighStarterVoltageAlarms
/History/MinimumStarterVoltage
/History/MaximumStarterVoltage
/History/DischargedEnergy
/History/ChargedEnergy
Lynx Smart BMS & Lynx Ion Only:
/State
/ErrorCode
/SystemSwitch
/Balancing
/System/NrOfBatteries
/System/BatteriesParallel
/System/BatteriesSeries
/System/NrOfCellsPerBattery
/System/MinCellVoltage
/System/MaxCellVoltage
/Diagnostics/ShutDownsDueError
/Diagnostics/LastErrors/1/Error
/Diagnostics/LastErrors/2/Error
/Diagnostics/LastErrors/3/Error
/Diagnostics/LastErrors/4/Error
/Io/AllowToCharge
/Io/AllowToDischarge
/Io/ExternalRelay
/History/MinimumCellVoltage
/History/MaximumCellVoltage
Lynx Smart BMS:
/NrOfDistributors <= Number of connected distributors (up to 8)
Note that this does not reflect which distributors are connected,
i.e. B & D can be present whithout A & B being present
/Distributor/A/Status <= 0=Not available, 1=Connected, 2=No bus power, 3=Communications Lost
/Distributor/A/Alarms/ConnectionLost <= 0=Ok, 2=Alarm
/Distributor/A/Fuse/0/Name <= UTF-8 string, limited to 16 bytes in firmware
/Distributor/A/Fuse/0/Status <= 0=Not available, 1=Not used, 2=Ok, 3=Blown
/Distributor/A/Fuse/0/Alarms/Blown <= 0=Ok, 2=Alarm
/Distributor/A/Fuse/n/* <= Repeat for every fuse in the distributor
/Distributor/B/... <= Repeat for every distributor (A-E)
...
/Distributor/E/...
Solar chargers
com.victronenergy.solarcharger
Number of trackers:
/NrOfTrackers: Number of trackers, usually 1 for all common MPPTs, and 2 or 4 for MPPT RS.
PV Array voltages, currents and state:
/Pv/V <- PV array voltage, path exists only for single tracker product (all common MPPTs)
/Pv/0/V <- PV array voltage from 1st tracker
/Pv/x/V <- PV array voltage from tracker x+1; today's max number of trackers in a single Victron product is 4.
/Pv/0/P <- PV array power (Watts) from 1st tracker
/Pv/x/P <- PV array power from tracker no. x+1.
/Pv/0/MppOperationMode <- Operating mode of the 1st tracker (See /MppOperationMode below, since v3.00)
/Pv/x/MppOperationMode <- Operating mode of tracker no. x+1 (See /MppOperationMode below, since v3.00)
/Pv/0/Name <- Custom name of the 1st tracker (since v3.??)
/Pv/x/Name <- Custom name tracker no. x+1 (since v3.??)
/Yield/Power <- Total PV power (Watts).
/MppOperationMode <- 0 = Off
1 = Voltage or Current limited
2 = MPPT Tracker active (The maximum available power is taken from PV array)
For products with multiple trackers, this is an aggregate of the separate tracker states. When one or more
trackers are voltage/current limited, this value also shows voltage/current limited. If there is no tracker
that is voltage/current limited, but one or more trackers are on (so mpp tracking), then the overall state
is MPP tracking.
Two examples:
1) a solar charger with one tracker has 3 paths:
/Pv/V
/Yield/Power
/MppOperationMode
2) a solar charger with two trackers has 8 paths:
/Pv/0/V
/Pv/0/P
/Pv/0/MppOperationMode
/Pv/1/V
/Pv/1/P
/Pv/1/MppOperationMode
/Yield Power
/MppOperationMode
deprecated per v2.80:
/Pv/I <- PV current (= /Yield/Power divided by /Pv/V)
/Pv/x/I
External control:
/Link/NetworkMode <- Bitmask
0x1 = External control
0x4 = External voltage/current control
0x8 = Controled by BMS (causes Error #67, BMS lost, if external control is interrupted).
/Link/BatteryCurrent <- When SCS is enabled on the GX device, the battery current is written here to improve tail-current detection.
/Link/ChargeCurrent <- Maximum charge current. Must be written every 60 seconds. Used by GX device if there is a BMS or user limit.
/Link/ChargeVoltage <- Charge voltage. Must be written every 60 seconds. Used by GX device to communicate BMS charge voltages.
/Link/NetworkStatus <- Bitmask
0x01 = Slave
0x02 = Master
0x04 = Standalone
0x20 = Using I-sense (/Link/BatteryCurrent)
0x40 = Using T-sense (/Link/TemperatureSense)
0x80 = Using V-sense (/Link/VoltageSense)
/Link/TemperatureSense <- When STS is enabled, the GX device will write the battery temperature here
/Link/TemperatureSenseActive <- Indicate when temperature sense is in use
/Link/VoltageSense <- When SVS is active, the GX device will write the battery voltage here
/Link/VoltageSenseActive <- INdicate when voltage sense is in use
Settings:
/Settings/BmsPresent <- BMS in the system. External control is expected.
This happens automatically if NetworkMode is set to expect a BMS.
/Settings/ChargeCurrentLimit <- The maximum configured (non-volatile) charge current. This is the same as set by VictronConnect.
Other paths:
/Dc/0/Voltage <- Actual battery voltage
/Dc/0/Current <- Actual charging current
/Yield/User <- Total kWh produced (user resettable)
/Yield/System <- Total kWh produced (not resettable)
/Load/State <- Whether the load is on or off
/Load/I <- Current from the load output
/ErrorCode <- 0=No error
1=Battery temperature too high
2=Battery voltage too high
3=Battery temperature sensor miswired (+)
4=Battery temperature sensor miswired (-)
5=Battery temperature sensor disconnected
6=Battery voltage sense miswired (+)
7=Battery voltage sense miswired (-)
8=Battery voltage sense disconnected
9=Battery voltage wire losses too high
17=Charger temperature too high
18=Charger over-current
19=Charger current polarity reversed
20=Bulk time limit reached
22=Charger temperature sensor miswired
23=Charger temperature sensor disconnected
34=Input current too high
https://www.victronenergy.com/live/mppt-error-codes
/State <- 0=Off
2=Fault
3=Bulk
4=Absorption
5=Float
6=Storage
7=Equalize
252=External control
/History/* <- Contains values about the last month's history
(Only for VE.Direct solarchargers)
/Mode <- 1=On; 4=Off
Writeable for both VE.Direct & VE.Can solar chargers
/DeviceOffReason <- Bitmask indicating the reason(s) that the MPPT is in Off State
0x01 = No/Low input power
0x02 = Disabled by physical switch
0x04 = Remote via Device-mode or push-button
0x08 = Remote input connector
0x10 = Internal condition preventing startup
0x20 = Need token for operation
0x40 = Signal from BMS
0x80 = Engine shutdown on low input voltage
0x100 = Converter is off to read input voltage accurately
0x200 = Low temperature
0x400 = no/low panel power
0x800 = no/low battery power
0x8000 = Active alarm
/Relay/0/State <- Read to see the state of the relay in the Battery Monitor. In case configured
to the "Remote" mode, using the VictronConnect App [SEE NOTE], the relay can be controlled
by writing to this path.
More information also here: https://www.victronenergy.com/live/venus-os:large#controlling_relays
NOTE: currently, 2022-08-17, VictronConnect does not yet offer that settings. It is
planned for later in 2022. Until then, the relay control in the MPPT cannot be set to this mode by
any available ready to use Victron software.
DCDC converters
This includes the Orion XS non-isolated DC/DC charger.
com.victronenergy.dcdc
/Capabilities/Capabilities1
/Dc/0/Current <- Output current
/Dc/0/Power <- Output power
/Dc/0/Voltage <- Output voltage
/Dc/In/I <- Input current
/Dc/In/P <- Input power
/Dc/In/V <- Input voltage
/DeviceOffReason <- Reason why device is off; See solar charger section
/ErrorCode <- Error code; See solar charger section
/Mode <- 1=On; 4=Off
/Settings/DeviceFunction <- 0=Charger(=Alternator), 1=PSU(=dcdc)
/State <- 0=Off
2=Fault
11=Psu
PV Inverters
com.victronenergy.pvinverter
/Ac/Energy/Forward <- kWh - Total produced energy over all phases
/Ac/Power <- W - Total power of all phases, preferably real power
/Ac/L1/Current <- A AC
/Ac/L1/Energy/Forward <- kWh
/Ac/L1/Power <- W
/Ac/L1/Voltage <- V AC
/Ac/L2/* <- same as L1
/Ac/L3/* <- same as L1
/Ac/Current <- A AC - Deprecated
/Ac/Voltage <- V AC - Deprecated
/Ac/MaxPower <- Max rated power (in Watts) of the inverter
/Ac/PowerLimit <- Used by the Fronius Zero-feedin feature, see ESS manual.
Path must be invalid or non-existent for PV Inverters
that do not implement Zero Feed-in power control.
/ErrorCode <- 0=No Error
/FroniusDeviceType <- Fronius specific product id list
/Position <- 0=AC input 1; 1=AC output; 2=AC input 2
/StatusCode <- 0=Startup 0; 1=Startup 1; 2=Startup 2; 3=Startup
3; 4=Startup 4; 5=Startup 5; 6=Startup 6; 7=Running;
8=Standby; 9=Boot loading; 10=Error
AC chargers
com.victronenergy.charger
/Ac/In/L1/I <- A AC
/Ac/In/L1/P <- W
/Ac/In/CurrentLimit <- A AC
/NrOfOutputs <- The actual number of outputs.
/Dc/0/Voltage <- V DC
/Dc/0/Current <- A DC
/Dc/0/Temperature <- °C - Battery temperature
/Dc/1/... <- Same as /Dc/0/...
/Dc/2/... <- Same as /Dc/0/...
/State <- 0=Off
2=Fault
3=Bulk
4=Absorption
5=Float
6=Storage
7=Equalize (manual)
11=Power supply mode
246=Repeated absorption
247=Auto equalize/Recondition
248=BatterySafe
/Mode <- 1=On; 4=Off
/ErrorCode <- 0=No error
1=Battery temperature too high
2=Battery voltage too high
3=Battery temperature sensor miswired (+)
4=Battery temperature sensor miswired (-)
5=Battery temperature sensor disconnected
6=Battery voltage sense miswired (+)
7=Battery voltage sense miswired (-)
8=Battery voltage sense disconnected
9=Battery voltage wire losses too high
17=Charger temperature too high
18=Charger over-current
20=Bulk time limit reached
34=Internal error
37=No input voltage
65=Device disappeared during parallel operation
66=Incompatible device encountered for parallel operation
67=BMS connection lost
113=Internal error
114=Internal error
115=Communication lost
116=Internal error
117=Internal error
118=Internal error
119=Settings invalid/corrupted
120=Internal reference voltage failure
/Relay/0/State <- 0=Disengaged; 1=Engaged. For most chargers this path is either not available, or
read only. Only the relay in Phoenix Smart Chargers is remote controllable. To be
able to do that, use VictronConnect to set the Relay Mode to remote control.
Note that its use is limited: the relay is only powered (and thus
only controllable) when the charger is switched on. It doesn't work when it's
turned off with AC connected.
More information also here: https://www.victronenergy.com/live/venus-os:large#controlling_relays
/Alarms/LowVoltage <- 0=Inactive; 1=Active
/Alarms/HighVoltage <- 0=Inactive; 1=Active
Grid (and genset) meter
com.victronenergy.grid
com.victronenergy.genset (when used to measure a genset)
/Ac/Energy/Forward <- kWh - bought energy (total of all phases)
/Ac/Energy/Reverse <- kWh - sold energy (total of all phases)
/Ac/Power <- W - total of all phases, real power
/Ac/Current <- A AC - Deprecated
/Ac/Voltage <- V AC - Deprecated
/Ac/L1/Current <- A AC
/Ac/L1/Energy/Forward <- kWh - bought
/Ac/L1/Energy/Reverse <- kWh - sold
/Ac/L1/Power <- W, real power
/Ac/L1/Voltage <- V AC
/Ac/L2/* <- same as L1
/Ac/L3/* <- same as L1
/DeviceType
/ErrorCode
Temperatures
These measurements originate from either the built-in wired temperature inputs on the GX device (Cerbo GX and Venus GX), or the wireless sensors made by Ruuvi.
com.victronenergy.temperature
/Temperature degrees Celcius
/TemperatureType 0=battery; 1=fridge; 2=generic, 3=Room, 4=Outdoor, 5=WaterHeater, 6=Freezer
/CustomName
Wired inputs only:
/Status 0=Ok; 1=Disconnected; 2=Short circuited; 3=Reverse polarity; 4=Unknown
/Scale <- normally not necessary! devices should be calibrated.
/Offset <- normally not necessary! devices should be calibrated.
Ruuvis only:
/AccelX
/AccelY
/AccelZ
/BatteryVoltage <- Sensor battery voltage
/Humidity <- example: 62.9275016784668
/Pressure <- example: 102.10400390625
/SeqNo <- 17640
/TxPower <- example: 4.0
Warning! We might still remove or dampen some of the above extra paths. While they are nice, for us they're only nice to have. And they create a load on the system since they update regularly, especially SeqNo and the Accelx,y,z. And then with for example 5 sensors its suddenly quite the extra load; reducing maximum number of installable solar chargers, for example.
Tank levels
com.victronenergy.tank
GENERIC
/Level 0 to 100%
/Remaining m3
/Status 0=Ok; 1=Disconnected; 2=Short circuited; 3=Unknown
/Capacity m3
/FluidType 0=Fuel; 1=Fresh water; 2=Waste water; 3=Live well; 4=Oil; 5=Black water (sewage)
6=Gasoline; 7=Diesel; 8=Liquid Petroleum Gas (LPG); 9=Liquid Natural Gas (LNG)
10=Hydraulic oil; 11=Raw water
This Fluidtype enumeration is kept in sync with NMEA2000 definitions.
/Standard 0=European (resistive); 1=USA (resistive); 2=Not applicable (used for Voltage and Amp sensors)
ALARMS
Note that these are not supported on all tanks, for example for N2K-connected tanks it doesnt
work, while for GX Tank, as well as built-in tank inputs in Cerbo GX & Venus GX it does.
/Alarms/High/Active <-- configuration: the activate level. For example 10%
/Alarms/High/Delay <-- configuration: delay in seconds
/Alarms/High/Enable <-- configuration: enable/disable alarm switch
/Alarms/High/Restore <-- configuration: the restore level, ie the hysterises. For example 15%.
/Alarms/High/State <-- alarm state: DBUS-INVALID when the alarm is disabled; otherwise either 1 or 0.
/Alarms/Low/* <-- same as above
OTHER
Same note. Not available for N2K connected tanks. Battery voltage and temperature are only available for Mopeka sensors
/BatteryVoltage
/FilterLength <-- averaging filter, probably in seconds - to find out, compare with UI.
/RawUnit <-- can be V, and probably also mA and R or O.
/RawValue
/RawValueEmpty
/RawValueFull
/Shape <-- shape configuration (?)
/Temperature
Pulse meters and digital inputs
See https://github.com/victronenergy/dbus-digitalinputs/blob/master/README.md#running
Generator data
The below paths apply to Fischer Panda, ComAp and Hatz generators. Other generators should have similar data, but may not have all the same values. As support for more generators is implemented, this will be extended.
For more information about the Fischer Panda integration, see the Venus & Fischer Panda manual.
For more information about ComAp integration, see the comap module in dbus-modbus-client.
Note that the data from the generator, and the more generic start/stop module are two different things and also have two different D-Bus paths:
- com.victronenergy.(dc)genset -> used for generator data, like voltages, RPM, oil pressure etcetera.
- com.victronenergy.generator -> start/stop code in Venus OS. Can activate a relay, but also, in case of Fischer panda, a generator directly via D-Bus.
com.victronenergy.genset
com.victronenergy.dcgenset
Populated for AC generators:
/Ac/Energy/Forward <- kWh - total energy produced by genset (optional)
/Ac/Power <- W - total of all phases, real power
/Ac/Frequency <- Hz
/Ac/L1/Current <- A AC
/Ac/L1/Power <- W, real power
/Ac/L1/Voltage <- V AC
/Ac/L2/* <- same as L1
/Ac/L3/* <- same as L1
/NrOfPhases <- 1, 2 or 3
Populated for DC generators, i.e. Fischer Panda AGT and Hatz:
/Dc/0/Voltage <- DC output voltage, V
/Dc/0/Current <- DC output current, A
/HeatsinkTemperature <- °C
/RemoteStartModeEnabled <- 0=Disabled; 1=Enabled (read-only) (Was `AutoStart` in Venus 3.40 and earlier)
Needs to be 1 in order to start generator using the /Start path.
For Fischer Panda the remote start mode feature can only be enabled from fpControl panel.
/EnableRemoteStartMode <- (Optional) Engage genset controller mode, which enables remote start/stop; Write 1 to enable
The path is only available for genset controllers, that support that functionality.
/Error/0/Id <- ""=No error (see error codes section on the top of this page for more details)
"fischerpanda:e-": Fischer Panda error codes
"dse:e-": DSE error codes
"hatz:[we]-": Hatz warning/error codes
/ModuleId <- Internal Fischer Panda module Id
/Start <- Start genset; 0=Stop; 1=Start; /RemoteStartModeEnabled must be 1
Note that the /Start item is controlled by the generator start/stop service as
long as /RemoteStartModeEnabled is set to 1. Manually starting/stopping the generator needs
to be done by writing to com.victronenergy.generator.startstop1/ManualStart.
/StarterVoltage <- Starter battery voltage
/StatusCode <- 0=Standby; 1..7=Startup; 8=Running; 9=Stopping; 10=Error
/Engine/CoolantTemperature <- °C
/Engine/ExaustTemperature <- °C
/Engine/Load <- 0 to 100%
/Engine/OilPressure <- kPa
/Engine/OilTemperature <- °C
/Engine/OperatingHours <- in seconds
/Engine/Speed <- rpm
/Engine/WindingTemperature <- °C
/Engine/Starts <- absolute count
Generator start/stop
Presently two types of generator start/stop services are supported.
- Relay 1 on a GX device
- Multiple models & types of connected gensets, both AC and DC gensets.
- ComAp
- CRE
- DEIF
- DSE
- Fischer Panda
- Hatz
There can be multiple start/stop services. The service name starts with com.victronenergy.generator
, and the fourth component will be startstop0, startstop1
and so forth. Do not rely on the fourth component of the dbus name to identify the service. Most systems will only have one start/stop service, depending on whether the relay of the GX-device is used, or a FischerPanda generator is available on the CAN-bus.
The following paths apply to generator start/stop services:
com.victronenergy.generator
/Alarms/NoGeneratorAtAcIn <- If configured for it, the alarm will be triggered if the generator
is not detected at the Multi/Quattro AC Input.
0 = No alarm, 2 = Alarm
/Alarms/AutoStartDisabled <- Autostart alarm is armed, but autostart is disabled: 0 = OK; 2 = Alarm
(this could happen if after service autostart is not re-enabled)
/Alarms/ServiceIntervalExceeded <- The generator is in need of a service: 0 = OK; 1 = Service required.
/AutoStartEnabled <- 0 = Auto stop/start disabled; 1 = Auto stop-start enabled
/DigitalInput/Input <- The digital input number that is signalling the startstop instance that the generator is running. 0 if no
digital input is configured.
/DigitalInput/Running <- 0 / 1: The generator is not running / running according to the digital input.
/Enabled <- 0 = Generator start/stop disabled; 1 = Generator start/stop enabled. Generator start/stop will only be
disabled if there is a connected genset which requires a helper relay but the helper relay is not
configured.
/Error <- 0 = No error, 1 = Remote control disabled, 2 = Remote in fault condition
/GensetService <- The genset service that this startstop instance is controlling
/GensetServiceType <- The type of genset service that this startstop instance is controlling: "genset" or "dcgenset"
/ManualStart <- Generator manual start. 0 = Stop, 1 = Start
/ManualStartTimer <- Set it before a manual start to make the generator run for a fixed
amount of seconds. Once the generator is started it indicates the
seconds left until the generator is stopped.
/NextTestRun <- Seconds until the next periodic test run
/QuietHours <- Indicates if in quiet hours period.
0 = Not in quiet hours, 1 = Quiet hours
/RunningByCondition <- Condition that started or is keeping the generator running.
Values = soc, acload, batterycurrent, batteryvoltage, inverterhightemp,
inverteroverload, testrun, lossofcomunication, manual
/RunningByConditionCode <- Same as `RunningByCondition` but in numeric codes. Stopped = 0,
Manual = 1, TestRun = 2, LossOfCommunication = 3, Soc = 4, Acload = 5,
BatteryCurrent = 6, BatteryVoltage = 7, InverterHighTemp = 8, InverterOverload = 9
/Runtime <- Seconds that the generator is running since it started. After one minute of runtime it updates
once per minute.
/SkipTestRun <- Indicates if the next test run will be skipped because it is not necessary
/State <- 0=Stopped; 1=Running; 2=Warm-up; 3=Cool-down;4=Stopping; 10=Error
/ServiceCounter <- Time left in hours, until service is required; Negative if service is overdue.
/ServiceCounterReset <- Write 1 to reset the service counter.
/TestRunIntervalRuntime <- Run time since last test run (seconds)
/TodayRuntime <- Today's run time (seconds)
/Type <- 0=Generic relay switched, 1=Fischer Panda (more may follow in future).
vecan-xxx
Vecan-dbus makes a com.victronenergy.vecan service. It can be used to (a) see the list of devices found on the canbus (NMT) and update for example their instances. Also (b) the service provides paths that can be used to broadcast data onto the canbus:
Broadcast paths:
Single shot (per v2.80~32 or later):
/Link/Soc
/Link/TemperatureSense
/Link/VoltageSense
/Link/BatteryCurrent
/Link/ExtraBatteryCurrent
Repeated on interval with time-out:
/Link/ChargeVoltage <—- part of ESS
/Link/NetworkMode
Above paths are being written to by Systemcalc. They’re part of ESS and DVCC.
Note for the above broadcast-paths: the device instance as configured for the gx device is used. And that instance is used by the solar chargers and other devices on the bus to either ignore or use such broadcasted data.
alternator-and-dcsource
Alternators can be a digital interface to an alternator controller; such as the Wakespeed WS500 and Arco Zeus controllers. They can also be an OrionXS DC/DC charger. And otherwise a Victron SmartShunt configured to be an energy meter rather than a battery monitor.
alternator is com.victronenergy.alternator
dcsource is com.victronenergy.dcsource
/Dc/0/Voltage <- V DC
/Dc/0/Current <- A, positive when alternator is charging
/Dc/0/Temperature <- Degrees centigrade, alternator temperature reading, or temperature sensor on SmarShunt/BMV (not available for OrionXS)
/Dc/1/Voltage <- SmartShunt/BMV secondary battery voltage (if configured)
DC meter:
/History/EnergyOut <- Total energy generated by Alternator
/Alarms/LowVoltage <- Low voltage alarm
/Alarms/HighVoltage <- High voltage alarm
/Alarms/LowStarterVoltage <- Low voltage secondary battery
/Alarms/HighStarterVoltage <- High voltage secondary battery
/Alarms/LowTemperature <- Low temperature alarm
/Alarms/HighTemperature <- High temperature alarm
Wakespeed WS500/Arco Zeus:
/Engine/Speed <- Engine RPN
/FieldDrive <- Current limit in %
/Speed <- Alternator RPM
/State <- 0=Off
2=Fault
3=Bulk
4=Absorption
5=Float
6=Storage
7=Equalize
252=External control
OrionXS:
/Capabilities/Capabilities1
/Dc/0/Power <- Battery power
/Dc/In/V <- Input voltage
/Dc/In/I <- Input current
/Dc/In/P <- Input power
/DeviceOffReason <- Reason why device is off; See solar charger section
/ErrorCode <- Error code; See solar charger section
/History/* <- Contains information about the charging cycles
/Link/BatteryCurrent <- When SCS is enabled on the GX device, the battery current is written here to improve tail-current detection
/Link/ChargeCurrent <- Charge current limit. Must be written every 60 seconds. Used if a managed battery or user defines a current limit.
/Link/ChargeVoltage <- Charge voltage sent by a managed battery is written here
/Link/CurrentSenseActive <- Indicates whether current sense is active
/Link/NetworkMode <- Bitmask
0x1 = External control
0x4 = External voltage/current control
0x8 = Controled by BMS (causes Error #67, BMS lost, if external control is interrupted).
/Link/NetworkStatus <- Bitmask
0x01 = Slave
0x02 = Master
0x04 = Standalone
0x20 = Using I-sense (/Link/BatteryCurrent)
0x40 = Using T-sense (/Link/TemperatureSense)
0x80 = Using V-sense (/Link/VoltageSense)
/Link/TemperatureSense <- When STS is enabled, the battery temperature is written here
/Link/TemperatureSenseActive <- indicates when STS is in use
/Link/VoltageSense <- When SVS is used, or when ESS is used, voltage sensed by the battery/multi is written here.
/Link/VoltageSenseActive <- SVS is in use
/Mode <- 1=On; 4=Off
/Settings/BmsPresent <- A bms is controlling the DCDC charger; This enables automatically if NetworkMode indicates BMS is present.
/Settings/DeviceFunction <- 0=Charger(=Alternator), 1=PSU(=dcdc)
/Settings/ChargeCurrentLimit <- Maximum configured charge current of controller.
/Settings/MonitorMode <- Specifies type of DC source (not available for OrionXS)
-1=DC Generator
-2=AC Charger
-3=DC/DC Charger
-4=Water Generator
-7=Shaft Generator
-8=Wind Charger
/State <- 0=Off
2=Fault
3=Bulk
4=Absorption
5=Float
6=Storage
7=Equalize
252=External control
fuelcell
fuelcell is com.victronenergy.fuelcell
/Dc/0/Voltage <-- V DC
/Dc/0/Current <-- A, positive when fuel cell is generating power
/Dc/0/Temperature <-- Degrees centigrade, temperature sensor on SmarShunt/BMV
/Dc/1/Voltage <-- SmartShunt/BMV secondary battery voltage (if configured)
/History/EnergyOut <-- Total energy generated by Fuel cell
/Alarms/LowVoltage <-- Low voltage alarm
/Alarms/HighVoltage <-- High voltage alarm
/Alarms/LowStarterVoltage <-- Low voltage secondary battery (if configured)
/Alarms/HighStarterVoltage <-- High voltage secondary battery (if configured)
/Alarms/LowTemperature <-- Low temperature alarm
/Alarms/HighTemperature <-- High temperature alarm
motordrive
This section defines the new N2K based motor drive paths, however com.victronenergy.motordrive has
existed for a while although not very common, there is an existing profile, see vrmlogger datalist.py
for example. Also DC meters, like the SmartShunt, configured to DC meter type "Electric Drive"
uses com.victronenergy.motordrive.
/Dc/0/Voltage <-- V DC
/Dc/0/Current <-- A, can be negative and positive depending on if regeneration works.
/Dc/0/Temperature <-- Degrees centigrade, temperature of the motor
/Controller/Temperature <-- Temperature as reported by the controller (optional)
/Coolant/Temperature <-- Temperature of the coolant (optional)
/Motor/Temperature <-- Temperature as reported by the motor (optional)
/Motor/RPM <-- Motor speed (optional)
/Motor/Direction <-- Direction the motor is spinning, forward or reverse (optional)
dcsystem
dcsystem is com.victronenergy.dcsystem
/Dc/0/Voltage <-- V DC
/Dc/0/Current <-- A, positive when power is consumed by DC loads, if there are chargers in your dcsystem
/Dc/0/Temperature <-- Degrees centigrade, temperature sensor on SmarShunt/BMV
/Dc/1/Voltage <-- SmartShunt/BMV secondary battery voltage (if configured)
/History/EnergyOut <-- Total energy generated by dcsystem
/History/EnergyIn <-- Total energy consumed by dcsystem
/Alarms/LowVoltage <-- Low voltage alarm
/Alarms/HighVoltage <-- High voltage alarm
/Alarms/LowStarterVoltage <-- Low voltage secondary battery (if configured)
/Alarms/HighStarterVoltage <-- High voltage secondary battery (if configured)
/Alarms/LowTemperature <-- Low temperature alarm
/Alarms/HighTemperature <-- High temperature alarm
dcload
com.victronenergy.dcload
/Dc/0/Voltage <-- V DC
/Dc/0/Current <-- A, positive when power is consumed by DC loads
/Dc/0/Temperature <-- Degrees centigrade, temperature sensor on SmarShunt/BMV
/Dc/1/Voltage <-- SmartShunt/BMV secondary battery voltage (if configured)
/History/EnergyIn <-- Total energy consumed by dc load(s).
/Alarms/LowVoltage <-- Low voltage alarm
/Alarms/HighVoltage <-- High voltage alarm
/Alarms/LowStarterVoltage <-- Low voltage secondary battery (if configured)
/Alarms/HighStarterVoltage <-- High voltage secondary battery (if configured)
/Alarms/LowTemperature <-- Low temperature alarm
/Alarms/HighTemperature <-- High temperature alarm
evcharger
com.victronenergy.evcharger
/Ac/Energy/Forward <--
/Ac/L1/Power <-- L1 Power used (W)
/Ac/L2/Power <-- L2 Power used (W)
/Ac/L3/Power <-- L3 Power used (W)
/Ac/Power <-- AC Power (W)
/AutoStart <-- 0=Charger autostart disabled
1=Charger autostart enabled
/ChargingTime <-- Total charging time (seconds)
/Connected <--
/Current <-- Actual charging current setpoint (A) calculated by the EVCS. This value can be lower than `/SetCurrent`
due to limitations such as overload / overheating protection or max EV cable current. If there are no
limitations, this value will be equal to `/SetCurrent`.
/EnableDisplay <-- Control via display
0=control disabled, 1=control enabled
/MaxCurrent <-- The maximum current (A) the EVCS is allowed to charge the EV with. This is an installer setting, not to be
used for any dynamic control loops.
/Mode <-- 0=Manual
1=Auto
/Model <-- Model, e.g. AC22E or AC22NS (for No Screen)
/Position <--
/Role <--
/SetCurrent <-- Charge current setpoint (A). The current setpoint can only be controlled in "Manual" mode.
This path corresponds to the slider on the LCD screen of the EVCS (for the model with LCD).
/StartStop <--
/Status <-- 0=disconnected, 1=connected, 2=charging, 3=charged,
4=waiting for sun, 5=waiting for RFID, 6=waiting for start,
7=low SOC, 8=ground test error, 9=welded contacts error,
10=CP input test error (shorted), 11=residual current detected,
12=undervoltage detected, 13=overvoltage detected,
14=overheating detected, 15-19=reserved,
20=charging limit
Heatpump
/State -> State of heat pump (enum to be decided later)
/Temperature -> Current water temperature (optional if no temperature reading available)
/TargetTemperature -> Target water temperature (optional if not available)
/Ac/Power -> Power currently consumed
/Ac/Energy/Forward -> Total energy consumed
switch
com.victronenergy.switch
Generic:
/ShowCurrent <-- ES uses this in the GUI to show current in their (custom) control page. - DEPRECATED? SEE BELOW
Stored on the SmartSwitch.
/ShowVoltage <-- ES uses this in the GUI to show voltage in their (custom) control page. - DEPRECATED? SEE BELOW
Stored on the SmartSwitch.
/NrOfChannels <-- the number of channels
/MinFuse <-- Minimum fuse index supported by device, to be used in the GUI for configuration - DEPRECATED? SEE BELOW
/MaxFuse <-- Maximum fuse index supported by device, to be used in the GUI for configuration - DEPRECATED? SEE BELOW
/State <-- Current state of the whole module.
Values offset by 0x100 to allow common state component in QML
0x100 = Connected
0x101 = Over temperature
0x102 = Temperature warning
0x103 = Channel fault
0x104 = Channel Tripped
0x105 = Under Voltage
MANDATORY PATHS PER CHANNEL:
/Channel/x/CustomName <-- the label; Stored on the SmartSwitch
/Channel/x/Function <-- 0 = momentary, 1 = latching, 2 = dimmable; Stored on the SmartSwitch
/Channel/x/State <-- Requested on/off state of channel, separate from dimming.
/Channel/x/Status <-- Channel status
0x00 = Off
0x01 = Input active
0x02 = Tripped
0x04 = Over temperature
0x08 = Active
0x09 = One
0x10 = Short fault
0x20 = Disabled
OPTIONAL PATHS PER CHANNEL:
When the switch doesn't have these features, the path doesn't exist.
/Channel/x/Dimming <-- 0 to 100%, read/write. Optional: path is only on d-bus for dimmable outputs.
/Channel/x/Fuse <-- Channel trip rating; Stored on SmartSwitch.
0 = Invalid
1 = 1A
2 = 2A
3 = 3A
4 = 4A
5 = 5A
6 = 6A
7 = 7.5A
8 = 10A
9 = 15A
10 = 20A
11 = 30A
/Channel/x/Temperature <-- temperature of the switch,
/Channel/x/Voltage <-- voltage of its output
/Channel/x/Current <-- the current in amps. optional
PROPOSED CHANGES:
1. Use /Settings prefix for settings:
/Channel/x/Settings/FuseRating <-- user settable fuse rating
2. Set the fuse level in Amps, with one decimal, instead of an enum
3. Drop the min and max fuse paths, and instead use the min and max items in a dbus setting as per Victron standard.
4. Drop the showvoltage and showcurrent paths? Not sure what this is for. At a minimum they should be optional; and feels like these are better taken as user settings for a gui; ie in a gui have a button that shows/hides these.. ? and is this per channel? or for the whole boat? or ? Or just design a UI that on its default pages don't show these things; and only when tapping an advanced button or something like that.
rvc-xxx
dbus-rv-c makes a com.victronenergy.rvc service. It can be used to see the list of devices found on the canbus (NMT) and update for example their instances.
com.victronenergy.rvc
/Alarms/SameUniqueNameUsed <-- Indicates if the unique identifier from the GX is used by another device on the RV-C network.
/Devices/#/ChargerInstance <-- Charger instance used in CHARGER_* DGNs.
/Devices/#/InverterInstance <-- Inverter instance used in INVERTER_* DGNs.
/Devices/#/Line/0/Instance <-- Line #1 instance used in INVERTER_AC_STATUS_* and CHARGER_AC_STATUS_* DGNs.
0=L1, 1=L2
/Devices/#/Line/1/Instance <-- Line #2 instance used in INVERTER_AC_STATUS_* and CHARGER_AC_STATUS_* DGNs.
0=L1, 1=L2
/Devices/#/DcSource/n/Instance <-- DC source n instance used in DC_SOURCE_STATUS_* DGNs.
/Devices/#/DcSource/n/Priority <-- DC source n priority used in DC_SOURCE_STATUS_* DGNs.
/Devices/#/TankInstance <-- Tank instance used in TANK_STATUS DGN.
platform
The com.victronenergy.platform
dbus service is provided by venus-platform.
One of the things it does is monitor all devices and other services for alarms, warnings, errors and other things that need to be notified to the user.
Its output is a structure on D-Bus of notifications.
This structure is picked from either D-Bus or MQTT by the different UIs.
At this moment, the VRM portal and its alarms/notifications service does not yet use this; but changing that over to this is under exploration.
Detailed documentation:
A notification can be active or no longer active (so for example the voltage is still too high or already recovered), as well as acknowledged or not acknowledged. Together this is a matrix and in total there are four possible combinations.
Different types of notifications:
1) Warning -> example: battery voltage has dropped below a warning level
2) Alarm -> example: battery voltage has dropped further, below the inverter
shutdown level. Inverter has shut down. When there is an alarm, the
device has always shut down.
3) Error -> example: calibration lost; or settings lost. When there is an error, Device has always shut down.
4) Information -> example: Information 66 - Incompatible device, from the mppt solar chargers.
5) Notification -> example: firmware update available, on a GX.
note that this term is especially confusing since now we have a notification
center and a notification type.
Errors vs Alarms:
It is difficult to differentiate between errors and alarms. Alarms are critical situations arising during operation of which the system may be able to recover with or without user intervention. Any parameter which is outside safe operational limits should trigger an alarm, like high voltage, high temperature, etc.
When something is broken or wrongly configured which prevents the system from operating, it should be classified as an error. This usually requires a technician or service engineer to be resolved. Examples are broken or disconnected hardware or cables, missing settings, missing calibrations, etc.
For attention drawing we have defined two levels:
- High: UI switches automatically to the notification center + (when enabled) relay, or buzzer or both are engaged.
- Low: an icon shows indicates to user that there are notifications.
dbus paths
com.victronenergy.platform/Notifications/
AcknowledgeAll <- Send a 1 in here to acknowledge all the not yet acknowledged alarms
Alarm <- 0: Visual and audible attention drawing is not needed. All entries are
either acknowledged or not of the type that requires audible attention.
1: Visual and audible attention drawing needed:
One of more of the notifications is an alarm that is active and not
yet acknowledged. As long as this is the case, the buzzer/relay is
activated (if enabled) and the GUI will automatically switch to
the notifications page.
- gui-v2 uses this to know if it should show a certain icon to the user.
- venus-platform egages buzzer and/or relay if this path is active.
Alert <- 0: Visual attention drawing not needed.
1: Visual attention drawing needed:
One or more of the notifications is not acknowledged. Remains active
until all notifications are acknowledged, even if the alarm/warning
condition is not active anymore.
If 1, the GUI shows the flashing notification triangle. The
buzzer/relay will not be engaged and the GUI does not switch
to the notification page based on this path.
NumberOfActiveNotifications <- Number of active notifications
NumberOfNotifications <- Number of total notifications
[0-19]/Acknowledged <- Acknowledged status
0: not yet acknowledged
1: acknowledged
[0-19]/Active <- Condition that triggered the notification is still active [1] or not [0]
[0-19]/AlarmValue <- Value of the alarm item/trigger
[0-19]/Value <- Value that caused the alarm at the moment the it was triggered, for example,
the temperature on a high temperature alarm or the SOC on a low SOC alarm.
[0-19]/DateTime <- Notification creation date and time
[0-19]/Description <- Description of the alarm/notification, translated to the language selected
in the GUI.
[0-19]/Service <- D-Bus Service name of the product/service that triggered the notification
[0-19]/Trigger <- D-Bus Path that triggered the notification
[0-19]/Type <- Type of notification
0: Warning
1: Alarm
2: Notification <- THIS ONE NEEDS RENAMING AND WHAT ABOUT ERRORS?