12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- package parser
- import (
- "bufio"
- "encoding/json"
- "fmt"
- "strconv"
- )
- // JSONParser reads the json output
- type JSONParser struct {
- Reader *bufio.Reader
- }
- // {"time" : "2018-04-13 23:04:50", "model" : "Acurite 606TX Sensor", "id" : -5, "battery" : "OK", "temperature_C" : 21.800}
- type jsonPacket struct {
- Time string
- Model string
- ID int
- Battery string
- Temperature_C float64
- }
- // Measure returns the temperature. Null if it can't
- func (jp JSONParser) Measure() (*Measurement, error) {
- text, err := jp.Reader.ReadString('\n')
- if err != nil {
- return nil, err
- }
- buffer := []byte(text)
- if json.Valid(buffer) {
- var jsonPacket jsonPacket
- err = json.Unmarshal(buffer, &jsonPacket)
- if err != nil {
- fmt.Println(err.Error())
- return nil, err
- }
- fmt.Println("temp is " + strconv.FormatFloat(jsonPacket.Temperature_C, 'f', 6, 64))
- return &Measurement{ID: jsonPacket.ID, Temperature: jsonPacket.Temperature_C}, nil
- }
- return nil, nil
- }
|