NEWS


  • Hallo
    Ich habe einen Regensensor mir gebaut auf Basis von diesen "Platinen": https://www.amazon.de/AZDelivery-Regentropfen-Sensor-Arduino-gratis/dp/B07CP2GX9P
    Zur Erfassung war dahinter erst ein FlowerCare, das war aber frickelig und nicht zuverlässig - nun habe ich einen Homematic Temperatur-Differenzsensor umgebaut ...

    Aufzeichnung funktioniert super:
    2c9376fb-b9b2-4c28-b123-9d0dfd9b06f5-image.png
    Da er aber keine Heizung zum abtrockenen hat, geht er nachts fast immer langsam hoch.
    Aber Sprünge in den Messwerten sind immer Regen!
    Ganz links in der Aufzecihnung sieht man Nieselregen - 3x Werte 11:11, 11:17, 11:19 und 11:24 mit mehr als 5Grad "Temp"-Unterschied.

    --> Wie kann ich im IoB-Skript am einfachsten solche Sprünge erkennen? Muss ich selber mir die letzten 2-3 Werte mit Uhrzeit merken und ausrechnen? Oder gibts da was fertiges bzw eine Funktion zum kopieren?

    Gruss -


  • @adarof sagte:

    Wie kann ich im IoB-Skript am einfachsten solche Sprünge erkennen?

    Nach Zeit differenzieren.

    on(idRegen, function(dp) {
       if((dp.state.val - dp.oldState.val) / (dp.state.lc - dp.oldState.lc) > Grenzwert) {
          // es regnet
       }
    });
    

  • @paul53 Danke - hab ich mal so übernommen. Gefühl wäre, dass ich mehr als 2 Werte brauche
    (also nicht nur die Steigung zwischen Old und Aktuell, sondern auch 2..3 ältere Werte. Aber ich probiers mal so erstmal.
    DANKE


  • Wollte kurz berichten, dass das ganz gut klappt mittlerweile.
    Danke also nochmal

    Ich nutze nach beobachtung meines Aufbaus nun 0.5 zum Detektieren von Regen und -0.5 zum Detektieren vom Aufhören des Regens.

    var diffWert = (obj.state.val - obj.oldState.val) / ((obj.state.lc - obj.oldState.lc)/1000/60) ; //should be min(value - oldValue) / (obj.state.lc - obj.oldState.lc); 
      setState("0_userdata.0.RegensensorPRGDiffWertHistory"/*RegensensorPRGDiffWertHistory*/, diffWert);
      if( diffWert > 0.5 && getState("0_userdata.0.RegensensorPRGDetectedRain").val == false) {
    getState("0_userdata.0.RegensensorPRGDetectedRain").val == false) {
        setState("0_userdata.0.RegensensorPRGDetectedRain"/*RegensensorPRGDetectedRain*/, true);
        } else if (diffWert < -0.5 && getState("0_userdata.0.RegensensorPRGDetectedRain").val == true) { 
        setState("0_userdata.0.RegensensorPRGDetectedRain"/*RegensensorPRGDetectedRain*/, false);
      } else {
        if(getState("0_userdata.0.RegensensorPRGDetectedRain").val == true) {
              //'Es regnet - Änderung aber egal' + diffWert
        } 
       
    

    Hier noch ein SCreenshot von

    1. der Feuchtigkeit
    2. dem errechneten DiffWert
    3. der Variable RegenDetected:

    21f49637-5abd-4b69-9086-98fc12ca172b-image.png

Suggested Topics

2.3k
Online

35.2k
Users

41.1k
Topics

566.1k
Posts