Browse Source

fix: upnp ui4 counter can have more than 4 bytes

pull/1/head
Nils Decker 9 years ago
parent
commit
1e9df1ecdd
  1. 5
      fritzbox_upnp/service.go
  2. 2
      main.go

5
fritzbox_upnp/service.go

@ -256,11 +256,12 @@ func convertResult(val string, arg *Argument) (interface{}, error) {
return bool(val == "1"), nil return bool(val == "1"), nil
case "ui1", "ui2", "ui4": case "ui1", "ui2", "ui4":
res, err := strconv.ParseUint(val, 10, 32) // type ui4 can contain values greater than 2^32!
res, err := strconv.ParseUint(val, 10, 64)
if err != nil { if err != nil {
return nil, err return nil, err
} }
return uint32(res), nil return uint64(res), nil
default: default:
return nil, fmt.Errorf("unknown datatype: %s", arg.StateVariable.DataType) return nil, fmt.Errorf("unknown datatype: %s", arg.StateVariable.DataType)

2
main.go

@ -199,7 +199,7 @@ func (fc *FritzboxCollector) Collect(ch chan<- prometheus.Metric) {
var floatval float64 var floatval float64
switch tval := val.(type) { switch tval := val.(type) {
case uint32: case uint64:
floatval = float64(tval) floatval = float64(tval)
case bool: case bool:
if tval { if tval {

Loading…
Cancel
Save