From fc02d058ee0cfd0a748183b72141e53f024a6232 Mon Sep 17 00:00:00 2001
From: Bob Mottram <bob@freedombone.net>
Date: Sun, 19 Aug 2018 20:39:43 +0100
Subject: [PATCH] Include disk i/o speed in system monitor

---
 src/freedombone-installer                | 21 +++++++++++++++++++++
 src/freedombone-utils-webadmin           | 21 +++++++++++++++++++++
 webadmin/EN/system_monitor_template.html |  5 +++++
 3 files changed, 47 insertions(+)

diff --git a/src/freedombone-installer b/src/freedombone-installer
index be5bbe444..9bcc7ebf1 100755
--- a/src/freedombone-installer
+++ b/src/freedombone-installer
@@ -1509,6 +1509,25 @@ function update_system_monitor {
             cpu_temperature=$((cpu_temp / 1000))
         fi
 
+        test_drive=/dev/sda1
+        if ! ls $test_drive; then
+            if ls /dev/mmcblk0p2; then
+                test_drive=/dev/mmcblk0p2
+            else
+                test_drive=
+            fi
+        fi
+        if [ "$test_drive" ]; then
+            disk_io_speed_percent=0
+            disk_io_speed=$(hdparm -t $test_drive | awk -F '= ' '{print $2}' | awk -F ' ' '{print $1}')
+            if [ "$disk_io_speed" ]; then
+                disk_io_speed_percent=$((disk_io_speed * 100 / 500))
+                if [ $disk_io_speed_percent -gt 100 ]; then
+                    disk_io_speed_percent=100
+                fi
+            fi
+        fi
+
         local_hostname=$(grep 'host-name' /etc/avahi/avahi-daemon.conf | awk -F '=' '{print $2}').local
         webadmin_install_dir="/var/www/${local_hostname}/htdocs/admin"
         if [ -f "$webadmin_install_dir/system_monitor_template.html" ]; then
@@ -1522,6 +1541,8 @@ function update_system_monitor {
 
             sed -i "s|<div name=\"cputemp\" class=\"w3-container.*|<div name=\"cputemp\" class=\"w3-container w3-blue w3-round-xlarge\" style=\"width:${cpu_temperature}%\">${cpu_temperature}C</div>|g" "$webadmin_install_dir/system_monitor.html"
 
+            sed -i "s|<div name=\"diskio\" class=\"w3-container.*|<div name=\"diskio\" class=\"w3-container w3-blue w3-round-xlarge\" style=\"width:${disk_io_speed_percent}%\">${disk_io_speed} MB/s</div>|g" "$webadmin_install_dir/system_monitor.html"
+
             chown www-data:www-data "$webadmin_install_dir/system_monitor.html"
         fi
     fi
diff --git a/src/freedombone-utils-webadmin b/src/freedombone-utils-webadmin
index ceaf0da6b..bf2f167bf 100755
--- a/src/freedombone-utils-webadmin
+++ b/src/freedombone-utils-webadmin
@@ -758,6 +758,25 @@ function webadmin_update_system_monitor {
         cpu_temperature=$((cpu_temp / 1000))
     fi
 
+    test_drive=/dev/sda1
+    if ! ls $test_drive; then
+        if ls /dev/mmcblk0p2; then
+            test_drive=/dev/mmcblk0p2
+        else
+            test_drive=
+        fi
+    fi
+    if [ "$test_drive" ]; then
+        disk_io_speed_percent=0
+        disk_io_speed=$(hdparm -t $test_drive | awk -F '= ' '{print $2}' | awk -F ' ' '{print $1}')
+        if [ "$disk_io_speed" ]; then
+            disk_io_speed_percent=$((disk_io_speed * 100 / 500))
+            if [ $disk_io_speed_percent -gt 100 ]; then
+                disk_io_speed_percent=100
+            fi
+        fi
+    fi
+
     local_hostname=$(grep 'host-name' /etc/avahi/avahi-daemon.conf | awk -F '=' '{print $2}').local
     webadmin_install_dir="/var/www/${local_hostname}/htdocs/admin"
     if [ -f "$webadmin_install_dir/system_monitor_template.html" ]; then
@@ -771,6 +790,8 @@ function webadmin_update_system_monitor {
 
         sed -i "s|<div name=\"cputemp\" class=\"w3-container.*|<div name=\"cputemp\" class=\"w3-container w3-blue w3-round-xlarge\" style=\"width:${cpu_temperature}%\">${cpu_temperature}C</div>|g" "$webadmin_install_dir/system_monitor.html"
 
+        sed -i "s|<div name=\"diskio\" class=\"w3-container.*|<div name=\"diskio\" class=\"w3-container w3-blue w3-round-xlarge\" style=\"width:${disk_io_speed_percent}%\">${disk_io_speed} MB/s</div>|g" "$webadmin_install_dir/system_monitor.html"
+
         chown www-data:www-data "$webadmin_install_dir/system_monitor.html"
     fi
 }
diff --git a/webadmin/EN/system_monitor_template.html b/webadmin/EN/system_monitor_template.html
index 6f8b8fe35..59c34249a 100644
--- a/webadmin/EN/system_monitor_template.html
+++ b/webadmin/EN/system_monitor_template.html
@@ -96,6 +96,11 @@
         <div name="cputemp" class="w3-container w3-blue w3-round-xlarge" style="width:40%">40°C</div>
       </div>
 
+      <p class="titletext">Disk I/O Speed</p>
+      <div class="w3-light-grey w3-round-xlarge">
+        <div name="diskio" class="w3-container w3-blue w3-round-xlarge" style="width:10%">20 MB/s</div>
+      </div>
+
       <br><br>
 
       <form action="systemmonitor.php" method="post">
-- 
GitLab