+++ /dev/null
-BEGIN {
- # TODO: Read spec from a file
- bat_alert_spec[100] = "low|Energy_Bellow_Full|Must have perfection!"
- bat_alert_spec[50] = "low|Energy_Bellow_Half|Where is the charger?"
- bat_alert_spec[20] = "med|Energy_Low|Get the charger."
- bat_alert_spec[15] = "med|Energy_Low|Get the charger!"
- bat_alert_spec[10] = "hi|Energy_Low|Plug it in, ASAP!"
- bat_alert_spec[5] = "hi|Energy_CRITICALLY_Low|CHARGE NOW!!! GO GO GO!!!"
-}
-
-{
- delete msg
- msg_parse(msg, $0)
-}
-
-msg["node"] == Node && \
-msg["module"] == "khatus_sensor_energy" && \
-msg["type"] == "data" && \
-msg["key"] == "line_power" {
- line_power_prev = line_power_curr
- line_power_curr = msg["val"]
- if (line_power_curr == "no" && line_power_prev != "no") {
- msg_out_alert_low("PowerUnplugged", "")
- }
-}
-
-msg["node"] == Node && \
-msg["module"] == "khatus_sensor_energy" && \
-msg["type"] == "data" && \
-msg["key"] == "battery_state" {
- battery_state_prev = battery_state_curr
- battery_state_curr = msg["val"]
-}
-
-msg["node"] == Node && \
-msg["module"] == "khatus_sensor_energy" && \
-msg["type"] == "data" && \
-msg["key"] == "battery_percentage" {
- # TODO: Re-think the spec - can't rely on order of keys
- battery_percentage = num_ensure_numeric(msg["val"])
- if (battery_state_curr == "discharging") {
- for (threshold in bat_alert_spec) {
- threshold = num_ensure_numeric(threshold)
- if (battery_percentage <= threshold && !_alerted[threshold]) {
- split(bat_alert_spec[threshold], alert, "|")
- priority = alert[1]
- subject = alert[2]
- body = sprintf("%d%% %s", battery_percentage, alert[3])
- msg_out_alert(priority, subject, body)
- _alerted[threshold]++
- }
- }
- } else {
- delete _alerted
- }
-}