From cf648cb9a2097a6e78e477e2e59e95d1bc342a49 Mon Sep 17 00:00:00 2001 From: Joerg Lehmann Date: Sat, 10 Aug 2019 15:38:40 +0200 Subject: [PATCH] fix alert bug, respect alarmactive --- alert.go | 3 ++- lorahandler.go | 4 ++-- persistence.go | 18 ++++++++++++++++++ 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/alert.go b/alert.go index 8c53a78..8345205 100644 --- a/alert.go +++ b/alert.go @@ -39,7 +39,8 @@ func sendSMS(phonenumber string, alertMessage string) { func sendAlert(deveui string, alertMessage string) { fmt.Printf("sendAlert: deveui=%s, message=%s\n", deveui, alertMessage) smsnumber := getSmsnumber(deveui) - if (smsnumber != "") { + alarmactive := getDevAlarmactive(deveui) + if ((smsnumber != "") && (alarmactive == "1")) { // we strip of the leading + smsnumber = strings.Replace(smsnumber, "+", "", -1) sendSMS(smsnumber,alertMessage) diff --git a/lorahandler.go b/lorahandler.go index 4216269..92b5931 100644 --- a/lorahandler.go +++ b/lorahandler.go @@ -168,6 +168,8 @@ func DecodePayload(s string, deveui string, devaddr string, lrrlat float32, lrrl if val, ok := alertMap[deveui]; ok { sendAlert(deveui,val) delete(alertMap,deveui) + // alte Werte loeschen + deleteValues(deveui) } if val2, ok2 := alertLogMap[deveui]; ok2 { WriteStringToFile(val2) @@ -204,8 +206,6 @@ func WriteDatapoint(mytime int64, deveui string, devaddr string, v uint8, h uint alertLogMap[deveui] = fmt.Sprintf("alert,deveui=%s reason=\"swarmalarm\",w=%di,w_loss=%di %d\n",deveui,w_gram,w_loss,mytime*60*1000*1000*1000) location, _ := time.LoadLocation("Europe/Zurich") alertMap[deveui] = fmt.Sprintf("*** Schwarmalarm ***\n%s\n%s\nGewichtsverlust: %d g",getDevAlias(deveui),time.Unix(mytime*60,0).In(location).Format("02.01.2006 15:04"),w_loss) - // alte Werte loeschen - deleteValues(deveui) } } } diff --git a/persistence.go b/persistence.go index 21d6335..f07348b 100644 --- a/persistence.go +++ b/persistence.go @@ -153,6 +153,24 @@ func getDevAlias(deveui string) string { return res } +func getDevAlarmactive(deveui string) string { + res := "0" + + if deveui == "" { + return res + } + + conn := globalPool.Get() + defer conn.Close() + + alarmactive, err := redis.String(conn.Do("HGET", devPrefix+deveui, "alarmactive")) + if err == nil { + res = alarmactive + } + + return res +} + func getSmsnumber(deveui string) string { res := "" if deveui == "" {