# Help with options on Speedtest node

**URL:** <https://discourse.nodered.org/t/help-with-options-on-speedtest-node/97713>\
**Category:** General\
**Created:** [20 June 2025 07:13 UTC](https://discourse.nodered.org/t/help-with-options-on-speedtest-node/97713 "2025-06-20T07:13:06Z")\
**Posts on this page:** 18\
**Page:** 1

<div class="post-metadata">

**Author:** ![Trying\_to\_learn](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/trying_to_learn/32/28400_2.png) [@Trying\_to\_learn](https://discourse.nodered.org/u/Trying_to_learn)\
**Post date:** [20 June 2025 07:13 UTC](https://discourse.nodered.org/t/help-with-options-on-speedtest-node/97713/1 "2025-06-20T07:13:06Z")

</div>

[the node in question](https://flows.nodered.org/node/node-red-contrib-speedtest)

Folks,

I don't mind putting in the work but also don't want to re-invent the wheel.

Recently it has been said that that node is not compatible with new versions.

I could contact the people who made it, or try myself to update it.

What's the mechanics of doing that myself?

Never done it before. 🙂

---

<div class="post-metadata">

**Author:** ![Steve-Mcl](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/steve-mcl/32/4826_2.png) [@Steve-Mcl](https://discourse.nodered.org/u/Steve-Mcl)\
**Post date:** [20 June 2025 07:26 UTC](https://discourse.nodered.org/t/help-with-options-on-speedtest-node/97713/2 "2025-06-20T07:26:40Z")

</div>

- Click the link you provided.
- Look for: "View on GitHub" link & click that
- In GitHub, select "issues"
- Click new issue button

While you are in the github issue tracker, you might spot the answer yourself or there may be an open issue already.

---

<div class="post-metadata">

**Author:** ![Trying\_to\_learn](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/trying_to_learn/32/28400_2.png) [@Trying\_to\_learn](https://discourse.nodered.org/u/Trying_to_learn)\
**Post date:** [20 June 2025 07:35 UTC](https://discourse.nodered.org/t/help-with-options-on-speedtest-node/97713/3 "2025-06-20T07:35:18Z")

</div>

Such an issue has already been submitted.

S-o-o-o-o-h-h-h......

How _hard_ is it to update the dependencies?

I've looked at one of the files shown.

It is like 8000 lines long.

That looks like a list of things required. And I get it.... They are old.  
So the mechanics of updating that list...

All should be good.

---

<div class="post-metadata">

**Author:** ![Steve-Mcl](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/steve-mcl/32/4826_2.png) [@Steve-Mcl](https://discourse.nodered.org/u/Steve-Mcl)\
**Post date:** [20 June 2025 07:42 UTC](https://discourse.nodered.org/t/help-with-options-on-speedtest-node/97713/4 "2025-06-20T07:42:15Z")

</div>

> [@Trying\_to\_learn](#):
>
> How _hard_ is it to update the dependencies?

1. fork the repository (press the fork button)
2. pull the code to your dev PC (`git clone https://github/your-fork`)
3. update the dependencies in `package.josn`
4. `npm install`
5. install locally in your node-red
  - `cd ~/.node-red`
  - `npm install /path/to/where/your/local/clone/lives`

6. start node-red & test
7. if good, commit & push changes back up to github

Once you have done that, you can install your version anywhere by using npm e.g. `npm install your-github-id/your-fork`

---

<div class="post-metadata">

**Author:** ![Trying\_to\_learn](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/trying_to_learn/32/28400_2.png) [@Trying\_to\_learn](https://discourse.nodered.org/u/Trying_to_learn)\
**Post date:** [20 June 2025 07:47 UTC](https://discourse.nodered.org/t/help-with-options-on-speedtest-node/97713/5 "2025-06-20T07:47:27Z")

</div>

Thanks.

As _easy_ as that sounds, I may need to research all the stuff needed.

As said, the 8000 line bit of code listing all the _dependencies_.... That scares me. 😉

So to `fork` it.... I don't need anything pre-installed?

I'd do the `pull` from an empty directory where I want to build the new version?

---

<div class="post-metadata">

**Author:** ![Steve-Mcl](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/steve-mcl/32/4826_2.png) [@Steve-Mcl](https://discourse.nodered.org/u/Steve-Mcl)\
**Post date:** [20 June 2025 07:58 UTC](https://discourse.nodered.org/t/help-with-options-on-speedtest-node/97713/6 "2025-06-20T07:58:31Z")

</div>

this is one of things that Gemini/ChatGPT excel at IMO.

Try putting this into a chatbot:

"Hi, I need to update the dependencies of an out of date node-red contrib node. It is a github repository located here: `https://github.com/steffenmllr/node-red-contrib-speedtest`. Can you guide me through forking, cloning, updating dependencies, committing and pushing the changes back to my fork. I already have GIT and NODE installed."

---

<div class="post-metadata">

**Author:** ![Trying\_to\_learn](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/trying_to_learn/32/28400_2.png) [@Trying\_to\_learn](https://discourse.nodered.org/u/Trying_to_learn)\
**Post date:** [20 June 2025 08:00 UTC](https://discourse.nodered.org/t/help-with-options-on-speedtest-node/97713/7 "2025-06-20T08:00:44Z")

</div>

Again, thanks.

I'm starting to use chatgpt a bit now and then.

It kind of blows my mind.

So _it_ knows that kinda stuff..... Wow.

---

<div class="post-metadata">

**Author:** ![Trying\_to\_learn](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/trying_to_learn/32/28400_2.png) [@Trying\_to\_learn](https://discourse.nodered.org/u/Trying_to_learn)\
**Post date:** [20 June 2025 08:26 UTC](https://discourse.nodered.org/t/help-with-options-on-speedtest-node/97713/8 "2025-06-20T08:26:11Z")

</div>

Ok, slow progress is being made.

A real can of worms.

I am updating things and it seems more in the global part of things.

```auto
npm install -g npm-check-updates
npm error code EACCES
npm error syscall mkdir
npm error path /usr/lib/node_modules/npm-check-updates
npm error errno -13
npm error Error: EACCES: permission denied, mkdir '/usr/lib/node_modules/npm-check-updates'
npm error at async mkdir (node:internal/fs/promises:858:10)
npm error at async /usr/lib/node_modules/npm/node_modules/@npmcli/arborist/lib/arborist/reify.js:624:20
npm error at async Promise.allSettled (index 0)
npm error at async [reifyPackages] (/usr/lib/node_modules/npm/node_modules/@npmcli/arborist/lib/arborist/reify.js:325:11)
npm error at async Arborist.reify (/usr/lib/node_modules/npm/node_modules/@npmcli/arborist/lib/arborist/reify.js:142:5)
npm error at async Install.exec (/usr/lib/node_modules/npm/lib/commands/install.js:150:5)
npm error at async Npm.exec (/usr/lib/node_modules/npm/lib/npm.js:207:9)
npm error at async module.exports (/usr/lib/node_modules/npm/lib/cli/entry.js:74:5) {
npm error errno: -13,
npm error code: 'EACCES',
npm error syscall: 'mkdir',
npm error path: '/usr/lib/node_modules/npm-check-updates'
npm error }
npm error
npm error The operation was rejected by your operating system.
npm error It is likely you do not have the permissions to access this file as the current user
npm error
npm error If you believe this might be a permissions issue, please double-check the
npm error permissions of the file and its containing directories, or try running
npm error the command again as root/Administrator.
npm error A complete log of this run can be found in: /home/me/.npm/_logs/2025-06-20T08_19_56_262Z-debug-0.log

```

I installed NR with the _official_ install script.  
No offence meant by that.... Maybe I should have made it BOLD and not italic.

The install script.  
That doesn't use `sudo`, so these errors WRT permission are a bit worrying.

I'd prefer to stop here and check what's going on.

Looking a bit more at the errors....  
_(I'm on Ubuntu BTW)_  
WHY are there `.exe` files mentioned?

---

<div class="post-metadata">

**Author:** ![Trying\_to\_learn](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/trying_to_learn/32/28400_2.png) [@Trying\_to\_learn](https://discourse.nodered.org/u/Trying_to_learn)\
**Post date:** [20 June 2025 08:33 UTC](https://discourse.nodered.org/t/help-with-options-on-speedtest-node/97713/9 "2025-06-20T08:33:26Z")

</div>

Oh the log...

```auto
0 verbose cli /usr/bin/node /usr/bin/npm
1 info using npm@10.8.2
2 info using node@v20.19.2
3 silly config load:file:/usr/lib/node_modules/npm/npmrc
4 silly config load:file:/home/me/.npmrc
5 silly config load:file:/usr/etc/npmrc
6 verbose title npm install npm-check-updates
7 verbose argv "install" "--global" "npm-check-updates"
8 verbose logfile logs-max:10 dir:/home/me/.npm/_logs/2025-06-20T08_19_56_262Z-
9 verbose logfile /home/me/.npm/_logs/2025-06-20T08_19_56_262Z-debug-0.log
10 silly packumentCache heap:4345298944 maxSize:1086324736 maxEntrySize:543162368
11 silly logfile start cleaning logs, removing 1 files
12 silly logfile done cleaning log files
13 silly idealTree buildDeps
14 silly fetch manifest npm-check-updates@*
15 silly packumentCache full:https://registry.npmjs.org/npm-check-updates cache-miss
16 http fetch GET 200 https://registry.npmjs.org/npm-check-updates 227ms (cache miss)
17 silly packumentCache full:https://registry.npmjs.org/npm-check-updates set size:undefined disposed:false
18 silly placeDep ROOT npm-check-updates@18.0.1 OK for: want: *
19 silly reify moves {}
20 verbose stack Error: EACCES: permission denied, mkdir '/usr/lib/node_modules/npm-check-updates'
20 verbose stack at async mkdir (node:internal/fs/promises:858:10)
20 verbose stack at async /usr/lib/node_modules/npm/node_modules/@npmcli/arborist/lib/arborist/reify.js:624:20
20 verbose stack at async Promise.allSettled (index 0)
20 verbose stack at async [reifyPackages] (/usr/lib/node_modules/npm/node_modules/@npmcli/arborist/lib/arborist/reify.js:325:11)
20 verbose stack at async Arborist.reify (/usr/lib/node_modules/npm/node_modules/@npmcli/arborist/lib/arborist/reify.js:142:5)
20 verbose stack at async Install.exec (/usr/lib/node_modules/npm/lib/commands/install.js:150:5)
20 verbose stack at async Npm.exec (/usr/lib/node_modules/npm/lib/npm.js:207:9)
20 verbose stack at async module.exports (/usr/lib/node_modules/npm/lib/cli/entry.js:74:5)
21 error code EACCES
22 error syscall mkdir
23 error path /usr/lib/node_modules/npm-check-updates
24 error errno -13
25 error Error: EACCES: permission denied, mkdir '/usr/lib/node_modules/npm-check-updates'
25 error at async mkdir (node:internal/fs/promises:858:10)
25 error at async /usr/lib/node_modules/npm/node_modules/@npmcli/arborist/lib/arborist/reify.js:624:20
25 error at async Promise.allSettled (index 0)
25 error at async [reifyPackages] (/usr/lib/node_modules/npm/node_modules/@npmcli/arborist/lib/arborist/reify.js:325:11)
25 error at async Arborist.reify (/usr/lib/node_modules/npm/node_modules/@npmcli/arborist/lib/arborist/reify.js:142:5)
25 error at async Install.exec (/usr/lib/node_modules/npm/lib/commands/install.js:150:5)
25 error at async Npm.exec (/usr/lib/node_modules/npm/lib/npm.js:207:9)
25 error at async module.exports (/usr/lib/node_modules/npm/lib/cli/entry.js:74:5) {
25 error errno: -13,
25 error code: 'EACCES',
25 error syscall: 'mkdir',
25 error path: '/usr/lib/node_modules/npm-check-updates'
25 error }
26 error
26 error The operation was rejected by your operating system.
26 error It is likely you do not have the permissions to access this file as the current user
26 error
26 error If you believe this might be a permissions issue, please double-check the
26 error permissions of the file and its containing directories, or try running
26 error the command again as root/Administrator.
27 silly unfinished npm timer reify 1750407596540
28 silly unfinished npm timer reify:createSparse 1750407596843
29 verbose cwd /home/me/github/node-red-contrib-speedtest
30 verbose os Linux 5.15.0-141-generic
31 verbose node v20.19.2
32 verbose npm v10.8.2
33 verbose exit -13
34 verbose code -13
35 error A complete log of this run can be found in: /home/me/.npm/_logs/2025-06-20T08_19_56_262Z-debug-0.log

```

---

<div class="post-metadata">

**Author:** ![Trying\_to\_learn](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/trying_to_learn/32/28400_2.png) [@Trying\_to\_learn](https://discourse.nodered.org/u/Trying_to_learn)\
**Post date:** [20 June 2025 08:56 UTC](https://discourse.nodered.org/t/help-with-options-on-speedtest-node/97713/10 "2025-06-20T08:56:50Z")

</div>

I'm asking because when I search  
`npm install -g npm-check-updates`

I am getting links that talk about `nvm` - which is deprecated.  
So probably not the way to go.

---

<div class="post-metadata">

**Author:** ![Colin](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/colin/32/17040_2.png) [@Colin](https://discourse.nodered.org/u/Colin)\
**Post date:** [20 June 2025 09:09 UTC](https://discourse.nodered.org/t/help-with-options-on-speedtest-node/97713/11 "2025-06-20T09:09:46Z")

</div>

> [@Trying\_to\_learn](#):
>
> 8000 line bit of code

Are you saying there are 8000 lines of code in package.json in the repository?

Edit, I see 35 lines

---

<div class="post-metadata">

**Author:** ![Trying\_to\_learn](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/trying_to_learn/32/28400_2.png) [@Trying\_to\_learn](https://discourse.nodered.org/u/Trying_to_learn)\
**Post date:** [20 June 2025 09:13 UTC](https://discourse.nodered.org/t/help-with-options-on-speedtest-node/97713/12 "2025-06-20T09:13:13Z")

</div>

In one of the files.... yes.

I did a bit of a look-see at the listed files.

One of them has a LOT of lines.

When I got to the bottom I am sure I saw a 4 digit number starting with 8.  
(Or was it eight HUNDRED?)

Sorry...

Hang on.  
`package-lock.json` 8516 lines.

---

<div class="post-metadata">

**Author:** ![jbudd](https://avatars.discourse-cdn.com/v4/letter/j/5f8ce5/32.png) [@jbudd](https://discourse.nodered.org/u/jbudd)\
**Post date:** [20 June 2025 10:06 UTC](https://discourse.nodered.org/t/help-with-options-on-speedtest-node/97713/13 "2025-06-20T10:06:48Z")

</div>

Rather than updating the speedtest node, you could install and use speedtest-cli:

```auto
sudo apt update && sudo apt install speedtest-cli

```

And in Node-red

 ![image](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/1/8/1859c1e17669557e252b4cbf11115de14bf31538.png)

Which returns eg

```auto
{
    "download": 62807661.90499479,
    "upload": 29006001.41970083,
    "ping": 44.88,
    "timestamp": "2025-06-20T09:59:23.343488Z",
    "bytes_sent": 36675584,
    "bytes_received": 79157201,
    "share": null
}

```

Upload and Download are bits per second so best rounded and divided by 1024\*1024 for Mbps

---

<div class="post-metadata">

**Author:** ![Trying\_to\_learn](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/trying_to_learn/32/28400_2.png) [@Trying\_to\_learn](https://discourse.nodered.org/u/Trying_to_learn)\
**Post date:** [20 June 2025 10:13 UTC](https://discourse.nodered.org/t/help-with-options-on-speedtest-node/97713/14 "2025-06-20T10:13:59Z")

</div>

Thanks, I'll look at that.

Not sure if I have in the past and ....

Anyway, I'll look now.

Oh, sorry.

It is not a node-red one.

Ok. Yeah. Hang on a sec as I go through the motions.

---

<div class="post-metadata">

**Author:** ![Trying\_to\_learn](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/trying_to_learn/32/28400_2.png) [@Trying\_to\_learn](https://discourse.nodered.org/u/Trying_to_learn)\
**Post date:** [20 June 2025 10:27 UTC](https://discourse.nodered.org/t/help-with-options-on-speedtest-node/97713/15 "2025-06-20T10:27:16Z")

</div>

Could you elaborate on the JSON node's settings?

---

<div class="post-metadata">

**Author:** ![jbudd](https://avatars.discourse-cdn.com/v4/letter/j/5f8ce5/32.png) [@jbudd](https://discourse.nodered.org/u/jbudd)\
**Post date:** [20 June 2025 10:32 UTC](https://discourse.nodered.org/t/help-with-options-on-speedtest-node/97713/16 "2025-06-20T10:32:23Z")

</div>

Although speedtest-cli --json is requesting json output, the exec node delivers it into Node-red as a string, so the json node just converts it back into json.

I have not changed any settings for this node, all default.

Here's the flow

```auto
[{"id":"f77909d8dd071c67","type":"inject","z":"32c594e46f312b73","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":100,"y":40,"wires":[["467c01c066a58cb2"]]},{"id":"467c01c066a58cb2","type":"exec","z":"32c594e46f312b73","command":"speedtest-cli --json","addpay":"","append":"","useSpawn":"false","timer":"","winHide":false,"oldrc":false,"name":"","x":270,"y":40,"wires":[["a20245501a5ef6c3"],[],[]]},{"id":"408a0048a4cee966","type":"debug","z":"32c594e46f312b73","name":"output","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":590,"y":40,"wires":[]},{"id":"a20245501a5ef6c3","type":"json","z":"32c594e46f312b73","name":"","property":"payload","action":"","pretty":false,"x":450,"y":40,"wires":[["408a0048a4cee966"]]}]

```

---

<div class="post-metadata">

**Author:** ![Trying\_to\_learn](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/trying_to_learn/32/28400_2.png) [@Trying\_to\_learn](https://discourse.nodered.org/u/Trying_to_learn)\
**Post date:** [20 June 2025 10:33 UTC](https://discourse.nodered.org/t/help-with-options-on-speedtest-node/97713/17 "2025-06-20T10:33:37Z")

</div>

Ok. Sorry.

Thanks.

I may go down this path then.

(Though there is a huge feeling of De Ja Vous somewhere in my mind.)

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/1X/d073cd938eafa2e558d7c2cd59003b3ef4963033.png) [@system](https://discourse.nodered.org/u/system)\
**Post date:** [4 July 2025 10:34 UTC](https://discourse.nodered.org/t/help-with-options-on-speedtest-node/97713/18 "2025-07-04T10:34:12Z")

</div>

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