Filtrer float verdi over tid

Hei!
Jeg prøver å sette opp en flow for å registrere hva oppvaskmaskinen gjør, og hvilken del av programmet den befinner seg i, f.eks. Oppvarming, vasking, tørking, ferdig og avslått.
Problemet er at den veksler utrolig hyppig mellom vask (ca. 80w) og pause (1,5w), dette kan gå med 5 sek mellomrom.

Det jeg ønsker er å filtrere verdien slik at når den har vært på 1,5w i 5 minutter, så skal den sette variabelen til pause.

Rate limit tror jeg ikke er brukbar, den vil treffe litt sporadisk.
Wait noden vil vel kjøre uansett etter tid selv om watt i mellomtiden er endret til 80w?

Artig prosjekt! Eg puslar med eit liknande (men mykje enklare!) prosjekt på kaffitraktaren. For deg ser for meg at det kan funka med nesta loops, med følgjande element:

  1. Trigger med betingelse watt >50watt
  2. Ytre loop gjentas med indre loop etterfulgt av wait for event node, inntil 120 gonger (2 timar - antatt at det er varigheita på programmet og at dingsen din er satt opp til å rapportera ein gong i minuttet)
  3. Indre loop med if betingelse (<2 watt) etterfulgt av wait for event node, inntil 5 gonger (5 minutt).
  4. Push-varsel til mobil, blinking med lys, broadcast eller liknande.

Edit: Denne sekvensen forutset “Keep first instance”

Dette høres spennede ut.
Kan dere dele flows?

:slight_smile:

Jeg deler gjerne, men det må virke skikkelig først :sweat_smile:

2 Likes

It looks like a node that works with historical data + time window functions (min,max,mean,last,first,etc.) might help to solve cases like this. For instance, the flow could be :

  1. Time trigger node that starts flow every 5 minutes (virtual time window)
  2. Statistics Node (not sure how to name the node yet) requests average (mean) instant power of device for the last 5 min (configurable). Alternatively energy can be used.
  3. Use IF node and value from step 2 to detect mode
  4. Do some actions.

There are many similar use cases that require statistical data.
Historical data is already available but, it’s very hard to work with it from Flows.

For historical data, I wonder if it’s already possible to set up an array of variables within a flow. For example to take running average of x latest lux values. In the example posted here, I solved it by creating 4 variables, lux_neg3, lux_neg2, lux_neg1 and lux_0.
I believe creating a guide or standardised flow setup for this would be preferable over using data from the Event collector in many cases…

1 Like

You’ve created quite an impressive flow. :slight_smile:
Regarding historical data, It can be done using arrays but it may become too complicated very soon (for users), another problem is how to work with data for longer intervals. For instance request average value over last week or month, etc. Another alternative to data from Event Collector is to use streaming analytics, maybe embed this https://docs.emqx.io/kuiper/latest/en/ .

1 Like