config

package
v0.0.0-...-3867a70 Latest Latest
Warning

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

Go to latest
Published: Oct 7, 2023 License: MIT Imports: 19 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Config

type Config struct {
	// Metadata
	NodeName       string `env:"NODE_NAME" envDefault:"bedroom"`
	LogLevelStr    string `env:"LOG_LEVEL" envDefault:"debug"`
	LogLevel       log.Level
	Logger         *log.Logger
	WakeupDuration time.Duration `env:"WAKEUP_DURATION" envDefault:"30m"`

	// InfluxDB
	InfluxHost       string `env:"INFLUX_HOST"`
	InfluxToken      string `env:"INFLUXDB_TOKEN"`
	InfluxOrg        string `env:"INFLUXDB_ORG"`
	InfluxBucket     string `env:"INFLUXDB_BUCKET"`
	InfluxBufferSize int    `env:"INFLUXDB_BUFFER_LEN"`

	// RF Remote Control
	RadioWaitTimeout   time.Duration `env:"RF_WAIT_TIMEOUT" envDefault:"1s"`
	RadioLatchResetPin string        `env:"RF_LATCH_RESET_PIN" envDefault:"GPIO17"`
	RadioChannelAPin   string        `env:"RF_CHANNEL_A_PIN" envDefault:"GPIO23"`
	RadioChannelBPin   string        `env:"RF_CHANNEL_B_PIN" envDefault:"GPIO25"`
	RadioChannelCPin   string        `env:"RF_CHANNEL_C_PIN" envDefault:"GPIO8"`
	RadioChannelDPin   string        `env:"RF_CHANNEL_D_PIN" envDefault:"GPIO24"`

	// Sensors
	PollInterval  time.Duration `env:"POLL_INTERVAL" envDefault:"5s"`
	AM2302Enabled bool          `env:"AM2302_ENABLED" envDefault:"false"`
	AM2302PinName string        `env:"AM2302" envDefault:"GPIO16"`
	AM2302Sensor  *dht.DHT
	SDS011Enabled bool   `env:"SDS011_ENABLED" envDefault:"false"`
	SDS011Txd     string `env:"SDS011_TXD" envDefault:"GPIO14"`
	SDS011Rxd     string `env:"SDS011_RXD" envDefault:"GPIO15"`
	SDSSerialPath string `env:"SDS_SERIAL_PATH" envDefault:"/dev/ttyAMA0"`
	SDSSensor     *sds011.Sensor

	// Thermocouple
	Thermocouple1Enabled bool   `env:"THERMO1_ENABLED" envDefault:"false"`
	Thermocouple1Bus     string `env:"THERMO1_BUS" envDefault:"/dev/spidev0.1"`
	Thermocouple1CLKPin  string `env:"THERMO1_CLK" envDefault:"GPIO0"`
	Thermocouple1CSPin   string `env:"THERMO1_CS" envDefault:"GPIO5"`
	Thermocouple1MISOPin string `env:"THERMO1_MISO" envDefault:"GPIO0"`
	Thermocouple1        *max31855.Dev

	// Water Sensors
	WaterSensor1Enabled bool   `env:"WATER1_ENABLED" envDefault:"false"`
	WaterSensor1Pin     string `env:"WATER1_PIN" envDefault:"GPIO0"`
	WaterSensor1        gpio.PinIn
	WaterSensor2Enabled bool   `env:"WATER2_ENABLED" envDefault:"false"`
	WaterSensor2Pin     string `env:"WATER2_PIN" envDefault:"GPIO5"`
	WaterSensor2        gpio.PinIn

	// LED Light Strip
	LedStripEnabled    bool   `env:"LED_STRIP_ENABLED" envDefault:"true"`
	LedControlRed      string `env:"LED_CTRL_RED" envDefault:"GPIO2"`
	LedControlRedPin   gpio.PinOut
	LedControlGreen    string `env:"LED_CTRL_GREEN" envDefault:"GPIO3"`
	LedControlGreenPin gpio.PinOut
	LedControlWhite    string `env:"LED_CTRL_WHITE" envDefault:"GPIO4"`
	LedControlWhitePin gpio.PinOut
	LedControlBlue     string `env:"LED_CTRL_BLUE" envDefault:"GPIO18"`
	LedControlBluePin  gpio.PinOut

	// Control Panels
	ControlPanelsAdcClk int `env:"ADC1_CLK" envDefault:"5"` // Pin 29 / GPIO5
	//ControlPanelsAdcClkPin  gpio.PinIO
	ControlPanelsAdcCsz int `env:"ADC1_CSZ" envDefault:"21"` // Pin 40 / GPIO21
	//ControlPanelsAdcCszPin  gpio.PinIO
	ControlPanelsAdcDin int `env:"ADC1_DI" envDefault:"20"` // Pin 38 / GPIO20
	//ControlPanelsAdcDinPin  gpio.PinIO
	ControlPanelsAdcDout int `env:"ADC1_DO" envDefault:"19"` // Pin 35 / GPIO19
	//ControlPanelsAdcDoutPin gpio.PinIO
	GPIOChip         *gpiod.Chip
	ControlPanelsAdc *mcp3w0c.MCP3w0c

	Panel1Enabled        bool   `env:"PANEL1_ENABLED" envDefault:"false"`
	Panel1DimmerChannel  int    `env:"PANEL1_DIMMER_CHANNEL" envDefault:"0"`
	Panel1Pager          string `env:"PANEL1_PAGER" envDefault:"GPIO8"`
	Panel1PagerPin       gpio.PinIn
	Panel1LightSwitch    string `env:"PANEL1_LIGHTS" envDefault:"GPIO25"`
	Panel1LightSwitchPin gpio.PinIn
	Panel1LED            string `env:"PANEL1_LED" envDefault:"GPIO26"`
	Panel1LEDPin         gpio.PinOut
	Panel1Speaker        string `env:"PANEL1_SPEAKER" envDefault:"GPIO12"`
	Panel1SpeakerPin     gpio.PinOut
	Panel1Reset          string `env:"PANEL1_RESET" envDefault:"GPIO7"`
	Panel1ResetPin       gpio.PinOut

	Panel2Enabled        bool   `env:"PANEL2_ENABLED" envDefault:"false"`
	Panel2DimmerChannel  int    `env:"PANEL2_DIMMER_CHANNEL" envDefault:"1"`
	Panel2Pager          string `env:"PANEL2_PAGER" envDefault:"GPIO9"`
	Panel2PagerPin       gpio.PinIn
	Panel2LightSwitch    string `env:"PANEL2_LIGHTS" envDefault:"GPIO11"`
	Panel2LightSwitchPin gpio.PinIn
	Panel2LED            string `env:"PANEL2_LED" envDefault:"GPIO6"`
	Panel2LEDPin         gpio.PinOut
	Panel2Speaker        string `env:"PANEL2_SPEAKER" envDefault:"GPIO13"`
	Panel2SpeakerPin     gpio.PinOut
	Panel2Reset          string `env:"PANEL2_RESET" envDefault:"GPIO10"`
	Panel2ResetPin       gpio.PinOut
	// contains filtered or unexported fields
}

func New

func New() *Config

func (*Config) GetInfluxDB

func (cfg *Config) GetInfluxDB() api.WriteAPIBlocking

func (*Config) HaltPins

func (cfg *Config) HaltPins()

HaltPins will call pin.Halt on all pins used for PWM output. This function must be called before the program exits, or else the Raspberry Pi must be reset before PWM can be used again.

func (*Config) HaltThermocouples

func (cfg *Config) HaltThermocouples()

func (*Config) HaltWaterSensors

func (cfg *Config) HaltWaterSensors()

func (*Config) InitPins

func (cfg *Config) InitPins()

func (*Config) InitSensors

func (cfg *Config) InitSensors()

func (*Config) InitThermocouples

func (cfg *Config) InitThermocouples() error

func (*Config) InitWaterSensors

func (cfg *Config) InitWaterSensors() error

Jump to

Keyboard shortcuts

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