New parameter to fetch and send the grid frequency
This commit is contained in:
parent
91f23b4a59
commit
bf1512cf0a
3 changed files with 123 additions and 1 deletions
96
frequency.go
Normal file
96
frequency.go
Normal file
|
@ -0,0 +1,96 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"log"
|
||||
"net/http"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
|
||||
const SwissGridAPI = "https://www.swissgrid.ch/bin/services/apicache?path=/content/swissgrid/fr/home/operation/grid-data/current-data/jcr:content/parsys/livedatawidget_10292"
|
||||
|
||||
type SwissGridItem struct {
|
||||
Id string `json:"id"`
|
||||
Label string `json:"label"`
|
||||
Value string `json:"value"`
|
||||
MergeColumns bool `json:"mergeColumns"`
|
||||
IsLabelBold bool `json:"isLabelBold"`
|
||||
IsValueBold bool `json:"isValueBold"`
|
||||
}
|
||||
type SwissGridMaker struct {
|
||||
Id string `json:"id"`
|
||||
X float64 `json:"x"`
|
||||
Y float64 `json:"y"`
|
||||
Text1 string `json:"text1"`
|
||||
Text2 string `json:"text2"`
|
||||
TextColor string `json:"textColor"`
|
||||
BackgroundColor string `json:"backgroundColor"`
|
||||
BorderColor string `json:"borderColor"`
|
||||
Type string `json:"type"`
|
||||
Direction string `json:"direction"`
|
||||
Rotation *string `json:"rotation"`
|
||||
Opacity float64 `json:"opacity"`
|
||||
FontSizeDesktop string `json:"fontSizeDesktop"`
|
||||
FontSizeTablet string `json:"fontSizeTablet"`
|
||||
FontSizePhone string `json:"fontSizePhone"`
|
||||
}
|
||||
|
||||
type SwissGridData struct {
|
||||
Data struct {
|
||||
Table []SwissGridItem `json:"table"`
|
||||
Marker []SwissGridItem `json:"marker"`
|
||||
} `json:"data"`
|
||||
}
|
||||
|
||||
func FetchFrequency() (*SwissGridData, error) {
|
||||
res, err := http.Get(SwissGridAPI)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer res.Body.Close()
|
||||
|
||||
if res.StatusCode > 299 {
|
||||
return nil, fmt.Errorf("Response failed with status code: %d", res.StatusCode)
|
||||
}
|
||||
|
||||
dec := json.NewDecoder(res.Body)
|
||||
var data SwissGridData
|
||||
err = dec.Decode(&data)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &data, err
|
||||
}
|
||||
|
||||
func WriteFrequency(writer TICWriter, freq *SwissGridData) error {
|
||||
for _, i := range freq.Data.Table {
|
||||
if i.Id == "FreqAct" {
|
||||
f, err := strconv.ParseFloat(strings.Fields(i.Value)[0], 64)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
point := Point{
|
||||
Data: []byte(fmt.Sprintf("%.0f", f*1000)),
|
||||
}
|
||||
|
||||
err = writer.AddPoints(
|
||||
map[string]Point{
|
||||
"FREQ": point,
|
||||
},
|
||||
time.Now(),
|
||||
)
|
||||
if err != nil {
|
||||
log.Println("Unable to write frequency point:", err)
|
||||
}
|
||||
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue