ThermoHID
For those of you who want to use 1-3 USB TEMPer HID devices (from PCSensor) here you have ThermoHID.
The software is written in Delphi6 - so there is no need for any .NET framework here.
I couldn't find any programs out there, with the features I wanted, so I made my own.
These devices do not have any internal power, and therefore cannot work if they are not connected via a USB port.
Note: It does NOT support the older USB TEMPer devices that use a USB serial port (pre mid-2009)
Example: Device Manager reports the TEMPer Hum device as USB-Serial CH340
The following devices CAN be used:-
(without external probe)
(with external probe)
(internal and external probe)
(internal and relative humidity)
(internal and relative humidity. New)
(internal and external probe)
(without external probe, waterproof shell)
(without external probe. New)
(internal and K-Type thermocouple. New)
Due to the rate at which the program is changing at the moment, I haven't had time to write a manual for it. When it calms down a bit I'll start one. Until then, you have the tooltip help sprinkled throughout the program. If you have any difficulty working things out, then let me know, because it probably means that it needs to be put in the manual.
The program uses HidFTDll.dll to read/write to the devices, RDingUSB.dll to read/write to the new TEMPerV1.2 devices, and SonixUSB.dll to read/write to the new TEMPer1K2 devices
The program is currently distributed as freeware
V2.0.1.23 Released 05 Sep 2011
| Function Type | Description |
|---|---|
| Add | 'Add' plots the sum of the inputs |
| Average | The Average Function will calculate the average of every group of Period points |
| Bollinger | The Bollinger Function uses simple or exponential moving average, to construct Bollinger Trading Bands |
| Copy | A direct copy of the input Series |
| Curve Fitting | This draws a fitted polynomial through data inputs, using the TypeFitting formula |
| Divide | The Divide Function plots inputs, divided in descending order of inclusion |
| Exponential Average | Exponential average based on Weight |
| Exponential Moving Average | Exponential moving average based on Weight |
| Exponential Trend | This draws the best exponential trend line through the points in an input series |
| High | The High Function plots the high point of inputs |
| Low | The Low Function plots the low point of inputs |
| MACD | Moving Average Convergence Divergence |
| Momentum | Each Y value is the current point's Y value, minus the last Period point's Y value |
| Momentum Division | Each Y value is the current point's Y value, divided by the last Period point's YValue, expressed in percents |
| Moving Average | The Moving Average Function will calculate the simple or weighted average of every group of Period points |
| Multiply | The Multiply Function plots the value of inputs multiplied together |
| Root Mean Square | The Root Mean Square Function plots the RMS value of the inputs |
| Relative Strength Index | The RSI Function calculates a percent value, based on financial data. Depending on TRSISyle type a different formula will be used to calculate the RSI value |
| Standard Deviation | This maps the Standard Deviation (or Complete Standard Deviation) of every group of Period points |
| Stochastic | This gets all points from the Source series, performs a function operation on points, and stores the results in the ParentSeries |
| Subtract | This plots the value of inputs subtracted in descending order of inclusion |
| Trend | This draws the best trend line through the points of the input Series |
TEMPerV1.2 devices
The DLL does not have a function to enumerate devices (meaning, I don't know how to read multiple devices)
Each device has the ability to store a single calibration/correction value. (ThermoHID has its own table anyway)
My measurements show that they have an internal self-heating of approximately 1->2°C
They have a faster measurement time. Approximately 4 readings per second can be achieved compared with 1 reading every 2 to 3 seconds for the older devices.
There are no configuration files or 'Setup' routine - it should just work when you plug it in and start the program.
The devices are seen as standard 'Human Interface Devices' (HID), and MS Windows 2000 and above should automatically install the required drivers
If you are having difficulty, please try these steps:
1) Put the 'ThermoHID.exe', 'HidFTDll.dll', 'RDingUSB.dll' and 'SonixUSB.dll' in a folder of your choice.
2) Start ThermoHID.exe
3) In the Options -> DLL menu option at the top, look to see if 'DLL Loaded' is greyed out and followed by some long number in brackets.
4) Plug in the device.
5) Ensure that the first button (just below the File menu) shows 'No Devices' if there are none plugged in, or it shows '1 device(s) found' if there is one device plugged in, etc.
6) Go to 'Help-> Debug' and look at the middle box at the bottom, which, when you move the mouse over it, pops up a tooltip saying 'HID Devices Found'. Each TEMPerHID device is found twice. (Sensor and LED)'. Ensure this box contains 'PCsensor Temper' or 'TEMPerV1.2' written twice.
7) Select 'Help->Debug' again to turn off the debug windows.
8) Press 'Read Temp' or 'SimulRead' button to read the device. The device should display the temperature where it initially says 'Temp1'.
If you are using MS Windows 2000, then 'HID.dll' from WinXP is required. This is provided in the downloaded zip.
There is no install/uninstall routine for the program.
If you want to delete it, then first start the program and check 'File->Use Ini File For Settings'
If necessary, untick it and then tick it again.
When you are asked 'Remove Registry Settings?' answer 'Yes'.
Ensure that 'Run when Windows Starts' in the Advanced Tab is unchecked.
The program can now be closed and the contents of the program folder can be deleted.
This may include the following files:-
ThermoHID.exe -> The program
ThermoHID.ini -> The Settings
HidFTDll.dll -> Library for accessing the TEMPerHID devices
RDingUSB.dll -> Library for accessing the new TEMPerHID and Waterproof TEMPerHID devices
SonixUSB.dll -> Library for accessing the new TEMPer1K2 devices
libeay32.dll -> Library for SMTP authentication
ssleay32.dll -> Library for SMTP authentication
InternetTempData_COMPUTERNAME_YYYY_MM.txt -> Internet Temperature Log
TempHIDData_COMPUTERNAME_YYYY_MM.txt -> Temperature Log
TempHIDData.txt -> Temperature Log
TempHIDGraph.jpg -> Graph of Temperature (used for Web Server)
ThermoHID.htm -> Output File to FTP
ThermoHID.txt -> Input File for FTP
ThermoHIDCal_COMPUTERNAME.cal -> Calibration offsets
SomeName.tee -> Saved chart files
ThermoHID.log -> Diagnostic log of program actions
ThermoHIDRealTime.txt -> Single line file containing the most recent measurements to be used for further processing.
ThermoHIDRealTime1.png -> Image of device1 current value for other applications e.g. WebcamXP
ThermoHIDRealTime2.png -> Image of device2 current value for other applications e.g. WebcamXP
ThermoHIDRealTime3.png -> Image of device3 current value for other applications e.g. WebcamXP
Has anyone tested these devices for accuracy?
If anyone has done any tests, I would be pleased to know the results.
Results of some accuracy testing on my devices.
The "Cal. Temp" column holds the temperatures for which you have calibrated the device.
If you have calibrated at more temperatures than the two extremes shown by default, you can add rows with 'Edit->Add Row'.
The offset columns show the amount by which the read temperature is adjusted, to give the final "calibrated" temperature.
The offset at other temperatures, will be interpolated between these cardinal points.
Example1: if at 0 deg the offset=4 and at 100 deg the offset= -6 then at 50 deg the reading would be adjusted by -1 deg to show 49 deg
Example2: if your device is constantly overreading by, let's say, 3 deg, then, put in an offset of -3 deg for both -40 deg and 120 deg
The program can be downloaded here:
(approx. 2MB)
If you want to use one of the languages below please place the .lng file in the same folder as the program.
Then in ThermoHID, go to Options->Settings. Select the 'Language' Tab. Select your desired language.
If you find any mistakes in the language (.lng) files please edit them with a Unicode editor ( e.g. BabelPad) and email the
I you are willing and able to translate into any other languages then email me and I will supply the file to translate.
(Right click or option-click the link and choose "Save As..." to download this file.)
Russian Language File (updated 5 September 2011)
Japanese Language File (updated 5 September 2011)
Bulgarian Language File (updated 5 September 2011)
Dutch Language File (updated 5 September 2011)
French Language File (updated 5 September 2011)
Portuguese Language File (updated 5 September 2011)
Spanish Language File (updated 5 September 2011)
German Language File (updated 5 September 2011)
Greek Language File (updated 25 September 2011)
If you need to get in touch, my email address is in the program 'About' box or Help->Email the Author
In order to use FTP, first make a text file (template) with the HTML code that you would like to present on the destination site.
From the table below, place the codes (inside square brackets) that you wish to use into the HTML file at the appropriate places.
Save the file and reference it in 'Local Destination' on the FTP tab.
An example template suitable for an FTP file template can be downloaded here
| Keyword | Example |
|---|---|
| [NumActiveDevices] | 1 to 3 |
| [TempUnits] | °F or °C or % |
| [Popup] | Popup Visible |
| [CommentText] | text to write to client web page |
| [History=x] | shows x number of history lines |
| [RangeText] | 24 hours |
| [RefreshLimit] | 1m |
| [PageCreateTime] | 3/22/2010 10:51:59 AM |
| [CurrentInternetTemperature] | 11 |
| MeasTimeIntenetTemperature] | Last Updated on May 1,8:50 AM BST |
| [InternetTemperatureLocation] | Birmingham,UK |
| [CurrentInternetHumidity] | 58 |
| [InternetActive] | 1 |
| [CurrentInternetConditions] | Mostly Cloudy |
| The following end in a number for each device (1 to 3) | |
| [DeviceID1] | Phil's Cubicle |
| [CurrentTemperature1] | 75.9 or Temp1 |
| [MeasTimeTemperature1] | 3/22/2010 10:51:59 AM |
| [UpperAlarmLimit1] | 80 |
| [LowerAlarmLimit1] | 70 |
| [EitherAlarmState1] | OK or Triggered |
| [UpperAlarmState1] | OK or Triggered |
| [LowerAlarmState1] | OK or Triggered |
| [MinTemperature1] | 68.6 |
| [MaxTemperature1] | 82.1 |
| [LowTemperature1] | 72.6 |
| [AverageTemperature1] | 73.9 |
| [HighTemperature1] | 76.7 |
| [LastAlarmMeasTime1] | 3/22/2010 10:51:59 AM |
| [CurrentHumidity1] | 36.4 |
| [DeviceType1] | HidTEMPer1 |
| [CurrentExternal1] | 27.1 |
| [DeviationAlarm] | 0.5 |
| [DeviationTrace] | Average |
| [CurrentDeviation] | 0.75 |
| [DeviationAlarmState] | OK or Triggered |
| [Dewpoint1] | 7.3 |
| [DewAlarmState1] | OK or Triggered |
ThermoHID can be run as a Service under Windows NT/2000/XP/2003/7
See this page for details
Advantages of doing so:
1) ThermoHID will automatically start when Windows starts, even before you log in. That’s helpful for continuous temperature monitoring, even with power interruptions, automatic system restarts, etc.
2) The running program will be invisible, with no icon in the system tray.
The downside is that you’ll need to have everything configured and ready to “run on autopilot.”
Program adjustments are a little more tedious to make since you cannot have the program running both as a service AND running the same EXE from your desktop.
To make a configuration change, you must
1) temporarily stop the service,
2) run ThermoHID.exe manually,
3) make your tweaks,
4) exit the program, and
5) restart the service.
Please be aware that, if you are storing the settings in the registry, then the settings will belong to the user that the service is started under.
If you only want one set of settings available then please ensure that File->Use ini file for settings is ticked.
Screen shot of ThermoHID below.


An example of ThermoHID at work
Copyright Steve Timms 2011
If you find the program useful and would like to say thanks...
TEMPer USB thermometer discussion
PCsensor (The hardware manufacturer)
RDing (The hardware manufacturer)
Other Software to control TEMPer devices (UTAC) by Albert Huntington