From 053c8ae04f28f58f9b1d525a40479b11e868d136 Mon Sep 17 00:00:00 2001
From: Jonas Leder <jonas@jonasled.de>
Date: Mon, 24 Mar 2025 17:42:31 +0100
Subject: [PATCH] save smoke detector battery to database
---
database/tables/smokeDetector.go | 1 +
docs/docs.go | 3 +++
docs/swagger.json | 3 +++
docs/swagger.yaml | 2 ++
mqttclient/mqttmessage.go | 5 +++--
5 files changed, 12 insertions(+), 2 deletions(-)
diff --git a/database/tables/smokeDetector.go b/database/tables/smokeDetector.go
index 0174a22..e0b0460 100644
--- a/database/tables/smokeDetector.go
+++ b/database/tables/smokeDetector.go
@@ -10,4 +10,5 @@ type SmokeDetector struct {
UpdatedAt time.Time
ZigBeeName string `gorm:"unique"`
Name string
+ Battery int
}
diff --git a/docs/docs.go b/docs/docs.go
index fed0925..4951e03 100644
--- a/docs/docs.go
+++ b/docs/docs.go
@@ -291,6 +291,9 @@ const docTemplate = `{
"tables.SmokeDetector": {
"type": "object",
"properties": {
+ "battery": {
+ "type": "integer"
+ },
"createdAt": {
"type": "string"
},
diff --git a/docs/swagger.json b/docs/swagger.json
index c0be2be..e2c0f7e 100644
--- a/docs/swagger.json
+++ b/docs/swagger.json
@@ -282,6 +282,9 @@
"tables.SmokeDetector": {
"type": "object",
"properties": {
+ "battery": {
+ "type": "integer"
+ },
"createdAt": {
"type": "string"
},
diff --git a/docs/swagger.yaml b/docs/swagger.yaml
index b0208cf..737a3c8 100644
--- a/docs/swagger.yaml
+++ b/docs/swagger.yaml
@@ -1,6 +1,8 @@
definitions:
tables.SmokeDetector:
properties:
+ battery:
+ type: integer
createdAt:
type: string
id:
diff --git a/mqttclient/mqttmessage.go b/mqttclient/mqttmessage.go
index 2cc4b83..1c13209 100644
--- a/mqttclient/mqttmessage.go
+++ b/mqttclient/mqttmessage.go
@@ -35,15 +35,16 @@ var messagePubHandlerZ2M mqtt.MessageHandler = func(client mqtt.Client, msg mqtt
var smokeDetector tables.SmokeDetector
topicSplit := strings.Split(msg.Topic(), "/")
deviceName := topicSplit[len(topicSplit)-1]
- tx := database.Db.First(&smokeDetector, "ZigBeeName = ?", deviceName)
+ tx := database.Db.First(&smokeDetector, tables.SmokeDetector{ZigBeeName: deviceName})
if tx.RowsAffected == 0 {
log.Log.Info("Found new smoke detector: ", deviceName)
smokeDetector = tables.SmokeDetector{
ZigBeeName: deviceName,
Name: deviceName,
}
- database.Db.Save(&smokeDetector)
}
+ smokeDetector.Battery = mqttMessage.Battery
+ database.Db.Save(&smokeDetector)
if mqttMessage.Smoke {
log.Log.Infof("Sensor %s reported smoke", smokeDetector.Name)
--
GitLab