Introducing : Remote Sensor Monitor - A RESTful Web Server

I've been using it on 15 systems here for many years. Win7, Win10, various Win Server editions. In my home office, various family computers, servers, etc. I'm using it for hardware monitoring in PRTG.

The program requires a bit of baby-sitting to get it working, but once you have it set up, it works fine.

It does however stop working if any sensors suddenly are added to the list in HWiNFO. For example, on my systems that have an RTX 2080, there will be a sensor named "GPU USB-C 1 Input Power" that suddenly appears anywhere from 5 to 30 minutes after the systems have been booted and logged into the first time. This causes RSM to stop working altogether (the web server dies), and RSM simply needs to be restarted. The solution is to disable+hide all sensors in HWiNFO that act this way. Once you have figured out things like this, RSM will work ok.

Another quirk is that if you're running RivaTuner Statistic Server (RTSS) on the same system, it seems like you need to start/restart HWiNFO/RSM/RTSS in a particular order to avoid issues with RSM. Also, RTSS will sometimes add an FPS sensor in HWiNFO, and it can cause issues. Disable+hide this one as well. I don't understand why there is no option to fully disable HWiNFO and RTSS integration, as this would fix what I'd want to do there. I don't care about RTSS and HWiNFO exchanging information at all.

However... a permanent fix to all the things I mentioned above, would be for the developer of HWiNFO to add a REST(ful) webserver or even WMI to HWiNFO, allowing us to monitor the sensors with an external program - without needing stuff like RSM in the first place. I really hope the developer would consider something like this in the future.

Below is the bat script I'm using in my shell:startup folder to solve the abovementioned issue with starting/restarting HWiNFO/RSM/RTSS. Name it anything you want. You can also use it to restarts RSM when it stops working. It requires an external tool named hstart.exe (Hidden Start) which allows starting console programs without showing the shell window. If you can find an old version of hstart (v4.1), the license it has allows using it for free.


Code:
@ECHO off

SET /A count = 0
:loopRtss
ECHO Waiting for process RTSS.exe...
TASKLIST /FI "IMAGENAME eq RTSS.exe" 2>NUL | FIND /I /N "RTSS.exe">NUL
IF %ERRORLEVEL% EQU 0 (
    ECHO Process RTSS.exe found.
    GOTO :okRtss
) ELSE (
    IF %count% EQU 7 ( GOTO :okRtss )
    ECHO Launching RTSS.exe...
    START "" /D "C:\Program Files (x86)\RivaTuner Statistics Server\" /B rtss.exe
    TIMEOUT /T 10 /NOBREAK
    SET /A count = count + 1
    GOTO :loopRtss
)
ECHO RTSS.exe started.

:okRtss
TIMEOUT /T 10 /NOBREAK


SET "launchedHWiNFO="
SET /A count = 0
:loopHwinfo64
ECHO Waiting for process HWiNFO64.exe...
TASKLIST /FI "IMAGENAME eq HWiNFO64.exe" 2>NUL | FIND /I /N "HWiNFO64.exe">NUL
IF %ERRORLEVEL% EQU 0 (
    ECHO Process HWiNFO64.exe found.
    GOTO :okHwinfo
) ELSE (
    IF %count% EQU 7 ( GOTO :Error )
    SET "launchedHWiNFO=1"
    ECHO Launching HWiNFO64.exe...
    START "" /D "D:\Portables\HWiNFO64" /MIN /B HWiNFO64.exe
    TIMEOUT /T 10 /NOBREAK
    SET /A count = count + 1
    GOTO :loopHwinfo64
)
ECHO HWiNFO64.exe started.

:okHwinfo
TIMEOUT /T 10 /NOBREAK

REM Note: Using hstart.exe to ensure the shell window closes after starting Remote.Sensor.Monitor
IF DEFINED launchedHWiNFO ( TIMEOUT /T 10 /NOBREAK )
ECHO Checking to see if RSM process is already running...
TASKLIST /FI "IMAGENAME eq Remote Sensor Monitor.exe" 2>NUL | FIND /I /N "Remote Sensor Monitor.exe">NUL
IF %ERRORLEVEL% EQU 0 (
    ECHO Terminating process...
    WMIC PROCESS Where Name='Remote Sensor Monitor.exe' Delete
) ELSE (
    ECHO Launching process...
    "D:\exebat\hstart.exe" /NOCONSOLE /SHELL /D="D:\Portables\HWiNFO64\Remote.Sensor.Monitor" ""D:\Portables\HWiNFO64\Remote.Sensor.Monitor\Remote Sensor Monitor.exe" --hwinfo=1 --gpuz=0 --aida64=0 --ohm=0"
    REM START "" /D "D:\Portables\HWiNFO64\Remote.Sensor.Monitor" /B "Remote Sensor Monitor.exe" --hwinfo=1 --gpuz=0 --aida64=0 --ohm=0
    REM "D:\Portables\HWiNFO64\Remote.Sensor.Monitor\Remote Sensor Monitor.exe" --hwinfo=1 --gpuz=0 --aida64=0 --ohm=0
    GOTO :done
)


TIMEOUT /T 10 /NOBREAK
TASKLIST /FI "IMAGENAME eq Remote Sensor Monitor.exe" 2>NUL | FIND /I /N "Remote Sensor Monitor.exe">NUL
IF %ERRORLEVEL% EQU 0 (
    ECHO Terminating process...
    WMIC PROCESS Where Name='Remote Sensor Monitor.exe' Delete
) ELSE (
    ECHO Launching process...
    "D:\exebat\hstart.exe" /NOCONSOLE /SHELL /D="D:\Portables\HWiNFO64\Remote.Sensor.Monitor" ""D:\Portables\HWiNFO64\Remote.Sensor.Monitor\Remote Sensor Monitor.exe" --hwinfo=1 --gpuz=0 --aida64=0 --ohm=0"
    REM START "" /D "D:\Portables\HWiNFO64\Remote.Sensor.Monitor" /B "Remote Sensor Monitor.exe" --hwinfo=1 --gpuz=0 --aida64=0 --ohm=0
    REM "D:\Portables\HWiNFO64\Remote.Sensor.Monitor\Remote Sensor Monitor.exe" --hwinfo=1 --gpuz=0 --aida64=0 --ohm=0
)


:done
REM TIMEOUT 10
GOTO :END


:Error
ECHO.
ECHO.
ECHO ---------------------------------------------------------
ECHO ---- ERROR: timeout. Process HWiNFO64.exe NOT found. ----
ECHO ---------------------------------------------------------
TIMEOUT 10

:END
 
Last edited:
Thanks for this very useful addon!

I have one question: For me,
Code:
SensorUpdateTime
does not expose a UNIX timestamp (which I was expectiing) but rather the seconds since I started RemoteSensorMonitor. Is that expected?
 
Hi guys!

It seems the output is a json array or something like that. ( It begins with bracket: [ ) Can someone explain how can make a query from this output?

from output:
[
{
"SensorApp": "HWiNFO",
"SensorClass": "System",
"SensorName": "Virtual Memory Commited",
"SensorValue": "29229",
"SensorUnit": "MB",
"SensorUpdateTime": 1643361217
},
 
Hi guys!

It seems the output is a json array or something like that. ( It begins with bracket: [ ) Can someone explain how can make a query from this output?

from output:
[
{
"SensorApp": "HWiNFO",
"SensorClass": "System",
"SensorName": "Virtual Memory Commited",
"SensorValue": "29229",
"SensorUnit": "MB",
"SensorUpdateTime": 1643361217
},
Are you trying to use Arduino or something like that? I used an Arduino and used the JSON assistant to parse the stream. You might want to have a look at it: JsonAssistant
 
Hi, I would just like to say thank you so much for this add-on! The whole purpose of me even using HWiNFO is because this addon allows me to efficiently grab its sensor data.
 
Anyone still using this in 2024? Trying it with HWiNFO v 8.02-5440 and only seeing the following error. I confirmed HWiNFO64 is open with the sensors status window visible on my desktop.

Edited -
- Tried with 6.42 and it did work, and 7.00 did not work. This means that it looks like 6.42 is the last version of HWiNFO that operates with this remote sensor monitor.
- If you use this, remember to allow inbound connections to port 55555 via the Windows firewall - https://www.windowscentral.com/how-open-port-windows-firewall

Please wait for the web server to start..An error occured while opening the HWiNFO shared memory! - Unable to find the specified file.
 
Last edited:
On my end, version 6.42 with RSM will work and startup properly. Anything newer and all I see is the shared memory error when starting the service.

I did review your post, thank you, that is what I used to tailor a startup script. Right now I'm seeing the service stop somewhat randomly, maybe due to what you reported there with new sensors being added. Have not had a chance to dig in to figure out why or what sensors might be appearing after startup.
 
Running it with cm line: "Remote Sensor Monitor.exe" -p=5555 --hwinfo=1 --gpuz=0 --aida64=0 --ohm=0 because of shared memory error [which is now gone after setting --ohm=0] but getting this error [screenshot]
 

Attachments

  • Screenshot_2024-06-27-22-31-08-06_92460851df6f172a4592fca41cc2d2e6.jpg
    Screenshot_2024-06-27-22-31-08-06_92460851df6f172a4592fca41cc2d2e6.jpg
    277 KB · Views: 3
I've been using it on 15 systems here for many years. Win7, Win10, various Win Server editions. In my home office, various family computers, servers, etc. I'm using it for hardware monitoring in PRTG.

The program requires a bit of baby-sitting to get it working, but once you have it set up, it works fine.

It does however stop working if any sensors suddenly are added to the list in HWiNFO. For example, on my systems that have an RTX 2080, there will be a sensor named "GPU USB-C 1 Input Power" that suddenly appears anywhere from 5 to 30 minutes after the systems have been booted and logged into the first time. This causes RSM to stop working altogether (the web server dies), and RSM simply needs to be restarted. The solution is to disable+hide all sensors in HWiNFO that act this way. Once you have figured out things like this, RSM will work ok.

Another quirk is that if you're running RivaTuner Statistic Server (RTSS) on the same system, it seems like you need to start/restart HWiNFO/RSM/RTSS in a particular order to avoid issues with RSM. Also, RTSS will sometimes add an FPS sensor in HWiNFO, and it can cause issues. Disable+hide this one as well. I don't understand why there is no option to fully disable HWiNFO and RTSS integration, as this would fix what I'd want to do there. I don't care about RTSS and HWiNFO exchanging information at all.

However... a permanent fix to all the things I mentioned above, would be for the developer of HWiNFO to add a REST(ful) webserver or even WMI to HWiNFO, allowing us to monitor the sensors with an external program - without needing stuff like RSM in the first place. I really hope the developer would consider something like this in the future.

Below is the bat script I'm using in my shell:startup folder to solve the abovementioned issue with starting/restarting HWiNFO/RSM/RTSS. Name it anything you want. You can also use it to restarts RSM when it stops working. It requires an external tool named hstart.exe (Hidden Start) which allows starting console programs without showing the shell window. If you can find an old version of hstart (v4.1), the license it has allows using it for free.


Code:
@ECHO off

SET /A count = 0
:loopRtss
ECHO Waiting for process RTSS.exe...
TASKLIST /FI "IMAGENAME eq RTSS.exe" 2>NUL | FIND /I /N "RTSS.exe">NUL
IF %ERRORLEVEL% EQU 0 (
    ECHO Process RTSS.exe found.
    GOTO :okRtss
) ELSE (
    IF %count% EQU 7 ( GOTO :okRtss )
    ECHO Launching RTSS.exe...
    START "" /D "C:\Program Files (x86)\RivaTuner Statistics Server\" /B rtss.exe
    TIMEOUT /T 10 /NOBREAK
    SET /A count = count + 1
    GOTO :loopRtss
)
ECHO RTSS.exe started.

:okRtss
TIMEOUT /T 10 /NOBREAK


SET "launchedHWiNFO="
SET /A count = 0
:loopHwinfo64
ECHO Waiting for process HWiNFO64.exe...
TASKLIST /FI "IMAGENAME eq HWiNFO64.exe" 2>NUL | FIND /I /N "HWiNFO64.exe">NUL
IF %ERRORLEVEL% EQU 0 (
    ECHO Process HWiNFO64.exe found.
    GOTO :okHwinfo
) ELSE (
    IF %count% EQU 7 ( GOTO :Error )
    SET "launchedHWiNFO=1"
    ECHO Launching HWiNFO64.exe...
    START "" /D "D:\Portables\HWiNFO64" /MIN /B HWiNFO64.exe
    TIMEOUT /T 10 /NOBREAK
    SET /A count = count + 1
    GOTO :loopHwinfo64
)
ECHO HWiNFO64.exe started.

:okHwinfo
TIMEOUT /T 10 /NOBREAK

REM Note: Using hstart.exe to ensure the shell window closes after starting Remote.Sensor.Monitor
IF DEFINED launchedHWiNFO ( TIMEOUT /T 10 /NOBREAK )
ECHO Checking to see if RSM process is already running...
TASKLIST /FI "IMAGENAME eq Remote Sensor Monitor.exe" 2>NUL | FIND /I /N "Remote Sensor Monitor.exe">NUL
IF %ERRORLEVEL% EQU 0 (
    ECHO Terminating process...
    WMIC PROCESS Where Name='Remote Sensor Monitor.exe' Delete
) ELSE (
    ECHO Launching process...
    "D:\exebat\hstart.exe" /NOCONSOLE /SHELL /D="D:\Portables\HWiNFO64\Remote.Sensor.Monitor" ""D:\Portables\HWiNFO64\Remote.Sensor.Monitor\Remote Sensor Monitor.exe" --hwinfo=1 --gpuz=0 --aida64=0 --ohm=0"
    REM START "" /D "D:\Portables\HWiNFO64\Remote.Sensor.Monitor" /B "Remote Sensor Monitor.exe" --hwinfo=1 --gpuz=0 --aida64=0 --ohm=0
    REM "D:\Portables\HWiNFO64\Remote.Sensor.Monitor\Remote Sensor Monitor.exe" --hwinfo=1 --gpuz=0 --aida64=0 --ohm=0
    GOTO :done
)


TIMEOUT /T 10 /NOBREAK
TASKLIST /FI "IMAGENAME eq Remote Sensor Monitor.exe" 2>NUL | FIND /I /N "Remote Sensor Monitor.exe">NUL
IF %ERRORLEVEL% EQU 0 (
    ECHO Terminating process...
    WMIC PROCESS Where Name='Remote Sensor Monitor.exe' Delete
) ELSE (
    ECHO Launching process...
    "D:\exebat\hstart.exe" /NOCONSOLE /SHELL /D="D:\Portables\HWiNFO64\Remote.Sensor.Monitor" ""D:\Portables\HWiNFO64\Remote.Sensor.Monitor\Remote Sensor Monitor.exe" --hwinfo=1 --gpuz=0 --aida64=0 --ohm=0"
    REM START "" /D "D:\Portables\HWiNFO64\Remote.Sensor.Monitor" /B "Remote Sensor Monitor.exe" --hwinfo=1 --gpuz=0 --aida64=0 --ohm=0
    REM "D:\Portables\HWiNFO64\Remote.Sensor.Monitor\Remote Sensor Monitor.exe" --hwinfo=1 --gpuz=0 --aida64=0 --ohm=0
)


:done
REM TIMEOUT 10
GOTO :END


:Error
ECHO.
ECHO.
ECHO ---------------------------------------------------------
ECHO ---- ERROR: timeout. Process HWiNFO64.exe NOT found. ----
ECHO ---------------------------------------------------------
TIMEOUT 10

:END
Can you explain what script do?
 
Back
Top