aded sensor name and timestamp of last data to notification

This commit is contained in:
avollkopf 2023-01-23 07:15:29 +01:00
parent 85490cebc8
commit 9e50b790e0
3 changed files with 13 additions and 3 deletions

View file

@ -1,3 +1,3 @@
__version__ = "4.1.0.rc4" __version__ = "4.1.0.rc5"
__codename__ = "Groundhog Day" __codename__ = "Groundhog Day"

View file

@ -3,6 +3,7 @@ import asyncio
from aiohttp import web from aiohttp import web
from cbpi.api import * from cbpi.api import *
import time import time
from datetime import datetime
import re import re
import logging import logging
from cbpi.api.dataclasses import NotificationAction, NotificationType from cbpi.api.dataclasses import NotificationAction, NotificationType
@ -21,6 +22,8 @@ class HTTPSensor(CBPiSensor):
self.starttime = time.time() self.starttime = time.time()
self.notificationsend = False self.notificationsend = False
self.nextchecktime=self.starttime+self.timeout self.nextchecktime=self.starttime+self.timeout
self.sensor=self.get_sensor(self.id)
self.lastdata=time.time()
async def Confirm(self, **kwargs): async def Confirm(self, **kwargs):
self.nextchecktime = time.time() + self.timeout self.nextchecktime = time.time() + self.timeout
@ -28,7 +31,8 @@ class HTTPSensor(CBPiSensor):
pass pass
async def message(self): async def message(self):
self.cbpi.notify("HTTPSensor Timeout", "Sensor " + str(self.id) + " did not respond", NotificationType.WARNING, action=[NotificationAction("OK", self.Confirm)]) target_timestring= datetime.fromtimestamp(self.lastdata)
self.cbpi.notify("HTTPSensor Timeout", "Sensor '" + str(self.sensor.name) + "' did not respond. Last data received: "+target_timestring.strftime("%D %H:%M"), NotificationType.WARNING, action=[NotificationAction("OK", self.Confirm)])
pass pass
async def run(self): async def run(self):
@ -50,6 +54,7 @@ class HTTPSensor(CBPiSensor):
if self.timeout !=0: if self.timeout !=0:
self.nextchecktime = currenttime + self.timeout self.nextchecktime = currenttime + self.timeout
self.notificationsend = False self.notificationsend = False
self.lastdata=time.time()
except Exception as e: except Exception as e:
logging.error(e) logging.error(e)
pass pass

View file

@ -6,6 +6,7 @@ from cbpi.api import *
import logging import logging
import json import json
import time import time
from datetime import datetime
@parameters([Property.Text(label="Topic", configurable=True, description="MQTT Topic"), @parameters([Property.Text(label="Topic", configurable=True, description="MQTT Topic"),
Property.Text(label="PayloadDictionary", configurable=True, default_value="", Property.Text(label="PayloadDictionary", configurable=True, default_value="",
@ -26,6 +27,8 @@ class MQTTSensor(CBPiSensor):
self.starttime = time.time() self.starttime = time.time()
self.notificationsend = False self.notificationsend = False
self.nextchecktime=self.starttime+self.timeout self.nextchecktime=self.starttime+self.timeout
self.lastdata=time.time()
self.sensor=self.get_sensor(self.id)
async def Confirm(self, **kwargs): async def Confirm(self, **kwargs):
self.nextchecktime = time.time() + self.timeout self.nextchecktime = time.time() + self.timeout
@ -33,7 +36,8 @@ class MQTTSensor(CBPiSensor):
pass pass
async def message(self): async def message(self):
self.cbpi.notify("MQTTSensor Timeout", "Sensor " + str(self.Topic) + " did not respond", NotificationType.WARNING, action=[NotificationAction("OK", self.Confirm)]) target_timestring= datetime.fromtimestamp(self.lastdata)
self.cbpi.notify("MQTTSensor Timeout", "Sensor '" + str(self.sensor.name) + "' did not respond. Last data received: "+target_timestring.strftime("%D %H:%M"), NotificationType.WARNING, action=[NotificationAction("OK", self.Confirm)])
pass pass
async def on_message(self, message): async def on_message(self, message):
@ -50,6 +54,7 @@ class MQTTSensor(CBPiSensor):
if self.timeout !=0: if self.timeout !=0:
self.nextchecktime = time.time() + self.timeout self.nextchecktime = time.time() + self.timeout
self.notificationsend = False self.notificationsend = False
self.lastdata=time.time()
except Exception as e: except Exception as e:
logging.info("MQTT Sensor Error {}".format(e)) logging.info("MQTT Sensor Error {}".format(e))