Speedtest CLI by Ookla - Internet Up-/Downlink Measurement Integration

This topic was automatically closed 41 days after the last reply. New replies are no longer allowed.

Anyone already achieved a working openhab 3 porting?

This works on OH3

items file

String SpeedtestSummary “Speedtest [%s]” <“speedtest_summary”>
Number SpeedtestResultPing “Ping [%.3f ms]” <“speedtest_ping”>
Number SpeedtestResultDown “Download [%.2f Mbit/s]” <“speedtest_download”>
Number SpeedtestResultUp “Upload [%.2f Mbit/s]” <“speedtest_upload”>
String SpeedtestRunning “Status… [%s]” <“speedtest_run”>
Switch SpeedtestRerun “Manual launch” <“speedtest_reload”>
DateTime SpeedtestResultDate “Last Run [%1$td.%1$tm.%1$tY, %1$tH:%1$tM]” <“speedtest_date”>
String SpeedtestResultError “Error Message [%s]” <“speedtest_error”>
String SpeedtestResultImage “Result”

speedtest rule

rule “Speedtest”

when
Time cron “0 0/15 * * * ?” or
Item SpeedtestRerun changed from OFF to ON or
Item SpeedtestRerun received command ON

then
val Number calc = 125000 // Converting from bits to Mbits
logInfo(“speedtest”, “–> speedtest executed…”)
SpeedtestRunning.postUpdate(“Measurement started…”)

// execute the script, you may have to change the path depending on your system
// Please use -f json and not -f json-pretty
var speedtestCliOutput = executeCommandLine(Duration.ofSeconds(120),"sudo","-u","openhabian","/usr/bin/speedtest","-f","json")
logInfo("speedtest", "--> speedtest output:\n" + speedtestCliOutput)
SpeedtestRunning.postUpdate("Results being analyzed...")
// starts off with a fairly simple error check, should be enough to catch all problems I can think of
if (speedtestCliOutput.startsWith("{\"type\":\"result\",")) {
    var ping = Float::parseFloat(transform("JSONPATH", "$.ping.latency", speedtestCliOutput))
    SpeedtestResultPing.postUpdate(ping)
    var float down = Float::parseFloat(transform("JSONPATH", "$.download.bandwidth", speedtestCliOutput))
    down = (down / calc)
    SpeedtestResultDown.postUpdate(down)
    var float up = Float::parseFloat(transform("JSONPATH", "$.upload.bandwidth", speedtestCliOutput))
    up = (up / calc)
    SpeedtestResultUp.postUpdate(up)
    var String url = transform("JSONPATH", "$.result.url", speedtestCliOutput)
    val img = url + ".png"
    SpeedtestResultImage.postUpdate(img)
    SpeedtestSummary.postUpdate(String::format("ᐁ  %.1f Mbit/s  ᐃ %.1f Mbit/s (%.0f ms)", down, up, ping))
    SpeedtestRunning.postUpdate("-")
    // update timestamp for last execution
    val DateTimeType ResultDate = DateTimeType.valueOf(transform("JSONPATH", "$.timestamp", speedtestCliOutput))
    SpeedtestResultDate.postUpdate(ResultDate)
}
else
{
    SpeedtestResultPing.postUpdate(0)
    SpeedtestResultDown.postUpdate(0)
    SpeedtestResultUp.postUpdate(0)
    SpeedtestSummary.postUpdate("(unknown)")
    SpeedtestRunning.postUpdate("Error")
    logError("speedtest", "--> speedtest failed. Output:\n" + speedtestCliOutput)
}
SpeedtestRerun.postUpdate(OFF)
SpeedtestRunning.postUpdate("Measurement terminated...")

end

/etc/openhab/misc/exec.whitelist file, add

sudo -u openhab speedtest -f json

/etc/sudoers, add

openhab ALL=(ALL) NOPASSWD:ALL

2 Likes

For me its working alomst like posted above from @stefaanbolle, gut did not need to use the user in my execute commandline.

Make sure to

  • add the whitelist entry
  • change the executeCommandline part to the new OH3 syntax (!)
  • install jsonpath transformation
  • use the if condition like shown above

Here is my full working rule for comparison:

when

    Time cron "0 0/15 * * * ?" or
    Item SpeedtestRerun received command ON

then

    //logInfo(ruleId, "--> speedtest executed...")
    SpeedtestRunning.postUpdate("Messung läuft...")

    // execute the script, you may have to change the path depending on your system
    // Please use -f json and not -f json-pretty
    //val speedtestExecute = "speedtest -f json"
    var speedtestCliOutput = executeCommandLine(Duration.ofSeconds(120),"/usr/bin/speedtest", "-f", "json")

    // for debugging:
    // var String speedtestCliOutput = "Ping: 43.32 ms\nDownload: 21.64 Mbit/s\nUpload: 4.27 Mbit/s"
    // logInfo(ruleId, "--> speedtest output:\n" + speedtestCliOutput + "\n\n")
    SpeedtestRunning.postUpdate("Datenauswertung...")

    // starts off with a fairly simple error check, should be enough to catch all problems I can think of
    if (speedtestCliOutput.startsWith("{\"type\":\"result\","))
    {
        var ping = Float::parseFloat(transform("JSONPATH", "$.ping.latency", speedtestCliOutput))
        SpeedtestResultPing.postUpdate(ping)

        var float down = Float::parseFloat(transform("JSONPATH", "$.download.bandwidth", speedtestCliOutput))
        down = (down / calc)
        SpeedtestResultDown.postUpdate(down)

        var float up = Float::parseFloat(transform("JSONPATH", "$.upload.bandwidth", speedtestCliOutput))
        up = (up / calc)
        SpeedtestResultUp.postUpdate(up)

        SpeedtestSummary.postUpdate(String::format("ᐁ  %.1f Mbit/s  ᐃ %.1f Mbit/s (%.0f ms)", down, up, ping))

        SpeedtestRunning.postUpdate("-")

        // update timestamp for last execution
        val DateTimeType ResultDate = DateTimeType.valueOf(transform("JSONPATH", "$.timestamp", speedtestCliOutput))
        SpeedtestResultDate.postUpdate(ResultDate)
    }
    else
    {
        SpeedtestResultPing.postUpdate(0)
        SpeedtestResultDown.postUpdate(0)
        SpeedtestResultUp.postUpdate(0)
        SpeedtestSummary.postUpdate("(unbekannt)")
        SpeedtestRunning.postUpdate("Fehler")

        logError(ruleId, "--> speedtest failed. Output:\n" + speedtestCliOutput + "\n\n")
    }

    SpeedtestRerun.postUpdate(OFF)

end
2 Likes

perfect - works great!

I just integrated my own optimization of the speedtest command to avoid regular manual confirmation:

var speedtestCliOutput = executeCommandLine(Duration.ofSeconds(120),"/usr/bin/speedtest", "Y", "-f", "json","--accept-gdpr")
1 Like

I’m also trying it out, but i’ve got no luck with the latest script.
My output stays empty?

2021-01-11 16:02:53.184 [INFO ] [openhab.event.ItemCommandEvent      ] - Item 'SpeedtestRerun' received command ON
2021-01-11 16:02:53.185 [INFO ] [.openhab.core.model.script.speedtest] - –> speedtest executed…
2021-01-11 16:02:53.185 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'SpeedtestRerun' changed from OFF to ON
2021-01-11 16:02:53.187 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'SpeedtestRunning' changed from Measurement terminated... to Measurement started…
2021-01-11 16:02:53.527 [INFO ] [.openhab.core.model.script.speedtest] - --> speedtest output:
2021-01-11 16:02:53.529 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'SpeedtestRunning' changed from Measurement started… to Results being analyzed...
2021-01-11 16:02:53.533 [ERROR] [.openhab.core.model.script.speedtest] - --> speedtest failed. Output:
2021-01-11 16:02:53.534 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'SpeedtestRunning' changed from Results being analyzed... to Error
2021-01-11 16:02:53.535 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'SpeedtestRerun' changed from ON to OFF
2021-01-11 16:02:53.536 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'SpeedtestRunning' changed from Error to Measurement terminated...

But maybe a bit weird, my speedtest doesn’t return a ping latency result? I’ve tried to remove the ping values in the script, but the output value stays empty?

/usr/bin/speedtest-cli

Retrieving speedtest.net configuration...
Testing from Telenet (178.119.37.152)...
Retrieving speedtest.net server list...
Selecting best server based on ping...
Hosted by Proximus (Brussels) [59.25 km]: 26.172 ms
Testing download speed................................................................................
Download: 92.25 Mbit/s
Testing upload speed......................................................................................................
Upload: 18.33 Mbit/s

I can only guess, since you postet 2 logs, but not the rule itself.
From reading what was provided i would guess that you are not using the json parameter.
Or the second log is just an example of a working speedtest you did yourself on console?!
Also there seems no error output to be available when the speedtest is erroring.

Can you provide the exact rule you are using to see if somethings wrong?

And as additional question:
Do you really want to use speedtest cli by ookla (thats what this thread is about)
or do you want to use the older cli version which has a separate thread here.

Sorry, didn’t understand that these were different things. :blush:
I just removed the old one, and restarted with the Ookla one.

I can run the speedtest command as expected (see below). But once I move to the rules, it’s not working anymore. Seems that my output is ‘null’?

2021-01-13 14:39:15.628 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'SpeedtestRerun' changed from OFF to ON
2021-01-13 14:39:16.077 [INFO ] [.openhab.core.model.script.SPEEDTEST] - --> speedtest output: 
null

Not sure what I’m missing.

Speedtest command:

/usr/bin/speedtest -f json
{"type":"result","timestamp":"2021-01-13T13:35:44Z","ping":{"jitter":3.6480000000000001,"latency":15.234},"download":{"bandwidth":17460737,"bytes":232100420,"elapsed":15008},"upload":{"bandwidth":2355118,"bytes":17133720,"elapsed":7314},"packetLoss":0,"isp":"Telenet","interface":{"internalIp":"192.168.222.10","name":"ens18","macAddr":"B2:2F:1A:D1:78:37","isVpn":false,"externalIp":"XXXXXXXXX"},"server":{"id":30594,"name":"Orange Belgium","location":"Evere","country":"Belgium","host":"speedtest01.orange.be","port":8080,"ip":"212.224.131.122"},"result":{"id":"4ef15b76-abcb-49c6-b803-c801a872b6f1","url":"https://www.speedtest.net/result/c/4ef15b76-abcb-49c6-b803-c801a872b6f1"}}

And the rule:

rule "Speedtest"
when
    Item SpeedtestRerun received command ON
then
    SpeedtestRunning.postUpdate("Messung läuft...")
    var speedtestCliOutput = executeCommandLine(Duration.ofSeconds(120),"/usr/bin/speedtest", "-f", "json")
    logInfo("Speedtest", "--> speedtest output:\n" + speedtestCliOutput + "\n\n")

cat misc/exec.whitelist

/usr/bin/speedtest -f json

cat /etc/sudoers

openhab ALL=(ALL:ALL) ALL

Seems I had to run speedtest from CLI once, as the user openhab. This gave me some questions (Y/N), and once that done, it works…

runuser -u openhab speedtest

==============================================================================

You may only use this Speedtest software and information generated
from it for personal, non-commercial use, through a command line
interface on a personal computer. Your use of this software is subject
to the End User License Agreement, Terms of Use and Privacy Policy at
these URLs:

	https://www.speedtest.net/about/eula
	https://www.speedtest.net/about/terms
	https://www.speedtest.net/about/privacy

==============================================================================

Do you accept the license? [type YES to accept]: YES
License acceptance recorded. Continuing.

==============================================================================

Ookla collects certain data through Speedtest that may be considered
personally identifiable, such as your IP address, unique device
identifiers or location. Ookla believes it has a legitimate interest
to share this data with internet providers, hardware manufacturers and
industry regulators to help them understand and create a better and
faster internet. For further information including how the data may be
shared, where the data may be transferred and Ookla's contact details,
please see our Privacy Policy at:

       http://www.speedtest.net/privacy

==============================================================================

Do you accept the license? [type YES to accept]: YES
License acceptance recorded. Continuing.


   Speedtest by Ookla

     Server: Arxus NV - Brussels (id = 26887)
        ISP: Telenet
    Latency:    17.05 ms   (0.56 ms jitter)
   Download:    85.97 Mbps (data used: 135.0 MB)                               
     Upload:    18.81 Mbps (data used: 9.0 MB)                               
Packet Loss:     0.0%
 Result URL: https://www.speedtest.net/result/c/b953928b-94ef-4156-ab47-d5e748a50a17
root@doornroosje:/openhab# runuser -u openhab speedtest -f json
runuser: options --{shell,fast,command,session-command,login} and --user are mutually exclusive

runuser -u openhab – /usr/bin/speedtest -f json

{"type":"result","timestamp":"2021-01-13T13:59:26Z","ping":{"jitter":3.4969999999999999,"latency":13.488},"download":{"bandwidth":12273758,"bytes":125462656,"elapsed":10513},"upload":{"bandwidth":2351923,"bytes":13140864,"elapsed":5602},"packetLoss":0,"isp":"Telenet","interface":{"internalIp":"192.168.222.10","name":"ens18","macAddr":"B2:2F:1A:D1:78:37","isVpn":false,"externalIp":"XXXXXXXXX"},"server":{"id":12627,"name":"Proximus","location":"Brussels","country":"Belgium","host":"speedtest101.proximus.be","port":8080,"ip":"91.183.245.149"},"result":{"id":"86c5e30e-ed3b-486c-a772-a7487c3fb25d","url":"https://www.speedtest.net/result/c/86c5e30e-ed3b-486c-a772-a7487c3fb25d"}}

And the next run through OH rules:

2021-01-13 15:00:33.353 [INFO ] [openhab.event.ItemCommandEvent      ] - Item 'SpeedtestRerun' received command ON
2021-01-13 15:00:48.954 [INFO ] [.openhab.core.model.script.SPEEDTEST] - --> speedtest output: 
{"type":"result","timestamp":"2021-01-13T14:00:48Z","ping":{"jitter":3.5049999999999999,"latency":17.376999999999999},"download":{"bandwidth":11766095,"bytes":104203264,"elapsed":9101},"upload":{"bandwidth":2347569,"bytes":10127744,"elapsed":4305},"packetLoss":0,"isp":"Telenet","interface":{"internalIp":"192.168.222.10","name":"ens18","macAddr":"B2:2F:1A:D1:78:37","isVpn":false,"externalIp":"XXXXXXXXX"},"server":{"id":31124,"name":"OBE","location":"Brussels","country":"Belgium","host":"obe-speedtest01.orange.be","port":8080,"ip":"94.107.226.226"},"result":{"id":"a8788d68-620d-42d2-9418-d9b7ffa138f3","url":"https://www.speedtest.net/result/c/a8788d68-620d-42d2-9418-d9b7ffa138f3"}}
2021-01-13 15:00:48.959 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'SpeedtestRunning' changed from Meting loopt... to Datenauswertung...
2021-01-13 15:00:49.249 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'SpeedtestResultPing' changed from 0.0 to 17.377
2021-01-13 15:00:49.252 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'SpeedtestResultDown' changed from 0.0 to 94.12876000
2021-01-13 15:00:49.256 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'SpeedtestResultUp' changed from 0.0 to 18.78055200
2021-01-13 15:00:49.262 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'SpeedtestSummary' changed from NULL to ᐁ  94.1 Mbit/s  ᐃ 18.8 Mbit/s (17 ms)
2021-01-13 15:00:49.263 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'SpeedtestRunning' changed from Datenauswertung... to -
2021-01-13 15:00:49.266 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'SpeedtestResultDate' changed from NULL to 2021-01-13T14:00:48.000+0000
2021-01-13 15:00:49.267 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'SpeedtestRerun' changed from ON to OFF

Yeah those thing occur too sometimes in my environment.
I wanted to try running speedtest --accept-gdpr once a week via cron without using the answer.
But it seems to be working in openHAB 3 so far without the need of doing it again.
So maybe i had an old speedtest version installed.

Hello,
I have installed OOkla speedtest.

I have some issue I wish to dig with your help and make the rule to work.

1st Issue) when I run (OPENHABIAN installed or Rpi3b+)

sudo /usr/bin/speedtest -f json

I get

{"type":"log","timestamp":"2021-01-21T17:18:07Z","message":"Error: [110] Cannot open socket: Timeout occurred in connect.","level":"error"}

for few seconds and next the correct resoults:

{"type":"result","timestamp":"2021-01-21T17:20:51Z","ping":{"jitter":3.1259999999999999,"latency":17.286999999999999},"download":{"bandwidth":3630937,"bytes":49418144,"elapsed":15011},}

2nd Issue) When I trigger the Rule on log file I end up with

[ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID ‘SpeedTest-2’ failed: cannot invoke method public boolean java.lang.String.startsWith(java.lang.String) on null in SpeedTes3

and I got no results even if run
runuser -u openhab speedtest
and say yes nore than one time…

I think I discover something:
When I accept GDPR, it is not saved because Openhab2 folder not exist anymore…

[error] Failed to save settings: boost::filesystem::create_directories: Permissi on denied: “/var/lib/openhab2/.config”
[error] Path used: /var/lib/openhab2/.config/ookla/speedtest-cli.json

where is that I can change the path to correct one ???

following the whole screen resoult

openhabian@openHABianPi:/etc$ sudo runuser -u openhab speedtest
==============================================================================

You may only use this Speedtest software and information generated
from it for personal, non-commercial use, through a command line
interface on a personal computer. Your use of this software is subject
to the End User License Agreement, Terms of Use and Privacy Policy at
these URLs:

        https://www.speedtest.net/about/eula
        https://www.speedtest.net/about/terms
        https://www.speedtest.net/about/privacy

==============================================================================

Do you accept the license? [type YES to accept]: YES
License acceptance recorded. Continuing.

[error] Failed to save settings: boost::filesystem::create_directories: Permissi                                                                                                                                                             on denied: "/var/lib/openhab2/.config"
[error] Path used: /var/lib/openhab2/.config/ookla/speedtest-cli.json
==============================================================================

Ookla collects certain data through Speedtest that may be considered
personally identifiable, such as your IP address, unique device
identifiers or location. Ookla believes it has a legitimate interest
to share this data with internet providers, hardware manufacturers and
industry regulators to help them understand and create a better and
faster internet. For further information including how the data may be
shared, where the data may be transferred and Ookla's contact details,
please see our Privacy Policy at:

       http://www.speedtest.net/privacy

==============================================================================

Do you accept the license? [type YES to accept]: YES
License acceptance recorded. Continuing.

[error] Failed to save settings: boost::filesystem::create_directories: Permissi                                                                                                                                                             on denied: "/var/lib/openhab2/.config"
[error] Path used: /var/lib/openhab2/.config/ookla/speedtest-cli.json

   Speedtest by Ookla

[error] Error: [110] Cannot open socket: Timeout occurred in connect.
     Server: WARIAN - Milano (id = 21966)
        ISP: EOLO
    Latency:    17.39 ms   (3.23 ms jitter)
   Download:    29.97 Mbps (data used: 21.3 MB)
     Upload:     3.16 Mbps (data used: 3.0 MB)

I found the solution to make it works!!!

Inside var/lib folder type

sudo chown -R openhab:openhab openhab2

ookla speedtest needs (I think it’s linked to openhabian settings) openhab2 folder. Even if removed, the program creates it again, but with root group and user, it needs to be changed to openhab :slight_smile:

Small question: the download that’s been represented here, is that a max or average?

I’ve got a internet connection with a max download of 300MB. And I’m running once a night a small script to check if my real download represent the theoretical download. Never trust your provider. :wink:
The script sends a warning if download is below 200MB. And I’m getting every night a warning?

  • when I check the speedtest with openhab, I’ve got 80MB.
  • when I check this at the same time with speedtest.net, I’ve got 224MB

Both machines (openhab=linux, speedtest.net=windows) are virtual machines, on the same hypervisor, on the same network. And the test is done with a fix option f server ID (-s 31124). And both tests are launched at the same time. So I find it a bit weird that there is a huge difference between both.

When I check the networkspeed of the openhab server, I’m getting 12,6 GB

iperf -c 192.168.0.1
------------------------------------------------------------
Client connecting to 192.168.0.1, TCP port 5001
TCP window size: 2.09 MByte (default)
------------------------------------------------------------
[  3] local 192.168.0.2 port 50590 connected with 192.168.0.1 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  14.7 GBytes  12.6 Gbits/sec

I’m just trying to understand how the read the results…

That won‘t work…
Doing two speedtests on different machines at the same time will always fail.

Found my issue (different speed between speedtest.net and speedtest-cli).
Problem was linked with a firewall. :blush:

Seems that IDS functionallity has a huge impact on speedtest-cli?
A browser using speedtest isn’t impacted (so much) by the IDS.

Fresh migration from 2.5.12 to 3.0.1 performed today and speedtest stopped working. Found this helpful thread and got it working again. Thanks guys, highly appreaciated.

For what it’s worth, I also ran into a topic not mentioned here which was showing in the log as follows:

2021-02-26 00:08:19.477 [ERROR] [org.influxdb.impl.BatchProcessor    ] - Batch could not be sent. Data will be lost

org.influxdb.InfluxDBException$FieldTypeConflictException: partial write: field type conflict: input field "value" on measurement "SpeedtestResultDate" is type integer, already exists as type float dropped=1

	at org.influxdb.InfluxDBException.buildExceptionFromErrorMessage(InfluxDBException.java:144) ~[bundleFile:?]

	at org.influxdb.InfluxDBException.buildExceptionForErrorState(InfluxDBException.java:173) ~[bundleFile:?]

	at org.influxdb.impl.InfluxDBImpl.execute(InfluxDBImpl.java:827) ~[bundleFile:?]

	at org.influxdb.impl.InfluxDBImpl.write(InfluxDBImpl.java:460) ~[bundleFile:?]

	at org.influxdb.impl.OneShotBatchWriter.write(OneShotBatchWriter.java:22) ~[bundleFile:?]

	at org.influxdb.impl.BatchProcessor.write(BatchProcessor.java:340) [bundleFile:?]

	at org.influxdb.impl.BatchProcessor$1.run(BatchProcessor.java:287) [bundleFile:?]

	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [?:?]

	at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]

	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) [?:?]

	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]

	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]

	at java.lang.Thread.run(Thread.java:834) [?:?]

That was caused by this issue:

The solution (for me) was to simply drop the old measurement in influx using:

$ influx 
Connected to http://localhost:8086 version 1.8.4
InfluxDB shell version: 1.8.4
> auth
username: admin
password: 
> SHOW DATABASES
name: databases
name
----
openhab_db
> use openhab_db
Using database openhab_db
> SHOW FIELD KEYS

name: SpeedtestResultDate
fieldKey fieldType
-------- ---------
value    float

CAREFUL: The very next command is deleting the old values.

So have a thought, if this is an acceptable solution for you. For me this is OK as I do not need the long-time history of this measurement however this may be different for your usecase.

> drop measurement SpeedtestResultDate

After this, I had my speedtest back in OH3 :slight_smile: thanks to the good advice from you guys above.

Bert

I had exactly the same issue as yours :slight_smile:
After upgrade from OH 2.5 to OH 3 I have decided to do some cleanup and removed /var/lib/openhab2 folder.
After some digging it turned out that speedtest app is using openhab user’s home directory which was not changed during the upgrade process.
It is set in /etc/passwd

So you need to change home directory to /var/lib/openhab (remove “2”) and restart the system.
After that speedtest should work without a problem. At least it works in my case.

I hope it can help someone with this kind of problem :slight_smile:

hello,
I tested it. can it be that it doesn’t work with opnehab 3? i can’t get it to work. I have a fresh installed OH3 on debian.
It stucks on “Messung läuft” status. Where can I check whether the measurement is really running?
“visibility” doesn’t work anymore on OH3? It’s still included in the instructions