X-Git-Url: https://git.xandkar.net/?a=blobdiff_plain;f=bin%2Fkhatus_controller;h=fd601539c614bead18b7eea49f5f0ee17021c531;hb=ab99b55675644c1ec18bb6ecbd9479e001f604a1;hp=a3b97c79185a209df38a9215fdeffe431b2bcea9;hpb=e8c1404e2324887381d677b490082d67a80e3f01;p=khatus.git diff --git a/bin/khatus_controller b/bin/khatus_controller index a3b97c7..fd60153 100755 --- a/bin/khatus_controller +++ b/bin/khatus_controller @@ -1,135 +1,115 @@ #! /usr/bin/awk -f +{ debug("LINE", $0) } -/^in:ENERGY/\ +/^in:ENERGY battery/\ { - fields_shift() - sub("%$", "", $2) + debug("ENERGY battery", $0) + sub("%$", "", $4) db["energy_state_prev"] = db["energy_state_curr"] - db["energy_state_curr"] = $1 - db["energy_percentage"] = ensure_numeric($2) + db["energy_state_curr"] = $3 + db["energy_percentage"] = ensure_numeric($4) +} + +/^in:ENERGY line_power/\ +{ + debug("ENERGY line_power", $0) + db["energy_line_power_prev"] = db["energy_line_power_curr"] + db["energy_line_power_curr"] = $3 +} + +/^in:ENERGY/\ +{ + debug("ENERGY ALL", $0) alert_check_energy() } /^in:MEMORY/\ { - fields_shift() + shift() db["memory_total"] = $1 db["memory_used"] = $2 } /^in:FAN +status:/\ { - fields_shift() + shift() db["fan_status"] = $2 } /^in:FAN +speed:/\ { - fields_shift() + shift() db["fan_speed"] = $2 } /^in:FAN +level:/\ { - fields_shift() + shift() db["fan_level"] = $2 } /^in:TEMPERATURE/\ { - fields_shift() + shift() db["temperature"] = $1 } /^in:LOAD_AVG/\ { - fields_shift() + shift() set_load_avg() } /^in:DISK_IO/\ { - fields_shift() + shift() set_disk_io() } /^in:DISK_SPACE/\ { - fields_shift() + shift() db["disk_space_used"] = $0 } /^in:NET_ADDR_IO/\ { - fields_shift() + shift() set_net_addr_io() } /^in:NET_WIFI_STATUS/\ { - fields_shift() + shift() db["net_wifi_status"] = $0 } /^in:BLUETOOTH_POWER/\ { - fields_shift() + shift() db["bluetooth_power"] = $0 } /^in:SCREEN_BRIGHTNESS/\ { - fields_shift() + shift() set_screen_brightness() } /^in:VOLUME/\ { - fields_shift() + shift() db["volume"] = $0 } -# ----------------------------------------------------------------------------- -# BEGIN MPD_SONG -/^in:MPD_SONG +OK +/\ -{ - delete db["mpd_song_curr_file"] - delete db["mpd_song_curr_title"] - delete db["mpd_song_curr_name"] -} - -/^in:MPD_SONG +file:/\ -{ - fields_shift() - fields_shift() - db["mpd_song_curr_file"] = $0 -} - -/^in:MPD_SONG +Title:/\ -{ - fields_shift() - fields_shift() - db["mpd_song_curr_title"] = $0 -} - -/^in:MPD_SONG +Name:/\ -{ - fields_shift() - fields_shift() - db["mpd_song_curr_name"] = $0 -} - -/^in:MPD_SONG +OK$/\ -{ - set_mpd_playing() -} -# END MPD_SONG -# ----------------------------------------------------------------------------- +/^in:MPD_SONG OK +MPD/ { delete db_mpd_song; next } +/^in:MPD_SONG OK$/ { set_mpd_playing() ; next } +/^in:MPD_SONG / { set_mpd_song() ; next } /^in:MPD_STATE /\ { - fields_shift() + shift() db["mpd_status_state"] = $1 db["mpd_status_time"] = $2 db["mpd_status_percent"] = $3 @@ -137,23 +117,33 @@ /^in:WEATHER/\ { - fields_shift() + shift() db["weather_temperature"] = $0 } /^in:DATE_TIME/\ { - fields_shift() + shift() db["datetime"] = $0 output_msg_status_bar(make_status_bar()) } +function set_mpd_song( key, val) { + key = $2 + shift() + shift() + val = $0 + db_mpd_song[key] = val + debug("set_mpd_song", "", db_mpd_song) +} + function set_mpd_playing( \ currently_playing, name, title, file, last, parts\ ) { - name = db["mpd_song_curr_name"] - title = db["mpd_song_curr_title"] - file = db["mpd_song_curr_file"] + debug("set_mpd_playing", "", db_mpd_song) + name = db_mpd_song["Name:"] + title = db_mpd_song["Title:"] + file = db_mpd_song["file:"] if (name) { currently_playing = name @@ -171,11 +161,20 @@ function set_mpd_playing( \ alert_check_mpd() } -function alert_check_mpd( curr, prev) { +function alert_check_mpd( curr, prev, name, body) { prev = db["mpd_playing_prev"] curr = db["mpd_playing_curr"] if (curr && curr != prev) { - alert_trigger_low("alert_check_mpd", "NowPlaying", curr) + name = db_mpd_song["Name:"] + if (name) { + body = name + } else { + body = \ + db_mpd_song["Artist:"] \ + " - " db_mpd_song["Album:"] \ + " - " db_mpd_song["Title:"] + } + alert_trigger_low("alert_check_mpd", "NowPlaying", body) } } @@ -186,7 +185,8 @@ function alert_check_mpd( curr, prev) { # - snooze time (if already alerted, when to re-alert?) # - text: subject/body function alert_check_energy( \ - from, dbg, state_curr, state_prev, remaining, subj, body\ + from, dbg, state_curr, state_prev, line_power_curr, line_power_prev, \ + remaining, subj, body\ ) { from = "alert_check_energy" @@ -196,13 +196,18 @@ function alert_check_energy( \ dbg["state_curr"] = state_curr dbg["remaining"] = remaining - debug(from, dbg) + dbg["energy_line_power_prev"] = db["energy_line_power_prev"] + dbg["energy_line_power_curr"] = db["energy_line_power_curr"] + debug(from, "", dbg) - if (state_curr == "discharging") { - if (state_prev == "charging") { - alert_trigger_low(from, "Unplugged", "") - } + line_power_curr = db["energy_line_power_curr"] + line_power_prev = db["energy_line_power_prev"] + if (line_power_curr == "no" && line_power_prev != "no") { + alert_trigger_low(from, "PowerUnplugged", "") + } + + if (state_curr == "discharging") { if (remaining < 5) { subj = "Energy_CRITICALLY_Low" body = sprintf("%d%% CHARGE NOW!!! GO GO GO!!!", remaining) @@ -322,11 +327,9 @@ function set_screen_brightness( max, cur) { db["screen_brightness"] = (cur / max) * 100 } -function fields_shift( dbg) { - dbg["head"] = $1 +# TODO: Revise overuse of shift() where it is not really needed +function shift() { sub("^" $1 " +", "") - dbg["body"] = $0 - debug("fields_shift", dbg) } function make_status_bar( position, bar, sep, i, j) { @@ -474,7 +477,7 @@ function round(n) { return int(n + 0.5) } -function debug(location, values, sep, vals, key, msg) { +function debug(location, msg, values, sep, vals, key, payload) { if (opt_debug) { sep = "" vals = "" @@ -482,8 +485,9 @@ function debug(location, values, sep, vals, key, msg) { vals = sprintf("%s%s%s: %s", vals, sep, key, values[key]) sep = ", " } - msg = location " ==> " vals "." - output_msg("DEBUG", msg, "/dev/stderr") + payload = \ + sprintf("LOCATION[%s] MSG[%s] DATA[%s]", location, msg, vals) + output_msg("DEBUG", payload, "/dev/stderr") } }