gy21
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed

This commit is contained in:
Wolfgang Hottgenroth 2024-12-04 12:49:49 +01:00
parent c3dce9faab
commit 95831d5e47
Signed by: wn
GPG Key ID: 18FDFA577A8871AD
2 changed files with 58 additions and 0 deletions

View File

@ -0,0 +1,55 @@
package hottisGy21
import (
//"log"
"fmt"
"bytes"
"encoding/base64"
"encoding/binary"
"udi/database"
)
type hottisGy21Values struct {
Connected uint8
Status uint8
RawHumidity uint16
RawTemperature uint16
}
func Parse(fPort int, _ []byte, frmPayload string, variables *map[string]database.VariableType, attributes *map[string]interface{}, _ *database.Device) error {
if fPort != 2 {
return fmt.Errorf("Unexpected fPort %d", fPort)
}
b, err := base64.StdEncoding.DecodeString(frmPayload)
if err != nil {
return fmt.Errorf("Unable to base64-decode payload: %v", err)
}
var values hottisGy21Values
err = binary.Read(bytes.NewReader(b), binary.LittleEndian, &values)
if err != nil {
return fmt.Errorf("Unable to cast into struct: %v", err)
}
var temperature float32 = -46.85 + 175.72 * (float32(values.RawTemperature) / 65536.0)
var humidity float32 = -6 + 125 * (float32(values.RawHumidity) / 65536.0);
// log.Printf("CO2: %f, Temp: %f, Hum: %f, Status: %d", co2concentration, temperature, humidity, values.Status)
(*variables)["Humidity"] = database.VariableType {
Label: "Humidity",
Variable: "Humidity",
Unit: "%",
Value: humidity,
}
(*variables)["Temperature"] = database.VariableType {
Label: "Temperature",
Variable: "Temperature",
Unit: "°C",
Value: temperature,
}
(*attributes)["Status"] = values.Status
return nil
}

View File

@ -14,6 +14,7 @@ import (
"udi/handlers/ttn/models/draginoLsn50" "udi/handlers/ttn/models/draginoLsn50"
"udi/handlers/ttn/models/rawPayloadPrinter" "udi/handlers/ttn/models/rawPayloadPrinter"
"udi/handlers/ttn/models/hottisScd30" "udi/handlers/ttn/models/hottisScd30"
"udi/handlers/ttn/models/hottisGy21
"udi/handlers/ttn/models/hottisThreeWayThermometer" "udi/handlers/ttn/models/hottisThreeWayThermometer"
"udi/database" "udi/database"
) )
@ -153,6 +154,8 @@ func (self *TTNHandler) Handle(message handler.MessageT) {
parser = rawPayloadPrinter.Parse parser = rawPayloadPrinter.Parse
case "hottis-scd30": case "hottis-scd30":
parser = hottisScd30.Parse parser = hottisScd30.Parse
case "hottis-gy21":
parser = hottisGy21.Parse
case "hottis-threeway-thermometer": case "hottis-threeway-thermometer":
parser = hottisThreeWayThermometer.Parse parser = hottisThreeWayThermometer.Parse
default: default: