From 22137e3eed9355864657df9ab0d9e35ae13e128e Mon Sep 17 00:00:00 2001
From: Tamas Gal <tgal@km3net.de>
Date: Wed, 2 Oct 2019 23:44:12 +0200
Subject: [PATCH] Add trigger rate bot

---
 scripts/trigger_rates.py | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/scripts/trigger_rates.py b/scripts/trigger_rates.py
index f108f53..80cd789 100755
--- a/scripts/trigger_rates.py
+++ b/scripts/trigger_rates.py
@@ -35,6 +35,10 @@ matplotlib.use("Agg")
 import matplotlib.pyplot as plt
 import matplotlib.dates as md
 
+import toml
+
+from rocketchat_API.rocketchat import RocketChat
+
 import km3pipe as kp
 from km3pipe.config import Config
 from km3pipe.io.daq import (DAQPreamble, DAQEvent, is_3dshower, is_3dmuon,
@@ -44,6 +48,23 @@ import km3pipe.style
 VERSION = "1.0"
 km3pipe.style.use('km3pipe')
 
+URL = "https://chat.km3net.de"
+CONFIG = "pipeline.toml"
+
+with open(CONFIG, 'r') as fobj:
+    config = toml.load(fobj)
+    BOTNAME = config['Alerts']['botname']
+    PASSWORD = config['Alerts']['password']
+    CHANNEL = config['Alerts']['channel']
+
+rocket = RocketChat(BOTNAME, PASSWORD, server_url=URL)
+
+
+def sendchatalert(msg):
+    with open(CONFIG, 'r') as fobj:
+        shifters = toml.load(fobj)['Alerts'].get('shifters', "shifters")
+    rocket.chat_post_message(shifters + ": " + msg, channel=CHANNEL)
+
 
 class TriggerRate(kp.Module):
     """Trigger rate plotter"""
@@ -57,6 +78,9 @@ class TriggerRate(kp.Module):
 
         self.sendmail = kp.time.Cuckoo(
             15 * 60, partial(kp.tools.sendmail, "orca.alerts@km3net.de"))
+        self.sendchatalert = kp.time.Cuckoo(30 * 60, sendchatalert)
+
+        self.sendchatalert("Trigger rate bot is now ready to spam.")
 
         print("Update interval: {}s".format(self.interval))
         self.trigger_counts = defaultdict(int)
@@ -165,6 +189,7 @@ class TriggerRate(kp.Module):
                 trigger_rate = 0
             if trigger_rate == 0:
                 self.sendmail("Subject: Trigger rate is 0Hz!\n\n")
+                self.sendchatalert("Trigger rate is 0Hz!")
             entry += f",{trigger_rate}"
         entry += '\n'
         self.trigger_rates_fobj.write(entry)
-- 
GitLab