feat: implementation of dht11 sensor
This commit is contained in:
		| @@ -31,13 +31,19 @@ var addSensorCmd = &cobra.Command{ | |||||||
| 			log.Fatalln(err) | 			log.Fatalln(err) | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
|  | 		// determine gpio port | ||||||
|  | 		gpio, err := types.StringToGPIO(args[2]) | ||||||
|  | 		if err != nil { | ||||||
|  | 			log.Fatalln(err) | ||||||
|  | 		} | ||||||
|  |  | ||||||
| 		// create new sensor struct | 		// create new sensor struct | ||||||
| 		sensor := &types.Sensor{ | 		sensor := &types.Sensor{ | ||||||
| 			SensorName:     args[0], | 			SensorName:     args[0], | ||||||
| 			SensorModel:    sensorModel, | 			SensorModel:    sensorModel, | ||||||
| 			SensorLocation: location, | 			SensorLocation: location, | ||||||
| 			SensorEnabled:  enabled, | 			SensorEnabled:  enabled, | ||||||
| 			GPIONumber:     &args[2], | 			GPIONumber:     &gpio, | ||||||
| 			WireID:         &wireID, | 			WireID:         &wireID, | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
|   | |||||||
| @@ -11,7 +11,7 @@ import ( | |||||||
| 	"github.com/spf13/cobra" | 	"github.com/spf13/cobra" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| var follow, push bool | var logs bool | ||||||
|  |  | ||||||
| var readTemperatureCmd = &cobra.Command{ | var readTemperatureCmd = &cobra.Command{ | ||||||
| 	Use:     "read", | 	Use:     "read", | ||||||
| @@ -39,10 +39,18 @@ var readTemperatureCmd = &cobra.Command{ | |||||||
|  |  | ||||||
| 		// print temperatures on stdout | 		// print temperatures on stdout | ||||||
| 		cli.PrintTemperatures(temperatures, fc, os.Stdout) | 		cli.PrintTemperatures(temperatures, fc, os.Stdout) | ||||||
|  |  | ||||||
|  | 		if logs { | ||||||
|  | 			err = fc.FileLogger.LogTemperatures(temperatures) | ||||||
|  | 			if err != nil { | ||||||
|  | 				log.Fatalln(err) | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
| 	}, | 	}, | ||||||
| } | } | ||||||
|  |  | ||||||
| func init() { | func init() { | ||||||
| 	temperatureCmd.AddCommand(readTemperatureCmd) | 	temperatureCmd.AddCommand(readTemperatureCmd) | ||||||
| 	readTemperatureCmd.Flags().BoolVarP(&follow, "follow", "f", false, "Follow output") | 	// readTemperatureCmd.Flags().BoolVarP(&follow, "follow", "f", false, "Follow output") | ||||||
|  | 	readTemperatureCmd.Flags().BoolVarP(&logs, "logs", "l", true, "Log temperature") | ||||||
| } | } | ||||||
|   | |||||||
							
								
								
									
										6
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								go.mod
									
									
									
									
									
								
							| @@ -3,6 +3,11 @@ module git.cryptic.systems/fh-trier/go-flucky | |||||||
| go 1.12 | go 1.12 | ||||||
|  |  | ||||||
| require ( | require ( | ||||||
|  | 	github.com/MichaelS11/go-dht v0.0.0-20181004212404-be44b9ee7fec | ||||||
|  | 	github.com/d2r2/go-dht v0.0.0-20181222061613-42fe873fbabb // indirect | ||||||
|  | 	github.com/d2r2/go-logger v0.0.0-20181221090742-9998a510495e // indirect | ||||||
|  | 	github.com/d2r2/go-shell v0.0.0-20181221082743-874cb5c847b3 // indirect | ||||||
|  | 	github.com/davecgh/go-spew v1.1.1 // indirect | ||||||
| 	github.com/inconshreveable/mousetrap v1.0.0 // indirect | 	github.com/inconshreveable/mousetrap v1.0.0 // indirect | ||||||
| 	github.com/kr/pretty v0.1.0 // indirect | 	github.com/kr/pretty v0.1.0 // indirect | ||||||
| 	github.com/satori/go.uuid v1.2.0 | 	github.com/satori/go.uuid v1.2.0 | ||||||
| @@ -10,4 +15,5 @@ require ( | |||||||
| 	github.com/spf13/pflag v1.0.3 // indirect | 	github.com/spf13/pflag v1.0.3 // indirect | ||||||
| 	github.com/yryz/ds18b20 v0.0.0-20180211073435-3cf383a40624 | 	github.com/yryz/ds18b20 v0.0.0-20180211073435-3cf383a40624 | ||||||
| 	gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 // indirect | 	gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 // indirect | ||||||
|  | 	periph.io/x/periph v3.4.0+incompatible // indirect | ||||||
| ) | ) | ||||||
|   | |||||||
							
								
								
									
										12
									
								
								go.sum
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								go.sum
									
									
									
									
									
								
							| @@ -1,3 +1,13 @@ | |||||||
|  | github.com/MichaelS11/go-dht v0.0.0-20181004212404-be44b9ee7fec h1:xMo0OOokExQqY/MRsTz6azUwy0udvlqhkJwQ5jZ6eN4= | ||||||
|  | github.com/MichaelS11/go-dht v0.0.0-20181004212404-be44b9ee7fec/go.mod h1:NTx2rUi8kfs8Qk9Fotoyf/3lQnKBdc2mhyZqO4AhVLI= | ||||||
|  | github.com/d2r2/go-dht v0.0.0-20181222061613-42fe873fbabb h1:kyXaht4l/GxAWx0ubvha2QyVrtOgIx071o03tF3q60o= | ||||||
|  | github.com/d2r2/go-dht v0.0.0-20181222061613-42fe873fbabb/go.mod h1:AzSqP4S4/6pINOKg3VC79WC7YY3zskQcrXMFzphCry0= | ||||||
|  | github.com/d2r2/go-logger v0.0.0-20181221090742-9998a510495e h1:ZG3JBA6rPRl0xxQ+nNSfO7tor8w+CNCTs05DNJQYbLM= | ||||||
|  | github.com/d2r2/go-logger v0.0.0-20181221090742-9998a510495e/go.mod h1:oA+9PUt8F1aKJ6o4YU1T120i7sgo1T6/1LWEEBy0BSs= | ||||||
|  | github.com/d2r2/go-shell v0.0.0-20181221082743-874cb5c847b3 h1:A30Vp6lwq9bHnh4D7XRHZYOpuJq2/bbMs+B94Y8NeCc= | ||||||
|  | github.com/d2r2/go-shell v0.0.0-20181221082743-874cb5c847b3/go.mod h1:FdrNob+jQ3UkEpNVeZFVn8mW86Aa2wa6U5z0vGQOEXQ= | ||||||
|  | github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= | ||||||
|  | github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= | ||||||
| github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= | github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= | ||||||
| github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= | github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= | ||||||
| github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= | github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= | ||||||
| @@ -15,3 +25,5 @@ github.com/yryz/ds18b20 v0.0.0-20180211073435-3cf383a40624 h1:bePzgtpuLSl+F9aacw | |||||||
| github.com/yryz/ds18b20 v0.0.0-20180211073435-3cf383a40624/go.mod h1:MqFju5qeLDFh+S9PqxYT7TEla8xeW7bgGr/69q3oki0= | github.com/yryz/ds18b20 v0.0.0-20180211073435-3cf383a40624/go.mod h1:MqFju5qeLDFh+S9PqxYT7TEla8xeW7bgGr/69q3oki0= | ||||||
| gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= | gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= | ||||||
| gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | ||||||
|  | periph.io/x/periph v3.4.0+incompatible h1:5gzxE4ryPq52cdqSw0mErR6pyJK8cBF2qdUAcOWh0bo= | ||||||
|  | periph.io/x/periph v3.4.0+incompatible/go.mod h1:EWr+FCIU2dBWz5/wSWeiIUJTriYv9v2j2ENBmgYyy7Y= | ||||||
|   | |||||||
| @@ -1,9 +1,12 @@ | |||||||
| package sensor | package sensor | ||||||
|  |  | ||||||
| import ( | import ( | ||||||
| 	"log" | 	"fmt" | ||||||
|  | 	"time" | ||||||
|  |  | ||||||
| 	"git.cryptic.systems/fh-trier/go-flucky/pkg/types" | 	"git.cryptic.systems/fh-trier/go-flucky/pkg/types" | ||||||
|  | 	"github.com/MichaelS11/go-dht" | ||||||
|  | 	uuid "github.com/satori/go.uuid" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| type DHT11Sensor struct { | type DHT11Sensor struct { | ||||||
| @@ -11,11 +14,63 @@ type DHT11Sensor struct { | |||||||
| } | } | ||||||
|  |  | ||||||
| func (s *DHT11Sensor) ReadHumidity() (*types.Humidity, error) { | func (s *DHT11Sensor) ReadHumidity() (*types.Humidity, error) { | ||||||
| 	log.Println("DHT11 Read Method not yet implemented") | 	err := dht.HostInit() | ||||||
| 	return nil, nil | 	if err != nil { | ||||||
|  | 		return nil, fmt.Errorf("HostInit error: %v", err) | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	gpio, err := types.GPIOToString(*s.GPIONumber) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return nil, err | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	dht, err := dht.NewDHT(gpio, dht.Celsius, "") | ||||||
|  | 	if err != nil { | ||||||
|  | 		return nil, fmt.Errorf("NewDHT error: %v", err) | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	humidityValue, _, err := dht.ReadRetry(11) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return nil, fmt.Errorf("Read error: %v", err) | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	humidity := &types.Humidity{ | ||||||
|  | 		HumidityID:    uuid.NewV4().String(), | ||||||
|  | 		HumidityValue: humidityValue, | ||||||
|  | 		HumidityDate:  time.Now(), | ||||||
|  | 		SensorID:      s.SensorID, | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	return humidity, nil | ||||||
| } | } | ||||||
|  |  | ||||||
| func (s *DHT11Sensor) ReadTemperature() (*types.Temperature, error) { | func (s *DHT11Sensor) ReadTemperature() (*types.Temperature, error) { | ||||||
| 	log.Println("DHT11 Read Method not yet implemented") | 	err := dht.HostInit() | ||||||
| 	return nil, nil | 	if err != nil { | ||||||
|  | 		return nil, fmt.Errorf("HostInit error: %v", err) | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	gpio, err := types.GPIOToString(*s.GPIONumber) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return nil, err | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	dht, err := dht.NewDHT(gpio, dht.Celsius, "") | ||||||
|  | 	if err != nil { | ||||||
|  | 		return nil, fmt.Errorf("NewDHT error: %v", err) | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	_, temperatureValue, err := dht.ReadRetry(11) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return nil, fmt.Errorf("Read error: %v", err) | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	temperature := &types.Temperature{ | ||||||
|  | 		TemperatureID:    uuid.NewV4().String(), | ||||||
|  | 		TemperatureValue: temperatureValue, | ||||||
|  | 		TemperatureDate:  time.Now(), | ||||||
|  | 		SensorID:         s.SensorID, | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	return temperature, nil | ||||||
| } | } | ||||||
|   | |||||||
							
								
								
									
										149
									
								
								pkg/types/gpio.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										149
									
								
								pkg/types/gpio.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,149 @@ | |||||||
|  | package types | ||||||
|  |  | ||||||
|  | import ( | ||||||
|  | 	"fmt" | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | type GPIO string | ||||||
|  |  | ||||||
|  | const ( | ||||||
|  | 	GPIO02 GPIO = "GPIO02" | ||||||
|  | 	GPIO03      = "GPIO03" | ||||||
|  | 	GPIO04      = "GPIO04" | ||||||
|  | 	GPIO05      = "GPIO05" | ||||||
|  | 	GPIO06      = "GPIO06" | ||||||
|  | 	GPIO07      = "GPIO07" | ||||||
|  | 	GPIO08      = "GPIO08" | ||||||
|  | 	GPIO10      = "GPIO10" | ||||||
|  | 	GPIO11      = "GPIO11" | ||||||
|  | 	GPIO12      = "GPIO12" | ||||||
|  | 	GPIO13      = "GPIO13" | ||||||
|  | 	GPIO14      = "GPIO14" | ||||||
|  | 	GPIO15      = "GPIO15" | ||||||
|  | 	GPIO16      = "GPIO16" | ||||||
|  | 	GPIO17      = "GPIO17" | ||||||
|  | 	GPIO18      = "GPIO18" | ||||||
|  | 	GPIO19      = "GPIO19" | ||||||
|  | 	GPIO20      = "GPIO20" | ||||||
|  | 	GPIO21      = "GPIO21" | ||||||
|  | 	GPIO22      = "GPIO22" | ||||||
|  | 	GPIO23      = "GPIO23" | ||||||
|  | 	GPIO24      = "GPIO24" | ||||||
|  | 	GPIO25      = "GPIO25" | ||||||
|  | 	GPIO26      = "GPIO26" | ||||||
|  | 	GPIO27      = "GPIO27" | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | func GPIOToString(gpio GPIO) (string, error) { | ||||||
|  | 	switch gpio { | ||||||
|  | 	case GPIO02: | ||||||
|  | 		return "GPIO02", nil | ||||||
|  | 	case GPIO03: | ||||||
|  | 		return "GPIO03", nil | ||||||
|  | 	case GPIO04: | ||||||
|  | 		return "GPIO04", nil | ||||||
|  | 	case GPIO05: | ||||||
|  | 		return "GPIO05", nil | ||||||
|  | 	case GPIO06: | ||||||
|  | 		return "GPIO06", nil | ||||||
|  | 	case GPIO07: | ||||||
|  | 		return "GPIO07", nil | ||||||
|  | 	case GPIO08: | ||||||
|  | 		return "GPIO08", nil | ||||||
|  | 	case GPIO10: | ||||||
|  | 		return "GPIO10", nil | ||||||
|  | 	case GPIO11: | ||||||
|  | 		return "GPIO11", nil | ||||||
|  | 	case GPIO12: | ||||||
|  | 		return "GPIO12", nil | ||||||
|  | 	case GPIO13: | ||||||
|  | 		return "GPIO13", nil | ||||||
|  | 	case GPIO14: | ||||||
|  | 		return "GPIO14", nil | ||||||
|  | 	case GPIO15: | ||||||
|  | 		return "GPIO15", nil | ||||||
|  | 	case GPIO16: | ||||||
|  | 		return "GPIO16", nil | ||||||
|  | 	case GPIO17: | ||||||
|  | 		return "GPIO17", nil | ||||||
|  | 	case GPIO18: | ||||||
|  | 		return "GPIO18", nil | ||||||
|  | 	case GPIO19: | ||||||
|  | 		return "GPIO19", nil | ||||||
|  | 	case GPIO20: | ||||||
|  | 		return "GPIO20", nil | ||||||
|  | 	case GPIO21: | ||||||
|  | 		return "GPIO21", nil | ||||||
|  | 	case GPIO22: | ||||||
|  | 		return "GPIO22", nil | ||||||
|  | 	case GPIO23: | ||||||
|  | 		return "GPIO23", nil | ||||||
|  | 	case GPIO24: | ||||||
|  | 		return "GPIO24", nil | ||||||
|  | 	case GPIO25: | ||||||
|  | 		return "GPIO25", nil | ||||||
|  | 	case GPIO26: | ||||||
|  | 		return "GPIO26", nil | ||||||
|  | 	case GPIO27: | ||||||
|  | 		return "GPIO27", nil | ||||||
|  | 	default: | ||||||
|  | 		return "", fmt.Errorf("Can not determine gpio %v", gpio) | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func StringToGPIO(gpio string) (GPIO, error) { | ||||||
|  | 	switch gpio { | ||||||
|  | 	case "GPIO02": | ||||||
|  | 		return GPIO02, nil | ||||||
|  | 	case "GPIO03": | ||||||
|  | 		return GPIO03, nil | ||||||
|  | 	case "GPIO04": | ||||||
|  | 		return GPIO04, nil | ||||||
|  | 	case "GPIO05": | ||||||
|  | 		return GPIO05, nil | ||||||
|  | 	case "GPIO06": | ||||||
|  | 		return GPIO06, nil | ||||||
|  | 	case "GPIO07": | ||||||
|  | 		return GPIO07, nil | ||||||
|  | 	case "GPIO08": | ||||||
|  | 		return GPIO08, nil | ||||||
|  | 	case "GPIO10": | ||||||
|  | 		return GPIO10, nil | ||||||
|  | 	case "GPIO11": | ||||||
|  | 		return GPIO11, nil | ||||||
|  | 	case "GPIO12": | ||||||
|  | 		return GPIO12, nil | ||||||
|  | 	case "GPIO13": | ||||||
|  | 		return GPIO13, nil | ||||||
|  | 	case "GPIO14": | ||||||
|  | 		return GPIO14, nil | ||||||
|  | 	case "GPIO15": | ||||||
|  | 		return GPIO15, nil | ||||||
|  | 	case "GPIO16": | ||||||
|  | 		return GPIO16, nil | ||||||
|  | 	case "GPIO17": | ||||||
|  | 		return GPIO17, nil | ||||||
|  | 	case "GPIO18": | ||||||
|  | 		return GPIO18, nil | ||||||
|  | 	case "GPIO19": | ||||||
|  | 		return GPIO19, nil | ||||||
|  | 	case "GPIO20": | ||||||
|  | 		return GPIO20, nil | ||||||
|  | 	case "GPIO21": | ||||||
|  | 		return GPIO21, nil | ||||||
|  | 	case "GPIO22": | ||||||
|  | 		return GPIO22, nil | ||||||
|  | 	case "GPIO23": | ||||||
|  | 		return GPIO23, nil | ||||||
|  | 	case "GPIO24": | ||||||
|  | 		return GPIO24, nil | ||||||
|  | 	case "GPIO25": | ||||||
|  | 		return GPIO25, nil | ||||||
|  | 	case "GPIO26": | ||||||
|  | 		return GPIO26, nil | ||||||
|  | 	case "GPIO27": | ||||||
|  | 		return GPIO27, nil | ||||||
|  | 	default: | ||||||
|  | 		return "", fmt.Errorf("Can not determine gpio %v", gpio) | ||||||
|  | 	} | ||||||
|  | } | ||||||
| @@ -1,7 +1,9 @@ | |||||||
| package types | package types | ||||||
|  |  | ||||||
| import ( | import ( | ||||||
|  | 	"encoding/json" | ||||||
| 	"fmt" | 	"fmt" | ||||||
|  | 	"io" | ||||||
| 	"time" | 	"time" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| @@ -11,7 +13,7 @@ type Sensor struct { | |||||||
| 	SensorName        string      `json:"sensor_name"` | 	SensorName        string      `json:"sensor_name"` | ||||||
| 	SensorLocation    string      `json:"sensor_location"` | 	SensorLocation    string      `json:"sensor_location"` | ||||||
| 	WireID            *string     `json:"wire_id"` | 	WireID            *string     `json:"wire_id"` | ||||||
| 	GPIONumber        *string     `json:"gpio_number"` | 	GPIONumber        *GPIO       `json:"gpio_number"` | ||||||
| 	SensorModel       SensorModel `json:"sensor_model"` | 	SensorModel       SensorModel `json:"sensor_model"` | ||||||
| 	SensorEnabled     bool        `json:"sensor_enabled"` | 	SensorEnabled     bool        `json:"sensor_enabled"` | ||||||
| 	SensorLastContact time.Time   `json:"sensor_last_contact"` | 	SensorLastContact time.Time   `json:"sensor_last_contact"` | ||||||
| @@ -19,6 +21,26 @@ type Sensor struct { | |||||||
| 	CreationDate      time.Time   `json:"creation_date"` | 	CreationDate      time.Time   `json:"creation_date"` | ||||||
| } | } | ||||||
|  |  | ||||||
|  | // JSONDecoder decodes a json into a sensor | ||||||
|  | func (s *Sensor) JSONDecoder(r io.Reader) error { | ||||||
|  | 	decoder := json.NewDecoder(r) | ||||||
|  | 	err := decoder.Decode(s) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return fmt.Errorf("Can not decode sensor from json: %v", err) | ||||||
|  | 	} | ||||||
|  | 	return nil | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func (s *Sensor) JSONEncoder(w io.Writer) error { | ||||||
|  | 	encoder := json.NewEncoder(w) | ||||||
|  | 	encoder.SetIndent("", " ") | ||||||
|  | 	err := encoder.Encode(s) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return fmt.Errorf("Can not encode sensor to json: %v", err) | ||||||
|  | 	} | ||||||
|  | 	return nil | ||||||
|  | } | ||||||
|  |  | ||||||
| func (s *Sensor) Name() string { | func (s *Sensor) Name() string { | ||||||
| 	if s.SensorName != "" { | 	if s.SensorName != "" { | ||||||
| 		return s.SensorName | 		return s.SensorName | ||||||
| @@ -27,25 +49,3 @@ func (s *Sensor) Name() string { | |||||||
| 	} | 	} | ||||||
| 	return s.SensorID | 	return s.SensorID | ||||||
| } | } | ||||||
|  |  | ||||||
| type SensorModel string |  | ||||||
|  |  | ||||||
| const ( |  | ||||||
| 	DHT11   SensorModel = "DHT11" |  | ||||||
| 	DHT22               = "DHT22" |  | ||||||
| 	DS18B20             = "DS18B20" |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| // SelectSensorModel converts a string into a constant |  | ||||||
| func SelectSensorModel(model string) (SensorModel, error) { |  | ||||||
| 	switch model { |  | ||||||
| 	case "DHT11": |  | ||||||
| 		return DHT11, nil |  | ||||||
| 	case "DHT22": |  | ||||||
| 		return DHT22, nil |  | ||||||
| 	case "DS18B20": |  | ||||||
| 		return DS18B20, nil |  | ||||||
| 	default: |  | ||||||
| 		return "", fmt.Errorf("Sensor Model %v currently not supported", model) |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|   | |||||||
							
								
								
									
										25
									
								
								pkg/types/sensor_model.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								pkg/types/sensor_model.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,25 @@ | |||||||
|  | package types | ||||||
|  |  | ||||||
|  | import "fmt" | ||||||
|  |  | ||||||
|  | type SensorModel string | ||||||
|  |  | ||||||
|  | const ( | ||||||
|  | 	DHT11   SensorModel = "DHT11" | ||||||
|  | 	DHT22               = "DHT22" | ||||||
|  | 	DS18B20             = "DS18B20" | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | // SelectSensorModel converts a string into a constant | ||||||
|  | func SelectSensorModel(model string) (SensorModel, error) { | ||||||
|  | 	switch model { | ||||||
|  | 	case "DHT11": | ||||||
|  | 		return DHT11, nil | ||||||
|  | 	case "DHT22": | ||||||
|  | 		return DHT22, nil | ||||||
|  | 	case "DS18B20": | ||||||
|  | 		return DS18B20, nil | ||||||
|  | 	default: | ||||||
|  | 		return "", fmt.Errorf("Sensor Model %v currently not supported", model) | ||||||
|  | 	} | ||||||
|  | } | ||||||
		Reference in New Issue
	
	Block a user