Everyone on this thread is well aware reinstall is an option and how to do it. It’s been shown/explained several times. Consider actually reading the post at the top and some of the replies below.
No need to re-install, you can just add the missing yourself under the node-red addon configuration:
I was using looptimer in several nodes as a one second timer feeding counters that track duration time. With the suggestions in this thread, I was able to investigate and switch over to using the trigger node with the exact same results.
Likely should have been using trigger all along anyway.
Thanks for all the suggestions and pointers here.
Cheers!
It did that to me too but after a little, maybe after restarting node-red, it was back to normal.
@quizzical - The only change to your awesome (saved me having to figure it out) recommendation was to add “STOP” in the msg.payload equals box so as to make it a perfect drop in for how I was using it before. Later I can adjust my flows to using the default msg.reset: true
method
@Mikefila Thanks for offering the trigger alternative so quickly!
Ok, Frenck kills all my automation because he thinks he has to remove addons that are too old. can you do that…
@Johnnyyr - It takes 2 seconds to re-install the Stoptimer node from the “Manage Palette”. You probably have to restart the Node-Red addon after reinstalling the node. To be clear, there is no need to downgrade Node-Red for things to work again.
Regardless, I eliminated all the Stoptimer nodes I had used (once restoring functionality by re-installing it so things would work in the meantime) and replaced them with the wayyyy better trigger node (if all the removed nodes were to show up on the main flow which scared me when it happened to me). Doing so also inspired me to use that node for other things that I did not know how to do before.
The update nodes DID say that the removed nodes simply needed to be re-installed but I know we are all a bit too update trigger happy
Hello, Trigger node seems to me a fine replacement.
By the other way, I already used DELAY Node in parallel of StopTimer Node. Now I can’t really feel the difference between Delay Node and StopTimer and why I used some times the one and some times the other, so I can’t feel why I should some times use Trigger Node over Delay Nodes for timers.
Feel free the tell your experience.
Sorry I did think (assume) that you had joined the list of hysterical complainers as exemplified by this post STOPTIMER node removed from Node Red 12; 5yrs+ since last update; Should I even be using it as I am?; Alternatives? - #28 by Johnnyyr
Clearly on re-reading you are not in that group. Apologies.
Thanks, I appreciate it! misunderstandings happen all too easily
I officially withdraw my rant…
What the heck, I use a stoptimer node in almost all of my Node-RED flows, and I have automatic updates enabled, so all of my automations suddenly stopped working overnight. That’s a bit annoying! I’m surprised they thought that no-one was using it. I just read through the rest of the comments, and thanks for the tips on how to fix it by installing the old packages.
Here’s a quick walkthrough for anyone else who wants to fix it:
- Go to your Addons dashboard (/hassio/dashboard) - e.g. http://homeassistant.local:8123/hassio/dashboard
- Click the Node-RED addon
- Go to the Configuration tab
- Scroll down to the
npm_packages
section - Add
node-red-contrib-stoptimer
andnode-red-contrib-looptimer
Or if you edit as YAML:
npm_packages:
- node-red-contrib-stoptimer
- node-red-contrib-looptimer
# ...
Click “Save” and restart Node-RED. Everything should be working again.
node-red-contrib-stoptimer
This might be a good time to ask if there’s an alternative timer node with some more powerful features. I would be especially interested if there’s a timer that can show the remaining time as a gauge in my Lovelace dashboards in HA. Are there any built-in or add-on timer nodes that make the “remaining time” available as a sensor?
It looks like node-red-contrib-stoptimer-varidelay has a third output that sends the time remaining as HH:MM:SS
. But I would love to have one with a built-in HA sensor entity so I don’t have to wire it up each time.
@ndbroadbent Why not install the nodes from node red itself by going to “Manage Palette” and using the install tab? I am assuming that the method you kindly detailed may be for cases where the node is not in the catalog of available nodes.
Oh nice, I didn’t know I could do that from the Node-RED UI! Thanks!
I believe one way to accomplish this is to create a timer (helper) to use for display purposes and to trigger it at the same time as your trigger node which introduces the actual delay. I don’t know if this is the proper way to do it but I used it to show a 10s countdown before something I activated actually takes (so that I can disable it if it was done by mistake).
Using the Trigger node is a good replacement. If you were using a similar automation to the below where motion sensors are controlling lights then make sure you tick the option to Extend delay if new message arrives.
Here is an example of doing exactly that. This is just a snippet of a larger HVAC setup I was using it in.
[{"id":"0734a01667513148","type":"ha-entity","z":"74787eca.ba49c","name":"turn Basement heat timer on","server":"ded139f7.1761b8","version":2,"debugenabled":false,"outputs":2,"entityType":"switch","config":[{"property":"name","value":"basement_heat_on"},{"property":"device_class","value":""},{"property":"icon","value":"mdi:radiator"},{"property":"unit_of_measurement","value":""},{"property":"state_class","value":""},{"property":"last_reset","value":""}],"state":"payload","stateType":"msg","attributes":[],"resend":true,"outputLocation":"","outputLocationType":"none","inputOverride":"allow","outputOnStateChange":true,"outputPayload":"","outputPayloadType":"str","x":360,"y":620,"wires":[["8dfbd2b93c0e2f23"],[]]},{"id":"8dfbd2b93c0e2f23","type":"stoptimer-varidelay","z":"74787eca.ba49c","duration":"3","durationType":"num","units":"Hour","payloadtype":"str","payloadval":"on","name":"","reporting":"last_minute_seconds","persist":true,"x":870,"y":620,"wires":[[],[],["c7997534ccccf310"]]},{"id":"c7997534ccccf310","type":"ha-entity","z":"74787eca.ba49c","name":"Basement Heat Timer","server":"ded139f7.1761b8","version":2,"debugenabled":false,"outputs":1,"entityType":"sensor","config":[{"property":"name","value":"basement_heat_timer"},{"property":"device_class","value":""},{"property":"icon","value":""},{"property":"unit_of_measurement","value":""},{"property":"state_class","value":""},{"property":"last_reset","value":""}],"state":"payload","stateType":"msg","attributes":[],"resend":true,"outputLocation":"","outputLocationType":"none","inputOverride":"allow","x":840,"y":680,"wires":[["6ec2d860f231ef4c"]]},{"id":"2f0f85eef3a9ab52","type":"ha-entity","z":"74787eca.ba49c","name":"turn Basement heat timer off","server":"ded139f7.1761b8","version":2,"debugenabled":false,"outputs":2,"entityType":"switch","config":[{"property":"name","value":"basement_heat_off"},{"property":"device_class","value":""},{"property":"icon","value":""},{"property":"unit_of_measurement","value":""},{"property":"state_class","value":""},{"property":"last_reset","value":""}],"state":"payload","stateType":"msg","attributes":[],"resend":true,"outputLocation":"","outputLocationType":"none","inputOverride":"allow","outputOnStateChange":true,"outputPayload":"","outputPayloadType":"str","x":360,"y":680,"wires":[["84e52aa03acc9036"],[]]},{"id":"84e52aa03acc9036","type":"change","z":"74787eca.ba49c","name":"STOP","rules":[{"t":"set","p":"payload","pt":"msg","to":"STOP","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":570,"y":680,"wires":[["8dfbd2b93c0e2f23"]]},{"id":"968840e6a0c65b75","type":"change","z":"74787eca.ba49c","name":"set payload to off","rules":[{"t":"set","p":"payload","pt":"msg","to":"off","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":890,"y":740,"wires":[[]]},{"id":"6ec2d860f231ef4c","type":"switch","z":"74787eca.ba49c","name":"is timer stopped?","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"stopped","vt":"str"},{"t":"eq","v":"00:00:00","vt":"str"},{"t":"eq","v":"expired","vt":"str"}],"checkall":"true","repair":false,"outputs":3,"x":670,"y":740,"wires":[["968840e6a0c65b75"],["968840e6a0c65b75"],["968840e6a0c65b75"]]},{"id":"9284226ce055bddc","type":"link in","z":"74787eca.ba49c","name":"Basement heat boost off","links":["3e9b231f.86bfc4"],"x":195,"y":680,"wires":[["2f0f85eef3a9ab52"]]},{"id":"03d1d2383f3f8977","type":"link in","z":"74787eca.ba49c","name":"basement heat boost on","links":["78d4ca59.1806fc"],"x":195,"y":620,"wires":[["0734a01667513148"]]},{"id":"ded139f7.1761b8","type":"server","name":"Home Assistant","version":2,"addon":false,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":false,"heartbeat":false,"heartbeatInterval":"30"}]
edit: I guess I didn’t finish reading the last sentence, sorry! Mine is wired up to an entity.
@mchinery Thank you so much for pointing that out!! I now have to go back to edit all the nodes I replaced but you saved me a lot of pain!
You are more than welcome. I did test this option today so it is needed in the automation example I gave.