X-Git-Url: https://git.xandkar.net/?a=blobdiff_plain;f=bin%2Fkhatus_controller;h=1ff6e83569f90e899b0e2f6f5c7b506cdc27e9e9;hb=9419890bb9da94630bdb047d194680f2a50a1c7c;hp=ed98c342b4f723002ba7532b6ecaa35fc833339c;hpb=e16fe0ea2d3c5d76e2595b4062532f88c56d3b03;p=khatus.git diff --git a/bin/khatus_controller b/bin/khatus_controller index ed98c34..1ff6e83 100755 --- a/bin/khatus_controller +++ b/bin/khatus_controller @@ -3,95 +3,96 @@ /^in:ENERGY/\ { - split_msg_parts() + fields_shift() sub("%$", "", $2) - db["energy_state"] = $1 + db["energy_state_prev"] = db["energy_state_curr"] + db["energy_state_curr"] = $1 db["energy_percentage"] = ensure_numeric($2) alert_check_energy() } /^in:MEMORY/\ { - split_msg_parts() + fields_shift() db["memory_total"] = $1 db["memory_used"] = $2 } /^in:FAN +status:/\ { - split_msg_parts() + fields_shift() db["fan_status"] = $2 } /^in:FAN +speed:/\ { - split_msg_parts() + fields_shift() db["fan_speed"] = $2 } /^in:FAN +level:/\ { - split_msg_parts() + fields_shift() db["fan_level"] = $2 } /^in:TEMPERATURE/\ { - split_msg_parts() + fields_shift() db["temperature"] = $1 } /^in:LOAD_AVG/\ { - split_msg_parts() + fields_shift() set_load_avg() } /^in:DISK_IO/\ { - split_msg_parts() + fields_shift() set_disk_io() } /^in:DISK_SPACE/\ { - split_msg_parts() - db["disk_space_used"] = msg_body + fields_shift() + db["disk_space_used"] = $0 } /^in:NET_ADDR_IO/\ { - split_msg_parts() + fields_shift() set_net_addr_io() } /^in:NET_WIFI_STATUS/\ { - split_msg_parts() - db["net_wifi_status"] = msg_body + fields_shift() + db["net_wifi_status"] = $0 } /^in:BLUETOOTH_POWER/\ { - split_msg_parts() - db["bluetooth_power"] = msg_body + fields_shift() + db["bluetooth_power"] = $0 } /^in:SCREEN_BRIGHTNESS/\ { - split_msg_parts() + fields_shift() set_screen_brightness() } /^in:VOLUME/\ { - split_msg_parts() - db["volume"] = msg_body + fields_shift() + db["volume"] = $0 } /^in:MPD_STATE/\ { - split_msg_parts() + fields_shift() db["mpd_state"] = $1 db["mpd_curr_song_time"] = $2 db["mpd_curr_song_percent"] = $3 @@ -99,20 +100,20 @@ /^in:MPD_SONG/\ { - split_msg_parts() - db["mpd_curr_song_name"] = msg_body + fields_shift() + db["mpd_curr_song_name"] = $0 } /^in:WEATHER/\ { - split_msg_parts() - db["weather_temperature"] = msg_body + fields_shift() + db["weather_temperature"] = $0 } /^in:DATE_TIME/\ { - split_msg_parts() - db["datetime"] = msg_body + fields_shift() + db["datetime"] = $0 output_msg_status_bar(make_status_bar()) } @@ -122,33 +123,46 @@ # - priority # - snooze time (if already alerted, when to re-alert?) # - text: subject/body -function alert_check_energy( threshold, dbg, state, remaining, subj, body) { - state = db["energy_state"] - remaining = db["energy_percentage"] +function alert_check_energy( \ + from, dbg, state_curr, state_prev, remaining, subj, body\ +) { + from = "alert_check_energy" + + state_curr = db["energy_state_curr"] + state_prev = db["energy_state_prev"] + remaining = db["energy_percentage"] - dbg["state"] = state + dbg["state_curr"] = state_curr dbg["remaining"] = remaining - debug("alert_check_energy", dbg) + debug(from, dbg) + + if (state_curr == "discharging") { + if (state_prev == "charging") { + alert_trigger_low(from, "Unplugged", "") + } - if (state == "discharging") { if (remaining < 5) { subj = "Energy_CRITICALLY_Low" body = sprintf("%d%% CHARGE NOW!!! GO GO GO!!!", remaining) - alert_trigger_hi(subj, body) + alert_trigger_hi(from, subj, body) } else if (remaining < 10) { subj = "Energy_Very_Low" body = sprintf("%d%% Plug it in ASAP.", remaining) - alert_trigger_hi(subj, body) + alert_trigger_hi(from, subj, body) } else if (remaining < 15) { subj = "Energy_Low" body = sprintf("%d%% Get the charger.", remaining) - alert_trigger_hi(subj, body) + alert_trigger_hi(from, subj, body) + } else if (remaining < 20) { + subj = "Energy_Low" + body = sprintf("%d%% Get the charger.", remaining) + alert_trigger_med(from, subj, body) } else if (remaining < 50) { if (!state__alerts__energy__notified_bellow_half) { state__alerts__energy__notified_bellow_half = 1 subj = "Energy_Bellow_Half" body = sprintf("%d%% Where is the charger?", remaining) - alert_trigger_hi(subj, body) + alert_trigger_med(from, subj, body) } } } else { @@ -157,23 +171,23 @@ function alert_check_energy( threshold, dbg, state, remaining, subj, body) { } } -function alert_trigger_low(subject, body) { - alert_trigger("low", subject, body) +function alert_trigger_low(from, subject, body) { + alert_trigger("low", from, subject, body) } -function alert_trigger_med(subject, body) { - alert_trigger("med", subject, body) +function alert_trigger_med(from, subject, body) { + alert_trigger("med", from, subject, body) } -function alert_trigger_hi(subject, body) { - alert_trigger("hi", subject, body) +function alert_trigger_hi(from, subject, body) { + alert_trigger("hi", from, subject, body) } -function alert_trigger(priority, subject, body, msg) { +function alert_trigger(priority, from, subject, body, msg) { # priority : "low" | "med" | "hi" # subject : no spaces # body : anything - msg = sprintf("%s %s %s", priority, subject, body) + msg = sprintf("khatus_%s %s %s %s", from, priority, subject, body) output_msg_alert(msg) } @@ -246,13 +260,11 @@ function set_screen_brightness( max, cur) { db["screen_brightness"] = (cur / max) * 100 } -function split_msg_parts( dbg) { - msg_head = $1 - sub("^" msg_head " +", "") - msg_body = $0 - dbg["msg_head"] = msg_head - dbg["msg_body"] = msg_body - debug("split_msg_parts", dbg) +function fields_shift( dbg) { + dbg["head"] = $1 + sub("^" $1 " +", "") + dbg["body"] = $0 + debug("fields_shift", dbg) } function make_status_bar( position, bar, sep, i, j) { @@ -277,7 +289,7 @@ function make_status_bar( position, bar, sep, i, j) { } function make_status_energy( state, direction_of_change) { - state = db["energy_state"] + state = db["energy_state_curr"] if (state == "discharging") { direction_of_change = "<" } else if (state == "charging") {