# Searching something like filter, but time based

**URL:** <https://discourse.nodered.org/t/searching-something-like-filter-but-time-based/82785>\
**Category:** General\
**Created:** [11 November 2023 14:02 UTC](https://discourse.nodered.org/t/searching-something-like-filter-but-time-based/82785 "2023-11-11T14:02:57Z")\
**Posts on this page:** 12\
**Page:** 1

<div class="post-metadata">

**Author:** ![andre78](https://avatars.discourse-cdn.com/v4/letter/a/839c29/32.png) [@andre78](https://discourse.nodered.org/u/andre78)\
**Post date:** [11 November 2023 14:02 UTC](https://discourse.nodered.org/t/searching-something-like-filter-but-time-based/82785/1 "2023-11-11T14:02:57Z")

</div>

Hi,

I am using Node-Red to send data from my Solar collector to KNX, mostly status information. IN order to reduce the amount of data being sent, I have included a filter node to only pass messages where the payload has changed.

 ![grafik](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/9/5/957c6bc35ce3708bca034ad1c2b0e93329baa792.png)

But I want also each parameter from the collector to be sent for example at least once per hour (ideally at a scheduled time), because some pumps for example don't change their status for weeks.  
How can I do this?

thank you!

---

<div class="post-metadata">

**Author:** ![ralphwetzel](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/ralphwetzel/32/53713_2.png) [@ralphwetzel](https://discourse.nodered.org/u/ralphwetzel)\
**Post date:** [11 November 2023 14:19 UTC](https://discourse.nodered.org/t/searching-something-like-filter-but-time-based/82785/2 "2023-11-11T14:19:55Z")

</div>

HI @andre78 !

As long as your Solar collector regularly sends data, you may use a `delay` node in `rate limit` mode put in parallel to your `filter` node(s).

---

<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:** [11 November 2023 14:20 UTC](https://discourse.nodered.org/t/searching-something-like-filter-but-time-based/82785/3 "2023-11-11T14:20:34Z")

</div>

I guess you could, at your chosen time inject a spurious value eg "dummy" which would pass through the filter node[s]. Use a switch node to then throw this value away. The next real value arriving at each filter would then be passed through.

It would give a neater flow if you could use a single filter node, applying the filter seperately for each msg.topic, or other msg property.

---

<div class="post-metadata">

**Author:** ![andre78](https://avatars.discourse-cdn.com/v4/letter/a/839c29/32.png) [@andre78](https://discourse.nodered.org/u/andre78)\
**Post date:** [11 November 2023 14:24 UTC](https://discourse.nodered.org/t/searching-something-like-filter-but-time-based/82785/4 "2023-11-11T14:24:55Z")

</div>

I was looking at this, but was under the impression that when there's no message sent for many hours it wouldn't send the last value on a regular basis.

---

<div class="post-metadata">

**Author:** ![ralphwetzel](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/ralphwetzel/32/53713_2.png) [@ralphwetzel](https://discourse.nodered.org/u/ralphwetzel)\
**Post date:** [11 November 2023 14:37 UTC](https://discourse.nodered.org/t/searching-something-like-filter-but-time-based/82785/5 "2023-11-11T14:37:25Z")

</div>

> [@andre78](#):
>
> hen there's no message sent for many hours it wouldn't send the last value on a regular basis

Correct. That's why I made the constraint ...

> [@ralphwetzel](#):
>
> As long as your Solar collector regularly sends data,

😉

It should be possible to create function node that stores the latest (incoming) value and forwards it at a given schedule. Have you searched the node database if there's already a contrib node doing such a job?

---

<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:** [11 November 2023 15:07 UTC](https://discourse.nodered.org/t/searching-something-like-filter-but-time-based/82785/6 "2023-11-11T15:07:51Z")

</div>

After the filter insert a Trigger node configured to resend the message each hour that there are no messages.  
 ![image](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/8/d/8d3e5ad4c9c987e7db7031a6427b647645ece5c5.png)

---

<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:** [11 November 2023 15:33 UTC](https://discourse.nodered.org/t/searching-something-like-filter-but-time-based/82785/7 "2023-11-11T15:33:06Z")

</div>

> [@Colin](#):
>
> Trigger node configured to resend the message each hour that there are no messages.

Ooh didnt know it did that!

---

<div class="post-metadata">

**Author:** ![andre78](https://avatars.discourse-cdn.com/v4/letter/a/839c29/32.png) [@andre78](https://discourse.nodered.org/u/andre78)\
**Post date:** [11 November 2023 16:59 UTC](https://discourse.nodered.org/t/searching-something-like-filter-but-time-based/82785/8 "2023-11-11T16:59:08Z")

</div>

fantastic, thank you all for your help! I think the trigger node is exactly what I am looking for. Giving it a test now...

---

<div class="post-metadata">

**Author:** ![E1cid](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/e1cid/32/77971_2.png) [@E1cid](https://discourse.nodered.org/u/E1cid)\
**Post date:** [11 November 2023 17:40 UTC](https://discourse.nodered.org/t/searching-something-like-filter-but-time-based/82785/9 "2023-11-11T17:40:51Z")

</div>

> [@andre78](#):
>
> But I want also each parameter from the collector to be sent for example at least once per hour (ideally at a scheduled time)

The trigger node will not give you a scheduled time, @jbudd solution possible would with some alterations.

---

<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:** [11 November 2023 18:21 UTC](https://discourse.nodered.org/t/searching-something-like-filter-but-time-based/82785/10 "2023-11-11T18:21:01Z")

</div>

I suspect that to re-release the last received messages exactly _at a specified time_ will require some sort of queue node - maybe node-red-contrib-queue-gate.

I'm not sure if that node allows a separate queue per topic though, can't check right now.

There is a semaphore node from @marcus-j-davies too, don't know if that would be applicable.

---

<div class="post-metadata">

**Author:** ![marcus-j-davies](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/marcus-j-davies/32/103435_2.png) [@marcus-j-davies](https://discourse.nodered.org/u/marcus-j-davies)\
**Post date:** [11 November 2023 18:35 UTC](https://discourse.nodered.org/t/searching-something-like-filter-but-time-based/82785/11 "2023-11-11T18:35:27Z")

</div>

Thanks for the tap @jbudd 🙏

@andre78,  
If you need to give messages exclusive access to some part of your flow, whilst holding back other messages waiting to gain access, then I have a node that may help.

it's a pretty advanced semaphore node, allowing great control over access, to different parts of the flow,  
whilst at the same time offering fail-safe - i.e if a part of your flow becomes dead-locked for example.

> **[@marcus-j-davies/node-red-semaphore-plus](https://flows.nodered.org/node/@marcus-j-davies/node-red-semaphore-plus)**
>
> An advanced set of semaphore Nodes for Node RED, with a dynamic fail-safe

---

<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:** [25 November 2023 18:35 UTC](https://discourse.nodered.org/t/searching-something-like-filter-but-time-based/82785/12 "2023-11-25T18:35:47Z")

</div>

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