victron

package
v1.8.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 20, 2023 License: MIT Imports: 7 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var RegisterListBmv700 = dataflow.FilterRegisters(
	RegisterListBmv,
	[]string{
		"AuxVoltage",
		"Temperature",
		"MidPointVoltage",
		"MidPointVoltageDeviation",
		"AuxVoltageMinimum",
		"AuxVoltageMaximum",
	},
	[]string{},
)
View Source
var RegisterListBmv702 = dataflow.FilterRegisters(
	RegisterListBmv,
	[]string{
		"ProductRevision",
		"Description",
	},
	[]string{},
)
View Source
var RegisterListBmv712 = dataflow.FilterRegisters(
	RegisterListBmv,
	[]string{
		"ProductRevision",
		"Description",
	},
	[]string{},
)
View Source
var RegisterListBmvHistoric = dataflow.Registers{
	dataflow.CreateNumberRegisterStruct(
		"Historic",
		"DepthOfTheDeepestDischarge",
		"Depth of the deepest discharge",
		0x0300,
		false,
		true,
		10,
		"Ah",
	), dataflow.CreateNumberRegisterStruct(
		"Historic",
		"DepthOfTheLastDischarge",
		"Depth of the last discharge",
		0x0301,
		false,
		true,
		10,
		"Ah",
	), dataflow.CreateNumberRegisterStruct(
		"Historic",
		"DepthOfTheAverageDischarge",
		"Depth of the average discharge",
		0x0302,
		false,
		true,
		10,
		"Ah",
	), dataflow.CreateNumberRegisterStruct(
		"Historic",
		"NumberOfCycles",
		"Number of cycles",
		0x0303,
		false,
		false,
		1,
		"",
	), dataflow.CreateNumberRegisterStruct(
		"Historic",
		"NumberOfFullDischarges",
		"Number of full discharges",
		0x0304,
		false,
		false,
		1,
		"",
	), dataflow.CreateNumberRegisterStruct(
		"Historic",
		"CumulativeAmpHours",
		"Cumulative amp hours",
		0x0305,
		false,
		true,
		10,
		"Ah",
	), dataflow.CreateNumberRegisterStruct(
		"Historic",
		"MainVoltageMinimum",
		"Minimum voltage",
		0x0306,
		false,
		false,
		100,
		"V",
	), dataflow.CreateNumberRegisterStruct(
		"Historic",
		"MainVoltageMaximum",
		"Maximum voltage",
		0x0307,
		false,
		false,
		100,
		"V",
	), dataflow.CreateNumberRegisterStruct(
		"Historic",
		"TimeSinceFullCharge",
		"Time since full charge",
		0x0308,
		false,
		false,
		1,
		"s",
	), dataflow.CreateNumberRegisterStruct(
		"Historic",
		"NumberOfAutomaticSynchronizations",
		"Number of automatic synchronizations",
		0x0309,
		false,
		false,
		1,
		"",
	), dataflow.CreateNumberRegisterStruct(
		"Historic",
		"NumberOfLowMainVoltageAlarms",
		"Number of low voltage alarms",
		0x030A,
		false,
		false,
		1,
		"",
	), dataflow.CreateNumberRegisterStruct(
		"Historic",
		"NumberOfHighMainVoltageAlarms",
		"Number of high voltage alarms",
		0x030B,
		false,
		false,
		1,
		"",
	), dataflow.CreateNumberRegisterStruct(
		"Historic",
		"AuxVoltageMinimum",
		"Minimum starter voltage",
		0x030E,
		false,
		true,
		100,
		"V",
	), dataflow.CreateNumberRegisterStruct(
		"Historic",
		"AuxVoltageMaximum",
		"Maximum starter voltage",
		0x030F,
		false,
		true,
		100,
		"V",
	), dataflow.CreateNumberRegisterStruct(
		"Historic",
		"AmountOfDischargedEnergy",
		"Amount of discharged energy",
		0x0310,
		false,
		false,
		100,
		"kWh",
	), dataflow.CreateNumberRegisterStruct(
		"Historic",
		"AmountOfChargedEnergy",
		"Amount of charged energy",
		0x0311,
		false,
		false,
		100,
		"kWh",
	),
}
View Source
var RegisterListBmvMonitor = dataflow.Registers{
	dataflow.CreateNumberRegisterStruct(
		"Essential",
		"Power",
		"Power",
		0xED8E,
		false,
		true,
		1,
		"W",
	), dataflow.CreateNumberRegisterStruct(
		"Essential",
		"CurrentHighRes",
		"Current",
		0xED8C,
		false,
		true,
		1000,
		"A",
	),
	dataflow.CreateNumberRegisterStruct(
		"Essential",
		"MainVoltage",
		"Main voltage",
		0xED8D,
		false,
		true,
		100,
		"V",
	),
	dataflow.CreateNumberRegisterStruct(
		"Monitor",
		"AuxVoltage",
		"Aux (starter) voltage",
		0xED7D,
		false,
		false,
		100,
		"V",
	),
	dataflow.CreateNumberRegisterStruct(
		"Monitor",
		"Consumed",
		"Consumed",
		0xEEFF,
		false,
		true,
		10,
		"Ah",
	), dataflow.CreateNumberRegisterStruct(
		"Essential",
		"SOC",
		"State of charge",
		0x0FFF,
		false,
		false,
		100,
		"%",
	), dataflow.CreateNumberRegisterStruct(
		"Monitor",
		"TTG",
		"Time to go",
		0x0FFE,
		false,
		false,
		1,
		"min",
	), dataflow.CreateNumberRegisterStruct(
		"Monitor",
		"Temperature",
		"Temperature",
		0xEDEC,
		false,
		false,
		100,
		"K",
	), dataflow.CreateNumberRegisterStruct(
		"Monitor",
		"MidPointVoltage",
		"Mid-point voltage",
		0x0382,
		false,
		false,
		100,
		"V",
	), dataflow.CreateNumberRegisterStruct(
		"Monitor",
		"MidPointVoltageDeviation",
		"Mid-point voltage deviation",
		0x0383,
		false,
		true,
		10,
		"%",
	), dataflow.CreateEnumRegisterStruct(
		"Monitor",
		"SynchronizationState",
		"Synchronization state",
		0xEEB6,
		false,
		map[int]string{
			0: "false",
			1: "true",
		},
	),
}
View Source
var RegisterListBmvProduct = dataflow.Registers{
	dataflow.CreateNumberRegisterStruct(
		"Product",
		"ProductId",
		"Product id",
		0x0100,
		true,
		false,
		1,
		"",
	),
	dataflow.CreateNumberRegisterStruct(
		"Product",
		"ProductRevision",
		"Product revision",
		0x0101,
		true,
		false,
		1,
		"",
	),
	dataflow.CreateTextRegisterStruct(
		"Product",
		"SerialNumber",
		"Serial number",
		0x010A,
		true,
	),
	dataflow.CreateTextRegisterStruct(
		"Product",
		"ModelName",
		"Model name",
		0x010B,
		true,
	),
	dataflow.CreateTextRegisterStruct(
		"Product",
		"Description",
		"Description",
		0x010C,
		true,
	),
	dataflow.CreateNumberRegisterStruct(
		"Product",
		"Uptime",
		"Device uptime",
		0x0120,
		false,
		false,
		1,
		"s",
	),
}
View Source
var RegisterListSolarChargerData = dataflow.Registers{
	dataflow.CreateNumberRegisterStruct(
		"Charger",
		"BatteryTemperature",
		"Battery temperature",
		0xEDEC,
		false,
		false,
		100,
		"K",
	),
	dataflow.CreateNumberRegisterStruct(
		"Charger",
		"ChargerMaximumCurrent",
		"Charger maximum current",
		0xEDDF,
		false,
		false,
		10,
		"A",
	),
	dataflow.CreateNumberRegisterStruct(
		"Charger",
		"SystemYield",
		"System yield",
		0xEDDD,
		false,
		false,
		100,
		"kWh",
	),
	dataflow.CreateNumberRegisterStruct(
		"Charger",
		"SystemYieldResettable",
		"System yield (resettable)",
		0xEDDC,
		false,
		false,
		100,
		"kWh",
	),
	dataflow.CreateNumberRegisterStruct(
		"Charger",
		"ChargerInternalTemperature",
		"Charger internal temperature",
		0xEDDB,
		false,
		true,
		100,
		"C",
	),
	dataflow.CreateEnumRegisterStruct(
		"Generic",
		"ChargerErrorCode",
		"Charger error",
		0xEDDA,
		false,
		map[int]string{
			0:   "No error",
			2:   "Battery voltage too high",
			17:  "Charger internal temperature too high",
			18:  "Charger excessive output current",
			19:  "Charger current polarity reversed",
			20:  "Charger bulk time expired (when 10 hour bulk time protection active)",
			21:  "Charger current sensor issue (bias not within expected limits during off state)",
			26:  "Charger terminals overheated",
			28:  "Converter issue (dual converter models, one of the converters is not working)",
			33:  "Input voltage too high",
			34:  "Input excessive current",
			38:  "Input shutdown (due to excessive battery voltage)",
			39:  "Input shutdown (current flowing while the converter is switched off)",
			66:  "Incompatible device in the network (for synchronized charging)",
			67:  "BMS connection lost",
			68:  "Network misconfigured (e.g. combining ESS with ve.smart networking)",
			116: "Calibration data lost",
			117: "Incompatible firmware (i.e. not for this model)",
			119: "Settings data invalid / corrupted (use restore to defaults and set to recover)",
		},
	),
	dataflow.CreateNumberRegisterStruct(
		"Essential",
		"ChargerCurrent",
		"Charger current",
		0xEDD7,
		false,
		false,
		10,
		"A",
	),
	dataflow.CreateNumberRegisterStruct(
		"Essential",
		"ChargerVoltage",
		"Charger voltage",
		0xEDD5,
		false,
		false,
		100,
		"V",
	),

	dataflow.CreateNumberRegisterStruct(
		"Essential",
		"YieldToday",
		"Yield today",
		0xEDD3,
		false,
		false,
		100,
		"kWh",
	),
	dataflow.CreateNumberRegisterStruct(
		"Charger",
		"MaximumPowerToday",
		"Maximum power today",
		0xEDD2,
		false,
		false,
		1,
		"W",
	),
	dataflow.CreateNumberRegisterStruct(
		"Charger",
		"YieldYesterday",
		"Yield yesterday",
		0xEDD1,
		false,
		false,
		100,
		"kWh",
	),
	dataflow.CreateNumberRegisterStruct(
		"Charger",
		"MaximumPowerYesterday",
		"Maximum power yesterday",
		0xEDD0,
		false,
		false,
		1,
		"W",
	),
}
View Source
var RegisterListSolarGeneric = dataflow.Registers{
	dataflow.CreateEnumRegisterStruct(
		"Generic",
		"DeviceMode",
		"Device mode",
		0x0200,
		false,
		map[int]string{
			0: "Charger off",
			4: "Charger off",
			1: "Charger on",
		},
	),
	dataflow.CreateEnumRegisterStruct(
		"Essential",
		"DeviceState",
		"Device state",
		0x0201,
		false,
		map[int]string{
			0:   "Not charging",
			2:   "Fault",
			3:   "Bulk Charging",
			4:   "Absorption Charging",
			5:   "Float Charging",
			7:   "Manual Equalise",
			245: "Wake-Up",
			247: "Auto  Equalise",
			252: "External Control",
			255: "Unavailable",
		},
	),
}
View Source
var RegisterListSolarPanelData = dataflow.Registers{
	dataflow.CreateNumberRegisterStruct(
		"Essential",
		"PanelPower",
		"Panel power",
		0xEDBC,
		false,
		false,
		100,
		"W",
	),
	dataflow.CreateNumberRegisterStruct(
		"Panel",
		"PanelVoltage",
		"Panel voltage",
		0xEDBB,
		false,
		false,
		100,
		"V",
	),
	dataflow.CreateNumberRegisterStruct(
		"Panel",
		"PanelCurrent",
		"Panel current",
		0xEDBD,
		false,
		false,
		10,
		"A",
	),
	dataflow.CreateNumberRegisterStruct(
		"Panel",
		"PanelMaximumVoltage",
		"Panel maximum voltage",
		0xEDB8,
		true,
		false,
		100,
		"V",
	),
	dataflow.CreateEnumRegisterStruct(
		"Panel",
		"TrackerMode",
		"Tracker mode",
		0xEDB3,
		false,
		map[int]string{
			0: "off",
			1: "voltage/current limited",
			2: "MPP tracker",
		},
	),
}
View Source
var RegisterListSolarProduct = dataflow.Registers{
	dataflow.CreateNumberRegisterStruct(
		"Product",
		"ProductId",
		"Product id",
		0x0100,
		true,
		false,
		1,
		"",
	),
	dataflow.CreateNumberRegisterStruct(
		"Product",
		"GroupId",
		"Group id",
		0x0104,
		true,
		false,
		1,
		"",
	),
	dataflow.CreateTextRegisterStruct(
		"Product",
		"SerialNumber",
		"Serial number",
		0x010A,
		true,
	),
	dataflow.CreateTextRegisterStruct(
		"Product",
		"ModelName",
		"Model name",
		0x010B,
		true,
	),
}
View Source
var RegisterListSolarSettings = dataflow.Registers{
	dataflow.CreateEnumRegisterStruct(
		"Settings",
		"AdaptiveMode",
		"Adaptive mode",
		0xEDFE,
		true,
		map[int]string{
			0: "off",
			1: "on",
		},
	),
	dataflow.CreateNumberRegisterStruct(
		"Settings",
		"AutomaticEqualisationMode",
		"Automatic equalisation mode",
		0xEDFD,
		true,
		false,
		1,
		"",
	),
	dataflow.CreateNumberRegisterStruct(
		"Settings",
		"BatteryAbsorptionTimeLimit",
		"Battery absorption time limit",
		0xEDFB,
		true,
		false,
		100,
		"h",
	),
	dataflow.CreateNumberRegisterStruct(
		"Settings",
		"BatteryAbsorptionVoltage",
		"Battery absorption voltage",
		0xEDF7,
		true,
		false,
		100,
		"V",
	),
	dataflow.CreateNumberRegisterStruct(
		"Settings",
		"BatteryFloatVoltage",
		"Battery float voltage",
		0xEDF6,
		true,
		false,
		100,
		"V",
	),
	dataflow.CreateNumberRegisterStruct(
		"Settings",
		"BatteryEqualisationVoltage",
		"Battery equalisation voltage",
		0xEDF4,
		true,
		false,
		100,
		"V",
	),
	dataflow.CreateNumberRegisterStruct(
		"Settings",
		"BatteryTempCompensation",
		"Battery temperature compensation",
		0xEDF2,
		true,
		true,
		100,
		"mV/K",
	),
	dataflow.CreateEnumRegisterStruct(
		"Settings",
		"BatteryType",
		"Battery type",
		0xEDF1,
		false,
		map[int]string{
			1:   "Gel Victron Long Life (14.1V)",
			2:   "Gel Victron Deep discharge (14.3V)",
			3:   "Gel Victron Deep discharge (14.4V)",
			4:   "AGM Victron Deep discharge (14.7V)",
			5:   "Tubular plate cyclic mode 1 (14.9V)",
			6:   "Tubular plate cyclic mode 2 (15.1V)",
			7:   "Tubular plate cyclic mode 3 (15.3V)",
			8:   "LiFEPO4 (14.2V)",
			255: "User defined",
		},
	),
	dataflow.CreateNumberRegisterStruct(
		"Settings",
		"BatteryMaximumCurrent",
		"Battery maximum current",
		0xEDF0,
		true,
		false,
		10,
		"A",
	),
	dataflow.CreateNumberRegisterStruct(
		"Settings",
		"BatteryVoltage",
		"Battery voltage",
		0xEDEF,
		true,
		false,
		1,
		"V",
	),
	dataflow.CreateNumberRegisterStruct(
		"Settings",
		"BatteryTemperature",
		"Battery temperature",
		0xEDEC,
		true,
		false,
		100,
		"K",
	),
	dataflow.CreateEnumRegisterStruct(
		"Settings",
		"BatteryVoltageSetting",
		"Battery voltage setting",
		0xEDEA,
		false,
		map[int]string{
			0:  "Auto detection at startup",
			12: "12V battery",
			24: "24V battery",
			36: "36V battery",
			48: "48V battery",
		},
	),
	dataflow.CreateEnumRegisterStruct(
		"Settings",
		"BmsPresent",
		"BMS present",
		0xEDE8,
		false,
		map[int]string{
			0: "no",
			1: "yes",
		},
	),
	dataflow.CreateNumberRegisterStruct(
		"Settings",
		"TailCurrent",
		"Tail current",
		0xEDE7,
		true,
		false,
		10,
		"A",
	),
	dataflow.CreateNumberRegisterStruct(
		"Settings",
		"LowTempCurrent",
		"Low temperature charge current",
		0xEDE6,
		true,
		false,
		10,
		"A",
	),
	dataflow.CreateEnumRegisterStruct(
		"Settings",
		"AutoEqualiseStop",
		"Auto equalise stop on voltage",
		0xEDE5,
		false,
		map[int]string{
			0: "no",
			1: "yes",
		},
	),
	dataflow.CreateNumberRegisterStruct(
		"Settings",
		"EqualisationCurrentLevel",
		"Equalisation current level",
		0xEDE4,
		true,
		false,
		1,
		"%",
	),
	dataflow.CreateNumberRegisterStruct(
		"Settings",
		"EqualisationDuration",
		"Equalisation duration",
		0xEDE3,
		true,
		false,
		100,
		"h",
	),
	dataflow.CreateNumberRegisterStruct(
		"Settings",
		"ReBulkVoltageOffset",
		"Re-bulk voltage offset",
		0xED2E,
		true,
		false,
		100,
		"V",
	),
	dataflow.CreateNumberRegisterStruct(
		"Settings",
		"BatteryLowTemperatureLevel",
		"Battery low temperature level",
		0xEDE0,
		true,
		true,
		100,
		"C",
	),
}
View Source
var RegisterPhoenixInverter = dataflow.Registers{}
View Source
var RegisterPhoenixSmartCharger = dataflow.Registers{}

Functions

func CreateVictronDevice

func CreateVictronDevice(deviceStruct device.DeviceStruct, output chan dataflow.Value) (device device.Device, err error)

func RegisterFactoryByProduct

func RegisterFactoryByProduct(product vedirect.VeProduct) dataflow.Registers

Types

type VictronDeviceStruct

type VictronDeviceStruct struct {
	device.DeviceStruct
	// contains filtered or unexported fields
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL