Commit 35f86fafbf2883c62a0e29fdfb19fab50b323a78

Authored by Greg Sandstrom
1 parent 666db27d6e
Exists in main

first stab at slackbot integration

Showing 1 changed file with 75 additions and 0 deletions Inline Diff

ssa/slack-bot/slackbot.py View file @ 35f86fa
File was created 1 """
2 slackbot.py
3
4 Use slack app integration to post messages via the slack api
5 """
6
7 import configparser
8 import influxdb
9 import time
10 import datetime
11 import requests
12
13 PUMP1_FLOW_QUERY = """
14 SELECT last(value) as value From Pump1
15 """
16 PUMP2_FLOW_QUERY = """
17 SELECT last(value) as value From Pump2
18 """
19
20
21 class SlackBot:
22 def __init__(self):
23 self.config = configparser.ConfigParser()
24 self.config.read("slackbot_config.ini")
25 self.last_dtime1 = 0
26 self.last_dtime2 = 0
27
28 def run(self):
29 while True:
30 self.post_update()
31 time.sleep(self.config.get("sleep_time_sec"))
32
33 def post_update(self):
34 # poll latest data
35 with influxdb.InfluxDBClient(
36 self.config["influxdb"].get("host", "localhost"),
37 self.config["influxdb"].get("port", "8086"),
38 self.config["influxdb"].get("username", None),
39 self.config["influxdb"].get("password", None),
40 self.config["influxdb"].get("dbname", "paddle"),
41 ) as idb_client:
42 result1 = idb_client.query(PUMP1_FLOW_QUERY)
43 (pump1, time1) = self.parse_pump_query_result(result1, "Pump1")
44 result2 = idb_client.query(PUMP2_FLOW_QUERY)
45 (pump2, time2) = self.parse_pump_query_result(result2, "Pump2")
46
47 # post to slack channel
48 dtime1 = datetime.datetime.fromisoformat(time1)
49 dtime2 = datetime.datetime.fromisoformat(time2)
50 message = f"Pump1: {pump1:4.1f} ({dtime1.strftime("%d %b %Y, %I:%M%p")})\nPump2: {pump2:4.1f} ({dtime2.strftime("%d %b %Y, %I:%M%p")})"
51
52 json_message = {
53 "channel": self.config["slack"].get("channel_id"),
54 "text": message,
55 }
56
57 headers = {
58 "Authorization": f"Bearer {self.config["slack"].get("token")}",
59 "Content-type": "application/json"
60 }