9 prefixes_of_net_interfaces_to_show
="$4"
11 | stdbuf
-o L
"$bin"/khatus_controller \
12 -v opt_debug
="$debug" \
13 -v opt_mpd_song_max_chars
=10 \
14 -v opt_prefixes_of_net_interfaces_to_show
="$prefixes_of_net_interfaces_to_show"
24 if [ ! "$perf_log" = '' ]
26 # %S system time in seconds
27 # %U user time in seconds
28 # %e elapsed time in seconds
29 # %c context switches involuntary
30 # %w context switches voluntary
32 time_fmt
='%S %U %e %c %w %x'
33 time="/usr/bin/time -ao ${perf_log} -f "
41 ${time}"${time_fmt}"${time_sep}$bin/$cmd \
45 echo "ERROR ${msg_head} $line" > "$pipe"
50 echo "OK ${msg_head} $line" > "$pipe"
63 if [ ! "$perf_log_dir" = '' ]
66 perf_log_file
=$
(basename "$(echo $cmd | awk '{print $1; exit}')").log
67 mkdir
-p "$perf_log_dir"
68 perf_log_path
="$perf_log_dir/$perf_log_file"
73 run_producer
"$@" "$perf_log_path"
81 ["--dir_bin"]="$HOME/bin"
82 ["--dir_perf_logs"]=''
83 ["--file_pipe"]=$
(mktemp
)
84 ["--weather_station_id"]='KJFK'
85 ["--screen_brightness_device_name"]='acpi_video0'
86 ["--prefixes_of_net_interfaces_to_show"]='w' # comma-separated
87 ["--wifi_interface"]=''
88 ["--disk_space_device"]='/'
89 ["--disk_io_device"]='sda'
91 ["--fan_path"]='/proc/acpi/ibm/fan'
92 ["--interval_inp_datetime"]=1
93 ["--interval_inp_brightness"]=1
94 ["--interval_inp_weather"]=$
(( 30 * 60)) # 30 minutes
95 ["--interval_inp_mpd_state"]=1
96 ["--interval_inp_mpd_song"]=1
97 ["--interval_inp_volume"]=1
98 ["--interval_inp_bluetooth"]=5
99 ["--interval_inp_net_wifi"]=5
100 ["--interval_inp_net_io"]=1
101 ["--interval_inp_disk_space"]=5
102 ["--interval_inp_disk_io"]=1
103 ["--interval_inp_loadavg"]=1
104 ["--interval_inp_temp"]=1
105 ["--interval_inp_fan"]=1
106 ["--interval_inp_mem"]=1
117 if [ -v opts
["$key"] ]
119 if [ "$key" == "--debug" ]
123 elif [ "$val" != "" ]
129 echo "Option $key requires an argument" >&2
133 echo "Unknown option: $key" >&2
139 if [ "${opts['--wifi_interface']}" = '' ]
141 echo 'Please provide the required parameter: --wifi_interface' >&2
146 echo '=============================================='
147 echo "Khatus starting with the following parameters:"
148 echo '=============================================='
149 for param
in ${!opts[@]}
151 echo "$param := ${opts[$param]}"
155 echo '----------------------------------------------'
158 screen_brightness_device_path
='/sys/class/backlight'
159 screen_brightness_device_path
+="/${opts['--screen_brightness_device_name']}"
162 pipe
="${opts['--file_pipe']}"
163 bin
="${opts['--dir_bin']}"
164 perf
="${opts['--dir_perf_logs']}"
169 cmd_sens_screen_brightness
='khatus_sensor_screen_brightness'
170 cmd_sens_screen_brightness
+=" $screen_brightness_device_path"
172 cmd_sens_weather
="khatus_sensor_weather $bin ${opts['--weather_station_id']}"
173 cmd_sens_disk_space
="khatus_sensor_disk_space ${opts['--disk_space_device']}"
174 cmd_sens_disk_io
="khatus_sensor_disk_io ${opts['--disk_io_device']}"
175 cmd_sens_temperature
="khatus_sensor_temperature ${opts['--thermal_zone']}"
176 cmd_sens_fan
="khatus_sensor_fan ${opts['--fan_path']}"
177 cmd_sens_bluetooth
="khatus_sensor_bluetooth_power $bin"
178 cmd_sens_mpd_state
="khatus_sensor_mpd_state $bin"
179 cmd_sens_net_addr_io
="khatus_sensor_net_addr_io $bin"
180 cmd_sens_volume
="khatus_sensor_volume $bin"
181 cmd_sens_wifi
="khatus_sensor_net_wifi_status $bin ${opts['--wifi_interface']}"
183 fork_watcher
"$pipe" "$bin" "khatus_sensor_energy $bin" 'in:ENERGY'
184 fork_poller
"${opts['--interval_inp_datetime']}" "$perf" "$pipe" "$bin" khatus_sensor_datetime
'in:DATE_TIME'
185 fork_poller
"${opts['--interval_inp_brightness']}" "$perf" "$pipe" "$bin" "$cmd_sens_screen_brightness" 'in:SCREEN_BRIGHTNESS'
186 fork_poller
"${opts['--interval_inp_weather']}" "$perf" "$pipe" "$bin" "$cmd_sens_weather" 'in:WEATHER'
187 fork_poller
"${opts['--interval_inp_mpd_state']}" "$perf" "$pipe" "$bin" "$cmd_sens_mpd_state" 'in:MPD_STATE'
188 fork_poller
"${opts['--interval_inp_mpd_song']}" "$perf" "$pipe" "$bin" khatus_sensor_mpd_song
'in:MPD_SONG'
189 fork_poller
"${opts['--interval_inp_volume']}" "$perf" "$pipe" "$bin" "$cmd_sens_volume" 'in:VOLUME'
190 fork_poller
"${opts['--interval_inp_bluetooth']}" "$perf" "$pipe" "$bin" "$cmd_sens_bluetooth" 'in:BLUETOOTH_POWER'
191 fork_poller
"${opts['--interval_inp_net_wifi']}" "$perf" "$pipe" "$bin" "$cmd_sens_wifi" 'in:NET_WIFI_STATUS'
192 fork_poller
"${opts['--interval_inp_net_io']}" "$perf" "$pipe" "$bin" "$cmd_sens_net_addr_io" 'in:NET_ADDR_IO'
193 fork_poller
"${opts['--interval_inp_disk_space']}" "$perf" "$pipe" "$bin" "$cmd_sens_disk_space" 'in:DISK_SPACE'
194 fork_poller
"${opts['--interval_inp_disk_io']}" "$perf" "$pipe" "$bin" "$cmd_sens_disk_io" 'in:DISK_IO'
195 fork_poller
"${opts['--interval_inp_loadavg']}" "$perf" "$pipe" "$bin" khatus_sensor_loadavg
'in:LOAD_AVG'
196 fork_poller
"${opts['--interval_inp_temp']}" "$perf" "$pipe" "$bin" "$cmd_sens_temperature" 'in:TEMPERATURE'
197 fork_poller
"${opts['--interval_inp_fan']}" "$perf" "$pipe" "$bin" "$cmd_sens_fan" 'in:FAN'
198 fork_poller
"${opts['--interval_inp_mem']}" "$perf" "$pipe" "$bin" khatus_sensor_memory
'in:MEMORY'
202 "${opts['--debug']}" \
204 "${opts['--prefixes_of_net_interfaces_to_show']}"