Regenzähler Script für Kombisensor

Allgemeines zur HomeMatic Haussteuerung

Moderator: Co-Administratoren

Antworten
jonnygxr
Beiträge: 3
Registriert: 27.03.2019, 12:54

Regenzähler Script für Kombisensor

Beitrag von jonnygxr » 27.03.2019, 13:14

Hallo zusammen,

ich verzweifel langsam. Ich möchte in der Mediola App den Tageswert vom Regen darstellen.
Wenn ich das Gerät selbst auswähle, kommt der aufaddierte Wert, seit dem letzten Neustart des Sensors.
Wie bekannt ist, gibt es dafür ein Script, das Systemintern alles berechnet und dann z.B. in der Favoritenliste anzeigt.

Da ich aber mit Scripten noch nicht vertraut bin und einfach null Ahnung davon hab, wie ich das machen muss, wende ich mich jetz an euch.

Meine Idee war, ein Script, das mir den errechneten Tageswert in meine bereits erstellte Systemvariable "tagesregenmenge" einfügt.
Diese Systemvariable stell ich dann mit einem normalen Programm mit Zeitmodul zurück.

Wie muss das Script aussehen ich bin echt am ende mitm grübeln.

Das Script, dass momentan angelegt ist sieht so aus.

Vielen Dank schon mal für eure hilfe!!!

Code: Alles auswählen

object chn = dom.GetObject('4632');
object oOverflow = chn.DPByControl('WEATHER_TRANSMIT.RAIN_COUNTER_OVERFLOW');
object oRainCounter = chn.DPByControl('WEATHER_TRANSMIT.RAIN_COUNTER');
object oSysVarRain = dom.GetObject('svHmIPRainCounter_4632_001858A992B97C:1');
object oSysVarRainOldVal = dom.GetObject('svHmIPRainCounterOldVal_4632');
object oSysVarCounterToday =  dom.GetObject('svHmIPRainCounterToday_4632');
object oSysVarCounterYesterday =  dom.GetObject('svHmIPRainCounterYesterday_4632');
boolean overFlowFlag = oOverflow.Value();
real devVal = oRainCounter.Value();
real devValMax = oRainCounter.ValueMax();
real oldDevVal = oSysVarRainOldVal.Value();
real diffVal = 0.0;
real sysVarVal = oSysVarRain.Value();
real sysVarTodayVal = oSysVarCounterToday.Value();
real todayTotal = 0.0;
integer tmp_devVal = (devVal.ToString().ToFloat() * 1000).ToInteger();
integer tmp_oldDevVal = (oldDevVal.ToString().ToFloat() * 1000).ToInteger();
if (overFlowFlag == false) {
! Normal conditions
if (tmp_oldDevVal <= tmp_devVal) {
diffVal = devVal - oldDevVal;
}
! Device has rebooted
if (tmp_oldDevVal > tmp_devVal) {
diffVal = devVal;
}
} else {
!overFlow is true
if (tmp_oldDevVal > tmp_devVal) {
! An device overflow has occured
diffVal = (devVal + devValMax) - oldDevVal;
} else {
! Once the overflow flag has been set it will only be false when the device reboots
! Therefore this is the normal condition after an device overflow
diffVal = devVal - oldDevVal;
}
}
oSysVarRainOldVal.State(devVal);
oSysVarRain.State(sysVarVal + diffVal);
todayTotal = sysVarTodayVal + diffVal;
if (todayTotal >= 1440.0) {todayTotal = 0.0;}
oSysVarCounterToday.State(todayTotal);

alchy
Beiträge: 10754
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 673 Mal

Re: Regenzähler Script für Kombisensor

Beitrag von alchy » 28.03.2019, 07:26

So wie ich dasScript lese gibt es ja die Tagesregenmenge schon in einer Systemvariablen.
Was du willst, ist sozusagen das Ergebnis der Berechnung in eine 2. Variable tagesregenmenge zu speichern?!? (ich habe einen solchen sensor nicht)
Das sollte einfach gehen, wenn du die folgenden Zeilen an das Ende des vorhandenen Scripts anhängst.

Code: Alles auswählen

if ( (dom.GetObject(ID_SYSTEM_VARIABLES)).Get("tagesregenmenge") ) { dom.GetObject(ID_SYSTEM_VARIABLES).Get("tagesregenmenge").State(todayTotal);}
Alchy

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

jonnygxr
Beiträge: 3
Registriert: 27.03.2019, 12:54

Re: Regenzähler Script für Kombisensor

Beitrag von jonnygxr » 04.04.2019, 10:30

Genau so, ich werde das gleich mal ausprobieren und geb dann nochmal eine Rückmeldung.
Vielen Dank schonmal, das mit den Scripten muss ich mir erst noch beibringen.

Wenn du dir so einen Sensor zulegst, dann beachte dass die Pro Version ein Lagerproblem hat. Der Basic läuft sehr gut, bei der Pro version hab ich mittlerweile neue Qualitätslager nachgerüstet jetz funktioniert er einwandfrei.

jonnygxr
Beiträge: 3
Registriert: 27.03.2019, 12:54

Re: Regenzähler Script für Kombisensor

Beitrag von jonnygxr » 14.04.2019, 13:38

Hat soweit funktioniert vielen Dank!!

Ist es jetz irgendwie möglich, damit ein Balkendiagramm zu erstellen und so diese Daten von jedem Tag zu loggen?
Beim Historian hab ich das Problem, dass die Daten immer Schubweise angezeigt werden, ich will aber dass ich pro Tag nur einen Wert habe..
Mittels virtuellen Gerät oder so ?
Oder kann ich im Historian irgendwo einstellen, dass es mit nur einmal am Tag den Wert abfragt?

Antworten

Zurück zu „HomeMatic allgemein“