nilan

package module
v0.0.0-...-aa1220f Latest Latest
Warning

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

Go to latest
Published: Feb 17, 2022 License: MIT Imports: 8 Imported by: 2

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Config

type Config struct {
	// NilanAdress is IP address and port of Nilan heatpump. Factory
	// default address is "192.168.5.107:502".
	NilanAddress string
}

Config holds network settings of Nilan heatpump.

func CurrentConfig

func CurrentConfig() Config

CurrentConfig reads NILAN_ADDRESS environment variable and returns configuration. If environment variable is not present, function returns standard config.

func StandardConfig

func StandardConfig() Config

StandardConfig returns factory-default adress of Nilan heatpump

type Controller

type Controller struct {
	Config Config
}

Controller is used for communicating with Nilan CTS700 heatpump over Modbus TCP.

func (*Controller) FetchErrors

func (c *Controller) FetchErrors() (*Errors, error)

func (*Controller) FetchReadings

func (c *Controller) FetchReadings() (*Readings, error)

FetchReadings of Nilan sensors

func (*Controller) FetchRegisterValues

func (c *Controller) FetchRegisterValues(slaveID byte, registers []Register) (map[Register]uint16, error)

FetchRegisterValues from slave

func (*Controller) FetchSettings

func (c *Controller) FetchSettings() (*Settings, error)

FetchSettings of Nilan

func (*Controller) FetchValue

func (c *Controller) FetchValue(slaveID byte, register Register) (uint16, error)

FetchValue from register

func (*Controller) GetDeviceType

func (c *Controller) GetDeviceType() (DeviceType, error)

func (*Controller) SendSettings

func (c *Controller) SendSettings(settings Settings) error

SendSettings of Nilan

func (*Controller) SetRegisterValues

func (c *Controller) SetRegisterValues(slaveID byte, values map[Register]uint16) error

SetRegisterValues on slave

type DeviceType

type DeviceType int
const (
	DeviceTypeAir9 DeviceType = 0
	DeviceTypeGeo  DeviceType = 1
)

type Errors

type Errors struct {
	// Indicates a need of new filters
	OldFilterWarning bool
	// Indicates other problems that must to be checked
	OtherErrors bool
}

type FanSpeed

type FanSpeed uint16

FanSpeed represents Nilan ventilation intensity value in range from 101 (lowest) to 104 (highest).

const (
	// FanSpeedLow represents lowest fan speed aka level 1
	FanSpeedLow FanSpeed = 101
	// FanSpeedNormal represents normal fan speed aka level 2
	FanSpeedNormal FanSpeed = 102
	// FanSpeedHigh represents high fan speed aka level 3
	FanSpeedHigh FanSpeed = 103
	// FanSpeedVeryHigh represents highest fan speed aka level 4
	FanSpeedVeryHigh FanSpeed = 104
)

type Readings

type Readings struct {
	// RoomTemperature in C times 10
	RoomTemperature int
	// OutdoorTemperature in C times 10
	OutdoorTemperature int
	// AverageHumidity (0-100%)
	AverageHumidity int
	// ActualHumidity of air (0-100%)
	ActualHumidity int
	// DHWTankTopTempeature in C times 10
	DHWTankTopTemperature int
	// DHWTankBottomTemperature in C times 10
	DHWTankBottomTemperature int
	// SupplyFlowTemperature in C times 10
	SupplyFlowTemperature int
}

Readings from Nilan sensors

type Register

type Register uint16

Register is address of register on client

const (
	// FanSpeedRegister is ID of register holding desired FanSpeed value
	FanSpeedRegister Register = 20148
	// DesiredRoomTemperatureRegister is ID of register holding desired room temperature in C times 10.
	// Example: 23.5 C is stored as 235.
	DesiredRoomTemperatureRegister Register = 20260
	// MasterTemperatureSensorSettingRegister is ID of register holding either 0 (read temperature from T3)
	// or 1 (read temperature from Text)
	MasterTemperatureSensorSettingRegister Register = 20263
	// T3ExtractAirTemperatureRegister is ID of register holding room temperature value when
	// MasterTemperatureSensorSettingRegister is 0
	T3ExtractAirTemperatureRegister Register = 20286
	// TextRoomTemperatureRegister is ID of register holding room temperature value when
	// MasterTemperatureSensorSettingRegister is 1
	TextRoomTemperatureRegister Register = 20280
	// OutdoorTemperatureRegister is ID of register outdoor temperature
	OutdoorTemperatureRegister Register = 20282
	// AverageHumidityRegister is ID of register holding average humidity value
	AverageHumidityRegister Register = 20164
	// ActualHumidityRegister is ID of register holding actual humidity value
	ActualHumidityRegister Register = 21776
	// DHWTopTankTemperatureRegister is ID of register holding T11 top DHW tank temperature
	DHWTopTankTemperatureRegister Register = 20520
	// DHWBottomTankTemperatureRegister is ID of register holding T11 bottom DHW tank temperature
	DHWBottomTankTemperatureRegister Register = 20522
	// DHWSetPointRegister is ID of register holding desired DHW temperature
	DHWSetPointRegister Register = 20460
	// DHWPauseRegister is ID of register holding DHW pause flag
	DHWPauseRegister Register = 20440
	// DHWPauseDurationRegister is ID of register holding DHW pause duration value
	DHWPauseDurationRegister Register = 20441
	// CentralHeatingPauseRegister is ID of register holding central heating pause flag
	CentralHeatingPauseRegister Register = 20600
	// CentralHeatingPauseDurationRegister is ID of register holding central heating pause duration value
	CentralHeatingPauseDurationRegister Register = 20601
	// CentralHeatingPowerRegister is ID of register holding On/Off value of central heating
	CentralHeatingPowerRegister Register = 20602
	// VentilationModeRegister is ID of register holding ventilation mode value (0, 1 or 2).
	VentilationModeRegister Register = 20120
	// VentilationPauseRegister is ID of register holding ventilation pause flag
	VentilationPauseRegister Register = 20100
	// SetpointSupplyTemperatureRegisterAIR9 is ID of register holding setpoint supply temperature
	// on AIR9 models
	SetpointSupplyTemperatureRegisterAIR9 Register = 20680
	// SetpointSupplyTemperatureRegisterGEO is ID of register holding setpoint supply temperature
	// on GEO models
	SetpointSupplyTemperatureRegisterGEO Register = 20640
	// DeviceTypeGEOReigister is ID of register that holds number 8 on GEO models
	DeviceTypeGEOReigister Register = 21839
	// DeviceTypeAIR9Register is ID of register that holds number 9 on AIR9 models
	DeviceTypeAIR9Register Register = 21899
	// T18ReadingRegisterGEO is ID of register holding T18 supply flow temperature reading
	// on GEO models
	T18ReadingRegisterGEO Register = 20653
	// T18ReadingRegisterAIR9 is ID of register holding T18 supply flow temperature reading
	// on AIR9 models
	T18ReadingRegisterAIR9 Register = 20686
	// EventOutdoorFilterWarningRegister is ID of register holding outdoor filter warning presence value
	EventOutdoorFilterWarningRegister Register = 22507
	// EventExtractFilterWarningRegister is ID of register holding extract filter warning presence value
	EventExtractFilterWarningRegister Register = 22508
	// EventHeaterOverHeatAlarmRegister is ID of register holding overheat alarm presence value
	EventHeaterOverHeatAlarmRegister Register = 22512
	// EventHeaterFrostWarningRegister is ID of register holding frost warning presence value
	EventHeaterFrostWarningRegister Register = 22514
	// EventHeaterFrostLongAlarmRegister is ID of register holding long frost alarm presence value
	EventHeaterFrostLongAlarmRegister Register = 22515
	// EventHeaterFrostAlarmRegister is ID of register holding frost alarm presence value
	EventHeaterFrostAlarmRegister Register = 22516
	// EventFireThermAlarmRegister is ID of register holding brandindgang activation status value
	EventFireThermAlarmRegister Register = 22521
	// EventKlixonWarningRegister is ID of register holding klixon warning presence value
	EventKlixonWarningRegister Register = 22578
	// EventCompressHighPressWarning is ID of register holding high presure warning presence value
	EventCompressHighPressWarning Register = 22579
)

type Settings

type Settings struct {
	// FanSpeed of ventilation
	FanSpeed *FanSpeed
	// DesiredRoomTemperature in C (5-40) times 10
	DesiredRoomTemperature *int
	// DesiredDHWTemperature in C (10-60) times 10
	DesiredDHWTemperature *int
	// DHWProductionPaused tells if DHW is switched temporaty off
	DHWProductionPaused *bool
	// DHWProductionPauseDuration is duration of DHW pause (1-180)
	DHWProductionPauseDuration *int
	// CentralHeatingPaused tells if central heating is switched temporary off
	CentralHeatingPaused *bool
	// CentralHeatingPauseDuration is duration of central heating pause (1-180)
	CentralHeatingPauseDuration *int
	// CentralHeatingIsOn is a power switch for central heating
	CentralHeatingIsOn *bool
	// VentilationMode is either 0 (Auto), 1 (Cooling) or 2 (Heating)
	VentilationMode *int
	// VentilationOnPause is used for stopping ventilation (emergency)
	VentilationOnPause *bool
	// SetpointSupplyTemperature in C (5-50)
	SetpointSupplyTemperature *int
}

Settings of Nilan system

Directories

Path Synopsis
cmd

Jump to

Keyboard shortcuts

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