fellinga / node-red-contrib-ui-time-scheduler

Easily power on/off any kind of device based on a schedule that you can easily create at the node-red-dashboard frontend.
MIT License
37 stars 17 forks source link

Latest upgrade not good. #4

Closed Just-another-pleb closed 3 years ago

Just-another-pleb commented 3 years ago

I had an older version and it worked. (Kind of)

I saw the updated node and updated but this is (to me) a step backwards.

Now: rather than sending ONE message at the start and ONE message at the end, it is continuously sending messages every minute - as is the default.

This is painful when you have 4 events per week that last TEN MINUTES and want to log the events.

The older version had an option to send the message ONCE at the start and end of each event.

It would be nice to see this return.

fellinga commented 3 years ago

I suppose that you used a version < 0.2.0 where I changed some of the basic functionality. I had to change this behaviour so that a timer that runs from let's say 08:00 to 10:00 would also trigger the output to true even if you would turn on your node-red server at, let's say, 09:30.

I think a solution to your specific problem is pretty simple tho. Use the RBE node (Report By Exception) to block messages unless its value has changed.

Please let me know if this helps.

Just-another-pleb commented 3 years ago

Well, that could be true, but (not wanting to seem argumentative) but as valid as your point is: That would only fail for that instance at that time. Subsequent invocations would work.

So as much as I get what you are saying, really "if it is re-deployed" during a cycle time: The node should work it out itself and send an ON signal. But repeatedly sending it seems redundant.

However, I shall see what I can do.

fellinga commented 3 years ago

For me and especially my use case, repeatedly sending also guarantees that the device stays on or off - which is absolutely what I want.

As I said, you can archive what you are missing by just adding the RBE node. I've created a little demo for you which you can import into your flow:

[{"id":"45756f53.99fc","type":"ui_time_scheduler","z":"f6f2187d.f17ca8","group":"71d900ff.fce16","name":"","refresh":"60","devices":["Device 1","Device 2"],"outputs":3,"order":0,"width":0,"height":0,"x":90,"y":80,"wires":[[],["454047ad.453d88"],["9843a404.5cbf58"]]},{"id":"26d776c1.fcd21a","type":"comment","z":"f6f2187d.f17ca8","name":"Every 60 seconds","info":"","x":490,"y":40,"wires":[]},{"id":"fb737459.980548","type":"comment","z":"f6f2187d.f17ca8","name":"Only after change","info":"","x":490,"y":120,"wires":[]},{"id":"9843a404.5cbf58","type":"rbe","z":"f6f2187d.f17ca8","name":"","func":"rbe","gap":"","start":"","inout":"out","property":"payload","x":310,"y":160,"wires":[["a4a3e033.4e2e6"]]},{"id":"454047ad.453d88","type":"debug","z":"f6f2187d.f17ca8","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":470,"y":80,"wires":[]},{"id":"a4a3e033.4e2e6","type":"debug","z":"f6f2187d.f17ca8","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":470,"y":160,"wires":[]},{"id":"71d900ff.fce16","type":"ui_group","name":"Default","tab":"837a96a1.799598","order":1,"disp":true,"width":"6","collapse":false},{"id":"837a96a1.799598","type":"ui_tab","name":"Home","icon":"dashboard","disabled":false,"hidden":false}]