OC3 Wettersensor Skriptfrage

Kabellose und kabelgebundene Sender und Empfänger der klassischen Homematic-Serie

Moderator: Co-Administratoren

Antworten
Tibin
Beiträge: 507
Registriert: 26.10.2016, 16:08
System: CCU
Hat sich bedankt: 19 Mal
Danksagung erhalten: 15 Mal

OC3 Wettersensor Skriptfrage

Beitrag von Tibin » 09.09.2022, 16:43

Hallo,
Folgendes Skript wird ja bekanntlich mit dem Wettersensor HM-WDS100-C6-O-2 installiert (vielleicht hat den ja noch der ein oder andere :wink: ).

Code: Alles auswählen

var rainToday = dom.GetObject(5091);
var rainYesterday = dom.GetObject(5092);
var rainCounter = dom.GetObject(5076);

          if ( (rainToday) && (rainYesterday) && (rainCounter) )
          {
            if (rainCounter.LastTimestamp())
            {
              var diff = rainCounter.Value() - rainCounter.LastValue();
              if ( diff < 0.0)
              {
                diff = diff + rainCounter.ValueMax();
              }
              rainToday.State(rainToday.State() + diff);
            }
            else
            {
              rainToday.State(0.0);
              rainYesterday.State(0.0);
            }
          } 
Nun weiß ich nicht, ob das nur bei mir so ist, oder ob ihr das nachvollziehen könnt. Also folgendes Scenario....
Ich hatte ziemlich hohe Werte beim RAIN_COUNTER und musste dem mal nachgehen.
Nach meinem bescheidenen Skriptverständnis :roll: wird der letzte bekannte Wert (rainCounter.LastValue) vom aktuellen Wert (rainCounter.Value) subtrahiert. Und wenn das Ergebnis kleiner ist als 0.0, dann wird ein maximaler Wert (rainCounter.ValueMax) dazuaddiert. (Hoffe, das ist so richtig)
Diese Skriptzeile (12) verstehe ich nicht, da müsste mich mal jemand erleuchten.
Nach einem Batteriewechsel oder Stromausfall (bei Betrieb mit einem Batterie-Dummy), wird der RAIN_COUNTER ja immer auf Null gesetzt.
Somit ergibt diese Rechnung immer weniger als Null.
Aktueller Wert ist nach Spannungswegfall 0.0 minus letzter Wert z.B. 10 ergibt -10 also kleiner als Null. Somit ergibt -10 + Value.Max(bei mir 999) = 989
Sorry, hab mich da gerade irgendwie festgefahren. Müsste das nicht LastValue heißen anstatt ValueMax? Oder für welchen Ernstfall ist diese Zeile da?
Gruß Tino.

Benutzeravatar
Baxxy
Beiträge: 10836
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 608 Mal
Danksagung erhalten: 2228 Mal

Re: OC3 Wettersensor Skriptfrage

Beitrag von Baxxy » 10.09.2022, 11:51

Tibin hat geschrieben:
09.09.2022, 16:43
Oder für welchen Ernstfall ist diese Zeile da?
Die ist eher für den Überlauf des Zählers (999) gedacht.

Da ich das Teil nicht kenne kann ich auch nicht sagen ob es möglich ist den Zähler innerhalb einer "Batterielaufzeit" überlaufen zu lassen.
Bei Dauerbetrieb (Netzteil) könnte das aber möglich sein.

Wenn du den Überlauf ausschließen kannst sollte es mit...
Tibin hat geschrieben:
09.09.2022, 16:43
LastValue anstatt ValueMax
funktionieren.

Tibin
Beiträge: 507
Registriert: 26.10.2016, 16:08
System: CCU
Hat sich bedankt: 19 Mal
Danksagung erhalten: 15 Mal

Re: OC3 Wettersensor Skriptfrage

Beitrag von Tibin » 10.09.2022, 17:45

Danke Baxxy für die Antwort.
Baxxy hat geschrieben:
10.09.2022, 11:51
Überlauf
Ah :idea: dann macht das natürlich Sinn. Das heißt, wenn im Dauerbetrieb irgendwann die Regenmenge von 999 Litern erreicht ist, zählt er bei Null weiter und dann kommt diese Zeile mit ValueMax zum tragen. Ok, dann verstehe ich das wenigstens, danke. :wink:
Baxxy hat geschrieben:
10.09.2022, 11:51
Wenn du den Überlauf ausschließen kannst
Wenn das Gerät mal durchläuft kann ich das natürlich NICHT ausschließen :oops:
Ich musste in den letzten Wochen wegen Umbau des Öfteren mal den Strom trennen und hatte mich über die immens hohen Regenmengen gewundert :mrgreen:
Könnte man das Skript so umschreiben, dass bei Spannungswegfall LastValue und bei Überlauf ValueMax greift?
Wohl eher nicht, weil ja beides bei Null zählt, oder ist das irgendwie möglich?
Habe mich jetzt erstmal für die Variante mit LastValue entschieden, da ich in nächster Zeit noch das eine oder andere Mal den Strom trenne. UND natürlich vom Skript schreiben nicht viel Ahnung habe. :mrgreen:
Gruß Tino

Benutzeravatar
Baxxy
Beiträge: 10836
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 608 Mal
Danksagung erhalten: 2228 Mal

Re: OC3 Wettersensor Skriptfrage

Beitrag von Baxxy » 10.09.2022, 18:31

Tibin hat geschrieben:
10.09.2022, 17:45
Könnte man das Skript so umschreiben, dass bei Spannungswegfall LastValue und bei Überlauf ValueMax greift?
Hmm, da müsste man sich erstmal überlegen wie man Spannungswegfall vs. Überlauf sauber erkennt.
Ohne Testgerät etwas schwierig.
Zählt der denn sauber jeden einzelnen Liter hoch? Dann könnte man prüfen ob LastValue() == 999 war.
Wenn ja --> Überlauf
Wenn nein --> Spannungswegfall

Mal zum testen:

Code: Alles auswählen

var rainToday = dom.GetObject(5091);
var rainYesterday = dom.GetObject(5092);
var rainCounter = dom.GetObject(5076);

          if ( (rainToday) && (rainYesterday) && (rainCounter) )
          {
            if (rainCounter.LastTimestamp())
            {
              var diff = rainCounter.Value() - rainCounter.LastValue();
              if ( diff < 0.0) {
                 if (rainCounter.LastValue() == 999.0 ) { diff = diff + rainCounter.ValueMax(); }
                   else { diff = diff + rainCounter.LastValue(); }
                   }
              rainToday.State(rainToday.State() + diff);
            }
            else
            {
              rainToday.State(0.0);
              rainYesterday.State(0.0);
            }
          }
Und nochmal prüfen ob ValueMax() wirklich 999 ist:

Code: Alles auswählen

WriteLine(dom.GetObject(5076).ValueMax());

Tibin
Beiträge: 507
Registriert: 26.10.2016, 16:08
System: CCU
Hat sich bedankt: 19 Mal
Danksagung erhalten: 15 Mal

Re: OC3 Wettersensor Skriptfrage

Beitrag von Tibin » 10.09.2022, 19:08

Baxxy hat geschrieben:
10.09.2022, 18:31
Zählt der denn sauber jeden einzelnen Liter hoch?
weiß jetzt nicht wie genau du das meinst, aber ich denke ja. Alle 2-3 min wird der Zuwachs an Regen dazu addiert und der Datenpunkt RAIN_COUNTER läuft immer weiter. Bis halt der Strom getrennt wird. So zum Beispiel zur Uhrzeit
17:36:38 = 17,11mm
17:39:32 = 17,70mm
17:42:12 = 18,00mm
17:46:48 = 18,29mm
und das wird dann an die SysVar "Regen heute" weitergegeben die dann alle 24 Stunden auf 0 gesetzt wird.
Gruß Tino

Benutzeravatar
Baxxy
Beiträge: 10836
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 608 Mal
Danksagung erhalten: 2228 Mal

Re: OC3 Wettersensor Skriptfrage

Beitrag von Baxxy » 10.09.2022, 19:22

Oben war von...
Tibin hat geschrieben:
09.09.2022, 16:43
Value.Max(bei mir 999)
... die Rede. Da bin ich von ganzzahligen (Integer) Werten ausgegangen.

Jetzt sieht man aber float-Werte wie...

Code: Alles auswählen

17,11mm
Damit ist es quasi unmöglich gegen LastValue() zu vergleichen.

Tibin
Beiträge: 507
Registriert: 26.10.2016, 16:08
System: CCU
Hat sich bedankt: 19 Mal
Danksagung erhalten: 15 Mal

Re: OC3 Wettersensor Skriptfrage

Beitrag von Tibin » 10.09.2022, 19:28

Komme gar nicht hinterher :mrgreen:
Baxxy hat geschrieben:
10.09.2022, 18:31
Und nochmal prüfen ob ValueMax() wirklich 999 ist
Unbenannt.PNG
Baxxy hat geschrieben:
10.09.2022, 18:31
Mal zum testen
also Stromwegfall kann ich testen, das andere da würde ich dir mal blind vertrauen und das so einbauen :mrgreen:
Wenn das so klappt, danke ich dir schon mal im Vorraus :wink:
Ich gebe auf jeden Fall noch Rückmeldung.
Gruß Tino

Tibin
Beiträge: 507
Registriert: 26.10.2016, 16:08
System: CCU
Hat sich bedankt: 19 Mal
Danksagung erhalten: 15 Mal

Re: OC3 Wettersensor Skriptfrage

Beitrag von Tibin » 10.09.2022, 19:31

Baxxy hat geschrieben:
10.09.2022, 19:22
Damit ist es quasi unmöglich gegen LastValue() zu vergleichen.
Och schade :cry: wenn du das sagst....
Aber trotzdem danke für deine Mühe
Und einen schönes Restwochenende noch.
Gruß Tino

Tibin
Beiträge: 507
Registriert: 26.10.2016, 16:08
System: CCU
Hat sich bedankt: 19 Mal
Danksagung erhalten: 15 Mal

Re: OC3 Wettersensor Skriptfrage

Beitrag von Tibin » 10.09.2022, 19:45

dann hätte dir diese Ausgabe wohl die Mühe erspart :roll:
Unbenannt1.PNG
Sorry aber da steht 999, von Float usw. habe ich leider keine Ahnung :mrgreen:
Schade dass man Max nicht irgendwie beschreiben kann, dann würde ich da 10000 reinschreiben und hätte paar Jahre Ruhe und könnte mit LastValue leben :mrgreen: :mrgreen:
Naja, nix für Ungut
Gruß Tino

Antworten

Zurück zu „HomeMatic Aktoren und Sensoren (klassisch)“