mbgw3
This commit is contained in:
@ -11,6 +11,7 @@ import "udi/handlers/handler"
|
|||||||
import "udi/handlers/ttn"
|
import "udi/handlers/ttn"
|
||||||
import "udi/handlers/iot"
|
import "udi/handlers/iot"
|
||||||
import "udi/handlers/pv"
|
import "udi/handlers/pv"
|
||||||
|
import "udi/handlers/mbgw3"
|
||||||
|
|
||||||
|
|
||||||
var handlerMap map[string]handler.Handler = make(map[string]handler.Handler)
|
var handlerMap map[string]handler.Handler = make(map[string]handler.Handler)
|
||||||
@ -31,6 +32,9 @@ func InitDispatcher() {
|
|||||||
case "PV":
|
case "PV":
|
||||||
handlerMap[handlerEntry.Name] = pv.NewPvHandler()
|
handlerMap[handlerEntry.Name] = pv.NewPvHandler()
|
||||||
log.Printf("PV initialized")
|
log.Printf("PV initialized")
|
||||||
|
case "MBGW3":
|
||||||
|
handlerMap[handlerEntry.Name] = mbgw3.NewMbgw3Handler()
|
||||||
|
log.Printf("MBGW3 initialized")
|
||||||
default:
|
default:
|
||||||
log.Fatalf("Handler %s not found", handlerEntry.Name)
|
log.Fatalf("Handler %s not found", handlerEntry.Name)
|
||||||
}
|
}
|
||||||
|
86
src/udi/handlers/mbgw3/mbgw3.go
Normal file
86
src/udi/handlers/mbgw3/mbgw3.go
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
package mbgw3
|
||||||
|
|
||||||
|
import (
|
||||||
|
"log"
|
||||||
|
//"reflect"
|
||||||
|
//"time"
|
||||||
|
"strconv"
|
||||||
|
"encoding/json"
|
||||||
|
"udi/handlers/handler"
|
||||||
|
"udi/database"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
var idSeq int = 0
|
||||||
|
|
||||||
|
type Mbgw3Handler struct {
|
||||||
|
id int
|
||||||
|
dbh *database.DatabaseHandle
|
||||||
|
}
|
||||||
|
|
||||||
|
type Observation struct {
|
||||||
|
Status string `json:"Status"`
|
||||||
|
RequestId string `json:"RequestId"`
|
||||||
|
Device string `json:"Device"`
|
||||||
|
Errors string `json:"Errors"`
|
||||||
|
Requests string `json:"Requests"`
|
||||||
|
Values map[string]string
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
func NewMbgw3Handler() *Mbgw3Handler {
|
||||||
|
t := &Mbgw3Handler {
|
||||||
|
id: idSeq,
|
||||||
|
}
|
||||||
|
idSeq += 1
|
||||||
|
|
||||||
|
t.dbh = database.NewDatabaseHandle("")
|
||||||
|
return t
|
||||||
|
}
|
||||||
|
|
||||||
|
func (self *Mbgw3Handler) Handle(message handler.MessageT) {
|
||||||
|
log.Printf("Handler MBGW3 %d processing %s -> %s", self.id, message.Topic, message.Payload)
|
||||||
|
|
||||||
|
var observation Observation
|
||||||
|
err := json.Unmarshal([]byte(message.Payload), &observation)
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("Unable to parse payload into Observation struct, values are lost: ", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
log.Printf("Parsed observation: %s", observation)
|
||||||
|
|
||||||
|
attributes := make(map[string]string
|
||||||
|
if v, err := strconv.Atoi(observation.RequestId), err == nil {
|
||||||
|
attributes["RequestId"] = v
|
||||||
|
}
|
||||||
|
|
||||||
|
attributes["Errors"] = observation.Errors
|
||||||
|
attributes["Requests"] = observation.Requests
|
||||||
|
|
||||||
|
/*
|
||||||
|
variables := make(map[string]database.VariableType)
|
||||||
|
pvValueStructValue := reflect.ValueOf(pvValue)
|
||||||
|
for i := 0; i < pvValueStructValue.NumField(); i++ {
|
||||||
|
field := pvValueStructValue.Type().Field(i)
|
||||||
|
fieldValue := pvValueStructValue.Field(i)
|
||||||
|
v := database.VariableType {
|
||||||
|
Label: "",
|
||||||
|
Variable: field.Name,
|
||||||
|
Unit: field.Tag.Get("unit"),
|
||||||
|
Value: fieldValue.Interface(),
|
||||||
|
}
|
||||||
|
variables[field.Name] = v
|
||||||
|
}
|
||||||
|
|
||||||
|
measurement := database.Measurement {
|
||||||
|
Time: time.Now(),
|
||||||
|
Application: "PV",
|
||||||
|
Device: "Powermeter",
|
||||||
|
Values: variables,
|
||||||
|
}
|
||||||
|
|
||||||
|
self.dbh.StoreMeasurement(&measurement)
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
|
|
@ -54,7 +54,7 @@ func (self *PvHandler) Handle(message handler.MessageT) {
|
|||||||
var pvValue PvValue
|
var pvValue PvValue
|
||||||
err := json.Unmarshal([]byte(message.Payload), &pvValue)
|
err := json.Unmarshal([]byte(message.Payload), &pvValue)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("Enable to parse payload into pvValue struct, values are lost: ", err)
|
log.Printf("Unable to parse payload into pvValue struct, values are lost: ", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user