Als luchtvochtigheid badkamer snel stijgt DAN

Ik wil op de badkamer een flow starten indien de luchtvochtigheid snel stijgt.
Dan is er iemand aan het douchen.

Hoe kan ik een flow daarmee starten?
Dus bijvoorbeeld een stijging van meer dan 5% binnen 2 minuten.

Er is op dit forum ook een topic over het aansturen van een mechanische afzuiging. Daar zou je wel iets mee moeten kunnen.

Maar mogelijk zou je iets kunnen doen als bv. Als de luchtvochtigheid veranderd, sla die waarde op
En vergelijk de nieuwe waarde met de oude waarde en als daar meer dan 5% verschil in zit doe dan X.

Hoe dit exact te gebruiken kan ik zo 123 niet vertellen.

Of kijk eens naar deze app:

1 Like

De vraag is hoeveel beter dit regelt dan “ALS de vochtigheid > 60%”.

1 Like

Hier werkt het ook zo:

ALS luchtvochtigheid > 75%
DAN zet verluchting op 150% (is een soort boost functie op mijn Renson verluchting) gedurende 1800 seconden of tot wanneer luchtvochtigheid <65%

Hangt van de situatie af (en het % dat je gebruikt)
Een vochtigheid van 55% kan zomaar optreden ook als je niet aan het douchen bent.

Maar de “groter dan” is wel eenvoudiger…

Het moment van douchen is door de stijging in ieder geval wel heeeel duidelijk…

Kijk hier maar eens op antwoord 70.
Hier wordt ook rekening gehouden met de relatieve vochtigheid.

Door de vochtigheid gedurende de dag en afhankelijk van zomer/winter reageert een vaste waarde nirt optimaal en te traag.
Daar de stijging kan de trigger eerder in actie komen.

En als de luchtvochtigheid langzaam stijgt, om wat voor reden dan ook, gaat de ventilator niet aan.
Dus ik zou zeggen, wees praktisch, ga aan de gang met wat je hebt en wat kan, dan draait het over een uurtje, en weet je morgen uit praktijkervaring of het een beetje voldoet. Zo niet, dan, dan kun je verder gaan met optimaliseren. Maar heb je ondertussen alvast een werkend systeem :grin:.

Dat is het mooie van homey, je kan het op zoveel manier je probleem oplossen:

  • maak een paar extra flows
  • gebruik een extra app (insight trends)

Het is zoals @Rmb zegt:

De een doet het met flows, de ander met apps. :grin:

En
Misschien heb je hier nog iets aan.
Wel wat “over the top” als “douche aan/uit” detectie, maar werkt goed

1 Like

Goed idee, ga ik ook zo detecteren. Misschien zoals dit? Iedere minuut kijkt de flow of de humidity verschilt met meer dan 10 met de vorige meting , en iedere minuut wordt de vorige meting (variabele) weer gelijk gesteld aan huidige. Je kan de sample tijd als delta tunen

Ik heb mijn flow hierop gebaseerd, zitten twee linkjes in mijn post die ik als basis heb gebruikt. HELP for ventilation system flow - #11 by Ryan

Dit is 1 van mijn meest geavanceerde flow omdat het niet heel simpel te verwerken is in een simpele flow. Vochtigheid kan heel laag zijn en in een andere tijd van het jaar jaar hoog. En ventilatie mag hier ook aangaan als iemand op de wc zit (nr 2 :wink: ), maar weer niet elke keer als iemand kort op de wc zit of even zijn tanden poetst.

Kortom, het werkt hier in combinatie met een deur sensor, motion sensor en vochtigheid sensor.

Ik heb er ooit een script voor gemaakt:

const bufsize = 3;

let temperatuur = global.get( 'ttbadkamer_array' );
if ( temperatuur == null ) temperatuur = new Array;

let head = global.get( 'ttbadkamer_index');
if ( head == null ) head = 0;
else head = Number(head);
if ( head < 0 || head > bufsize ) head = 0;

let prev = head;
if ( ++prev == bufsize ) prev = 0;
let Tdiff = 0;

          // Get all devices
const devices = await Homey.devices.getDevices();

// Loop over all devices
for (const device of Object.values(devices)) 
{

  // If this device isn't available, skip it.
  if (!device.capabilitiesObj) continue;
  if ( device.name === 'TT/RV Badkamer') 
  {
    var i;
    for (const capability of Object.values(device.capabilitiesObj)) 
    {
      if ( capability.title == 'Temperatuur' )
      {
        temperatuur[head] = capability.value;
        log ("Head = ", head, "; prev = ", prev );
        log( "Current temp = ", temperatuur[head]);
        log( "Previous temp = ", temperatuur[prev] );
        Tdiff = temperatuur[head] - temperatuur[prev];
        global.set( 'ttbadkamer_array', temperatuur );
        global.set( 'ttbadkamer_index', prev );
        break;
      }
    }
    for ( i = 0; i < bufsize; i++ ) log( 'Temp[' + i + '] = ' + temperatuur[i]  )
  }
}

console.log( "Tdiff = ", Tdiff );

if ( Tdiff >= 1.0 )
{
  for (const device of Object.values(devices)) 
  {
    // If this device isn't available, skip it.
    if (!device.capabilitiesObj) continue;
    if ( device.name == 'Badkamer fan')
    {
      log( "Found badkamer sturing, switching it on and off"); 
      await device.setCapabilityValue('onoff', true)
        .then(() => log('OK'))
        .catch(error => log(`Error:`, error));
      // await wait(1000 * 60 * 20); // 20 minutes
      // await device.setCapabilityValue('onoff', false);
      break;
    }
  }
}

return true;

De input is een SonOff SNZB-02 temperatuur & luchtvochtigheid sensor genaamd TT/RV Badkamer. Als de temperatuur snel stijgt, zet’ie de badkamer fan aan (device Badkamer fan). Je kan het zelfde principe gebruiken voor luchtvochtigheid, maar in de winter / najaar werkt dat niet zo goed (de temperatuur wel).

@Vnet Ik denk dat ik de flow van jou ook ga proberen. De oude waarde vergelijken met de nieuwe waarde. Alleen niet elke minuut maar als de waarde is veranderd. Normaal gesproken stuurt de Aqara sensor elke keer als de waarde is gewijzigd de nieuwe waarde door. Dus dit zou moeten lukken.
Het begin is er.

Die 2 seconden kan ook langer zijn maar tijdens testen werkt het. Zonder vertraging gebeurd er dus natuurlijk niks.

“Luchtvochtigheidbadkamernieuw” is dus in de tijd gezien ouder? Aangezien ik aanneem dat je test of de nieuwe meting meer dan 10 gestegen is tov de oude meting?

En 2 seconden na de test wordt de huidige meting in “Luchtvochtigheidbadkamernieuw” gezet, die dan de volgende keer wordt gebruikt in de test? Het is wel even andersom denken :grinning:

In gewone mensentaal zou ik het het als volgt formuleren:

  1. Wanneer de luchtvochtigheid is verandert, vergelijk dan de huidige waarde met de vorige waarde.
  2. Geef een melding als de huidige waarde 10 groter is dan de vorige waarde.
  3. Kopieer de huidige waarde naar de vorige waarde.

De eerste dat deze oplossing uitgevoerd wordt, is het resultaat niet te vertrouwen omdat “vorige waarde” nog niet de juiste waarde heeft gekregen. “Vorige waarde” zou je daarom 100 kunnen geven bij aanmaken van de variable. Dan krijg je in ieder geval geen onbetrouwbare melding bij de eerste meting.

Stap 3 moet dus altijd gebeuren, onafhankelijk van de test, maar wel ná de test. Het lijkt er op dat je dit bereikt door stap 2 en 3 tegelijkertijd uit te voeren, maar stap 3 dan wel met een vertraging van 2 seconden. In de hoop dat stap 2 dan al uitgevoerd is.

Inderdaad.
Ik heb nu 1 kaartje nodig met Als de luchtvochtigheid is veranderd.
Als hij veranderd kijkt hij eerst naar de oude waarde VochtigheidBadkNieuw en vergelijkt het met de laatste waarde.
Is het verschil groter dan 10 dan kan de flow verder gaan.
Is het verschil kleiner dan 10 gebeurd er niks.
En na 2 seconden, kan er ook 5 van maken natuurlijk, zet hij de laatste waarde weer naar VochtigheidBadkNieuw.

Zoals het eerst was met een vaste waarde van bv 66% was het ook onbetrouwbaar vanweg de vochtigheid die nogal wisseld in de loop van het jaar.

En mocht de ventilator niet aan gaan dan is twee stappen naar de schakelaar zo gezet.

Het kan ook nog zonder wachtkaartje.
In een normale flow ziet het er als onderstaand uit. In een advanced flow kan het nog mooier, doordat je het notificatie kaartje kunt overslaan door de lijn er om heen te trekken. En het zelfde SET logica kaartje in twee paden opneemt.

Zo bedoel je?
Zo doet hij het dus ook goed met testen.

De gele lijn is goed. De twee blauwe lijnen worden dan één lijn, die van logica kaartje naar notificatie kaartje loopt en vandaar weer naar het laatste logica kaartje. Anders maak ik het morgen even op mijn computer.