Commit | Line | Data |
---|---|---|
03c229bf SK |
1 | BEGIN { |
2 | # TODO: Read spec from a file | |
3 | bat_alert_spec[100] = "low|Energy_Bellow_Full|Must have perfection!" | |
4 | bat_alert_spec[50] = "low|Energy_Bellow_Half|Where is the charger?" | |
5 | bat_alert_spec[20] = "med|Energy_Low|Get the charger." | |
6 | bat_alert_spec[15] = "med|Energy_Low|Get the charger!" | |
7 | bat_alert_spec[10] = "hi|Energy_Low|Plug it in, ASAP!" | |
8 | bat_alert_spec[5] = "hi|Energy_CRITICALLY_Low|CHARGE NOW!!! GO GO GO!!!" | |
9 | } | |
10 | ||
81336934 SK |
11 | { |
12 | delete msg | |
13 | msg_parse(msg, $0) | |
14 | } | |
15 | ||
16 | msg["node"] == Node && \ | |
17 | msg["module"] == "khatus_sensor_energy" && \ | |
18 | msg["type"] == "data" && \ | |
19 | msg["key"] == "line_power" { | |
03c229bf | 20 | line_power_prev = line_power_curr |
81336934 | 21 | line_power_curr = msg["val"] |
03c229bf | 22 | if (line_power_curr == "no" && line_power_prev != "no") { |
8482fea6 | 23 | msg_out_alert_low("PowerUnplugged", "") |
03c229bf SK |
24 | } |
25 | } | |
26 | ||
81336934 SK |
27 | msg["node"] == Node && \ |
28 | msg["module"] == "khatus_sensor_energy" && \ | |
29 | msg["type"] == "data" && \ | |
30 | msg["key"] == "battery_state" { | |
03c229bf | 31 | battery_state_prev = battery_state_curr |
81336934 | 32 | battery_state_curr = msg["val"] |
03c229bf SK |
33 | } |
34 | ||
81336934 SK |
35 | msg["node"] == Node && \ |
36 | msg["module"] == "khatus_sensor_energy" && \ | |
37 | msg["type"] == "data" && \ | |
38 | msg["key"] == "battery_percentage" { | |
03c229bf | 39 | # TODO: Re-think the spec - can't rely on order of keys |
81336934 | 40 | battery_percentage = num_ensure_numeric(msg["val"]) |
03c229bf SK |
41 | if (battery_state_curr == "discharging") { |
42 | for (threshold in bat_alert_spec) { | |
8482fea6 | 43 | threshold = num_ensure_numeric(threshold) |
03c229bf | 44 | if (battery_percentage <= threshold && !_alerted[threshold]) { |
8482fea6 SK |
45 | split(bat_alert_spec[threshold], alert, "|") |
46 | priority = alert[1] | |
47 | subject = alert[2] | |
48 | body = sprintf("%d%% %s", battery_percentage, alert[3]) | |
49 | msg_out_alert(priority, subject, body) | |
03c229bf SK |
50 | _alerted[threshold]++ |
51 | } | |
52 | } | |
53 | } else { | |
54 | delete _alerted | |
55 | } | |
56 | } |