| 
					
				 | 
			
			
				@@ -0,0 +1,139 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+package main 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	"bufio" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	"flag" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	"fmt" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	"strconv" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	"strings" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	"time" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	influx "github.com/influxdata/influxdb/client/v2" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var db *string 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var username *string 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var password *string 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var host *string 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+func main() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	db = flag.String("db", "temperature", "Influxdb database") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	username = flag.String("user", "", "Username") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	password = flag.String("password", "", "Password") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	host = flag.String("host", "http://localhost", "Host to connect to") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	flag.Parse() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	//reader := bufio.NewReader(os.Stdin) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	reader := bufio.NewReader(strings.NewReader(testString)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	client, err := influx.NewHTTPClient(influx.HTTPConfig{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		Addr:     *host, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		Username: *username, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		Password: *password, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		fmt.Println("Could not connect") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		fmt.Println(err) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	_ = reader 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	for { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		text, err := reader.ReadString('\n') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		fields := strings.Fields(text) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		for i := 0; i < len(fields); i++ { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			fields[i] = strings.ToLower(fields[i]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if len(fields) == 3 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if strings.Compare(fields[0], "temperature:") == 0 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				temp, _ := strconv.ParseFloat(fields[1], 64) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				unit := fields[2] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if strings.Compare(unit, "c") == 0 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					temp = (temp - 32) * (5.0 / 9.0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				fmt.Println("temp is " + strconv.FormatFloat(temp, 'f', 6, 64)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				logTemp(temp, client) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+func logTemp(temp float64, client influx.Client) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	bp, err := influx.NewBatchPoints(influx.BatchPointsConfig{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		Database:  *db, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		Precision: "s", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		fmt.Println("Could not log temperature") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		fmt.Println(err) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	tags := map[string]string{"temperature": "conference-room"} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	fields := map[string]interface{}{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		"temperature": temp, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	pt, err := influx.NewPoint("temperature", tags, fields, time.Now()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		fmt.Println("Could not log temperature") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		fmt.Println(err) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	bp.AddPoint(pt) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	err = client.Write(bp) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		fmt.Println("Could not log temperature") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		fmt.Println(err) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	testString = ` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Registering protocol [1] "Acurite 606TX Temperature Sensor" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Registered 1 out of 101 device decoding protocols 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Found 1 device(s) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+trying device  0:  Realtek, RTL2838UHIDIR, SN: 00000001 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Detached kernel driver 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Found Rafael Micro R820T tuner 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Using device 0: Generic RTL2832U OEM 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Exact sample rate is: 250000.000414 Hz 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+[R82XX] PLL not locked! 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Sample rate set to 250000. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Bit detection level set to 0 (Auto). 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Tuner gain set to Auto. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Reading samples in async mode... 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Tuned to 433920000 Hz. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+2018-04-07 21:51:13 :   Acurite 606TX Sensor    :       -5 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Battery:         OK 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Temperature:     25.3 C 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+2018-04-07 21:51:18 :   Acurite 606TX Sensor    :       -5 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Battery:         OK 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Temperature:     25.3 C 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+2018-04-07 21:51:20 :   Acurite 606TX Sensor    :       -5 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Battery:         OK 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Temperature:     25.3 C 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+2018-04-07 21:51:21 :   Acurite 606TX Sensor    :       -5 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Battery:         OK 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Temperature:     25.3 C 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+2018-04-07 21:51:51 :   Acurite 606TX Sensor    :       -5 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Battery:         OK 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Temperature:     25.7 C 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+2018-04-07 21:52:21 :   Acurite 606TX Sensor    :       -5 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Battery:         OK 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Temperature:     26.2 C 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+2018-04-07 21:52:53 :   Acurite 606TX Sensor    :       -5 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Battery:         OK 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Temperature:     26.3 C 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+2018-04-07 21:53:24 :   Acurite 606TX Sensor    :       -5 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Battery:         OK 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	Temperature:     26.4 C 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+) 
			 |