Hi, as mentioned here, I created a short python script, which reads Temperatures from SpeedFan log file and pushes the values to pimatic.
This is very early in dev, but runs good for me on a few machines
screen:
.
Install SpeedFan. Now head to the configuration and select the tab Log
. Click Enabled
and set as Decimal seperator
a .
(dot instead comma). I want just one decimal, so I set Max decimals
to 1
Now click the Temperatures
Tab, choose the device you want and press F2
(rename). Change the name and make sure you add .temp
to the end of it. eg SSD.temp
or CPU.temp
. So this value gets recognized as a temperature.
Now you are finished with the configuration of speedfan.
You have to install python 2.7 and install module requests (pip install requests
in cmd)
Edit the default.py
and change following values:
pc_name =
(choose a name)
interval = 30
(waits 30s between pushes)
path = 'C:\Program Files (x86)\SpeedFan\\'
if necessary (default path - but keep the double backslash the end!)
Edit pim.py
and change ip, host, username, password
Now you have to create variables in pimatic for the values you want to be pushed to pimatic.
The variable names have to be named after following scheme:
‘sf-desktop-cpu-temp’ or
’sf-htpc-ssd-temp’
the first part consists of ‘sf’ (‘SpeedFan’)
the second part ist the pc_name
(you entered/edited in the default.py
)
next comes the ‘device’ you want to read values from
and last you have to set, what values you want to read from specified device.
To show this variables in the GUI, add a device like this (change expression
to your variable-id’s you created in the step before)
example: link to post from @incmve
To autostart this script, I created a windows service with the ‘nssm’ tool.
Open cmd as Admin, navigate to nssm.exe and type nssm install pimatic-speedfan
(or choose other name)
As Path
add C:\Python27\pythonw.exe
(path to pythonw)
As Arguments
choose your default.py
script (absolute path eg C:\whatever\default.py
)
This service is going to start at next boot (or start it manually - enter in cmd (or win+r): services.msc
)
Now search for your given name and start it.
You may ask: ‘what about the device (in GUI), when the PC is offline’?
I made some thoughts on that, and wrote a short script, which adds and removes the device from page, if the PC is online/offline.
Very simple with two rules (will post only one!):
if desktop1 is absent
(‘desktop1’ is your ping-device!)
then execute "python /opt/scripts/pimatic/addDeviceToPage.py favourite rem sf-desktop1"
(need to install python on pimatic host, too!)
You need to edit addDeviceToPage.py
and change ip, host, username, password
Of course you need to edit the path to the script and change parameters:
First is ‘pageId’, second is ‘rem’ or ‘add’, last you have to specify the deviceId
Atm it is not possible to create rules with this values eg (if cpu temp is greater 50 for 5 minutes) (SF can handle that, but if there is demand on that, I could use some ‘raw values’ to accomplish that!
In future I will add the support fan speeds and voltages! (Which are both supported by SpeedFan)
I hope I did not forget anything and someone is going to test this!
Feel free to post any question/request!
PS: Sorry for the long waiting, do not have much spare time atm (took some time to write this)!
original post:
! Hi, last week I started to think about how to get temps, speed, etc (from windows pc) to pimatic.
As I used Speedfan for years now to monitor my temps and control my fans and it has a log option, I started to write a short python script for that. It reads the log and pushes the values to pimatic via API.
.
Here is an example screenshot (how it looks atm):
.
If there is demand on this, I would love to share it with you!