Suche Skript für Regenmenge

Allgemeines zur HomeMatic Haussteuerung

Moderator: Co-Administratoren

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

Re: Suche Skript für Regenmenge

Beitrag von Baxxy » 30.01.2021, 09:48

Na, findet ihr noch zueinander? :wink:
NilsG hat geschrieben:
30.01.2021, 09:05
Ließ erstmal die Datenpunkte mit dem Script aus
Pihero hat geschrieben:
29.01.2021, 22:43
Ich hab ja einen weatherman...
Die Daten des Weatherman stehen regulär nur in Systemvariablen. Da lässt sich schlecht was per Seriennummer auslesen.
Pihero hat geschrieben:
29.01.2021, 22:43
Regenmenge zählen? Und ist es dann die Regenmenge pro Tag, soll heißen wird der Wert deines raincounters täglich auf null gesetzt, quasi gerät intern?
Ein bisschen Recherche hätte Dir gezeigt das der Datenpunkt .RAIN_COUNTER ein kontinuierlicher Zähler ist der sich nur durch stromlos machen des Gerätes auf "0" setzen lässt.

Benutzeravatar
NilsG
Beiträge: 1702
Registriert: 09.08.2013, 23:44
System: CCU
Hat sich bedankt: 385 Mal
Danksagung erhalten: 30 Mal
Kontaktdaten:

Re: Suche Skript für Regenmenge

Beitrag von NilsG » 01.02.2021, 08:41

Moin zusammen!

Bei mir kollidiert trotzdem noch etwas :roll:
Brauche mal Unterstützung von Script-Kennern

Jeden SONNTAG um 24:00, wenn die neue Woche startet, werden für den Monat - und somit für das Jahr - falsche Werte gerschrieben.
Und zwar eine fortlaufende Summierung. Warum?
IMG_0558.PNG


Folgendes läuft bei mir:

täglich:

Bildschirmfoto 2021-02-01 um 08.27.11.png

Code: Alles auswählen

var source = dom.GetObject("BidCos-RF.LEQ0644222:1.RAIN_COUNTER");
var weekday = system.Date("%u");
var rain_w = dom.GetObject("Regen WOCHE");

var rain_month;
if (weekday == "1") { rain_day = dom.GetObject("Regen MONTAG"); }
if (weekday == "2") { rain_day = dom.GetObject("Regen DIENSTAG"); }
if (weekday == "3") { rain_day = dom.GetObject("Regen MITTWOCH"); }
if (weekday == "4") { rain_day = dom.GetObject("Regen DONNERSTAG"); }
if (weekday == "5") { rain_day = dom.GetObject("Regen FREITAG"); }
if (weekday == "6") { rain_day = dom.GetObject("Regen SAMSTAG"); }
if (weekday == "7") { rain_day = dom.GetObject("Regen SONNTAG"); }

if (source)
{
    var diff = source.Value() - source.LastValue();
    if ( (1.0*diff) < 0.0)
    {
      diff = (1.0*diff) + source.ValueMax();
    }
    rain_day.State(1.0*(rain_day.State()) + diff);

    rain_w.State(1.0*(rain_w.State()) + diff);
}

am Ender der Woche:

Bildschirmfoto 2021-02-01 um 08.36.24.png

Code: Alles auswählen

var AlteVar=dom.GetObject("Regen WOCHE");
var NeueVar=dom.GetObject("Regen VORWOCHE");
var AlterWert=AlteVar.Value();
NeueVar.State(AlterWert);
am Ende des Monats/Anfang des Folge-Montas:

Bildschirmfoto 2021-02-01 um 08.38.01.png

Alles im Abstand von 1 Sekunde, damit die Variblen erst übertragen und dann genullt werden; so die Theorie.

Aber irgendetwas paßt da nicht?!? :?:
Grüße und DANKE! 🍻

Nils

-----------------------------------------
CCU3 + 2x LAN-Gateway

Pihero
Beiträge: 238
Registriert: 02.08.2019, 21:24
Wohnort: Pforzheim
Hat sich bedankt: 1 Mal
Danksagung erhalten: 3 Mal

Re: Suche Skript für Regenmenge

Beitrag von Pihero » 03.02.2021, 20:00

Baxxy hat geschrieben:
30.01.2021, 09:48
Na, findet ihr noch zueinander?
Danke für dein mediatorisches Eingreifen ;P

Ich denke das wir meinen Punkt wahrscheinlich erst sinnvoll weiter diskutieren können wenn jemand beim Skript unterstützt...
Ich habe sehr großes Interesse kann aber bei dieser Komplexität nichts beitragen :(

Daher PUSH für das Thema :)

Gruß, Philipp

Benutzeravatar
NilsG
Beiträge: 1702
Registriert: 09.08.2013, 23:44
System: CCU
Hat sich bedankt: 385 Mal
Danksagung erhalten: 30 Mal
Kontaktdaten:

Re: Suche Skript für Regenmenge

Beitrag von NilsG » 03.02.2021, 20:39

Ich führe am Ende jeder Woche bzw. jedes Jahres auch noch ein kleines Programm aus, dass die Werte von
"Regen WOCHE" in "Regen VORWOCHE" bzw. "Regen JAHR" in "Regen VORJAHR" schiebt

Bildschirmfoto 2021-02-03 um 20.37.27.png

Code: Alles auswählen

var AlteVar=dom.GetObject("Regen WOCHE");
var NeueVar=dom.GetObject("Regen VORWOCHE");
var AlterWert=AlteVar.Value();
NeueVar.State(AlterWert);
Stimmt das Script?

Kann das sein, dass das den Fehler verursacht?!? :roll: Denke eher nicht
Grüße und DANKE! 🍻

Nils

-----------------------------------------
CCU3 + 2x LAN-Gateway

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

Re: Suche Skript für Regenmenge

Beitrag von Baxxy » 03.02.2021, 23:13

Ich versuche mich mal...
NilsG hat geschrieben:
03.02.2021, 20:39
Stimmt das Script?
Ja, das passt soweit. Zwar etwas umständlich, aber funktional. Könnte man in einen Einzeiler packen. Hier mal ein etwas "schöneres" Beispiel.

Code: Alles auswählen

object sv_woche = dom.GetObject (ID_SYSTEM_VARIABLES).Get ("Regen WOCHE");
object sv_vorwoche = dom.GetObject (ID_SYSTEM_VARIABLES).Get ("Regen VORWOCHE");
sv_vorwoche.State(sv_woche.Value());
Macht aber genau das Selbe.
Mit einer zusätzlichen Scripzeile könntest du dir noch das separate "Regen Woche auf 0.00 setzen - Programm" sparen.

Code: Alles auswählen

sv_woche.State(0.0);
NilsG hat geschrieben:
03.02.2021, 20:39
Kann das sein, dass das den Fehler verursacht?!?
Nein, es schreibt zum Zeitpunkt der Ausführung der Inhalt von "Regen WOCHE" in "Regen VORWOCHE". Nicht mehr und nicht weniger.

Dein "Problem" ist aber...
NilsG hat geschrieben:
01.02.2021, 08:41
Jeden SONNTAG um 24:00, wenn die neue Woche startet, werden für den Monat - und somit für das Jahr - falsche Werte gerschrieben.
Und zwar eine fortlaufende Summierung.
Regen Jahr und Regen Monat sollten nur bei Aktualisierung des RAIN_Counter durch dein "Regen für Monate+Jahre - Script" geschrieben werden. Wenn da wirklich jeden Wochenanfang was passiert kommt es von einem Programm / Script was du hier noch nicht gezeigt hast.

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

Re: Suche Skript für Regenmenge

Beitrag von Baxxy » 03.02.2021, 23:29

Pihero hat geschrieben:
03.02.2021, 20:00
wenn jemand beim Skript unterstützt...
Das kannst du leider nicht so einfach auf den Weatherman umsetzen da dieser keinen fortlaufenden Regenzähler hat.
Man könnte das Script etwas ändern und stündlich aufrufen und für die Zählung dann "Regen mm letzte h" benutzen. Ob das einigermaßen funktionieren würde und wie genau das dann ist kann ich aber nicht sagen. Habe selbst kein solches Gerät.

Benutzeravatar
NilsG
Beiträge: 1702
Registriert: 09.08.2013, 23:44
System: CCU
Hat sich bedankt: 385 Mal
Danksagung erhalten: 30 Mal
Kontaktdaten:

Re: Suche Skript für Regenmenge

Beitrag von NilsG » 12.09.2021, 23:14

Moin zusammen!

Ich brauche nochmal Hilfe :|
Irgendwie haut mit den Werten (Monatswerte) immer dann etwas nicht hin, wenn ich die CCU Neustarte, z.b. bei Updates.
Die Regenmengen sind/werden dann immer viel höher; als wenn das Programm sich dann die Werte nochmals zieht?!

Leider habe ich das aber noch nicht reproduzieren und eingrenzen können und meist denke ich dann auch nicht dran vorher Screenshots zu machen.


Hat jemand eine Idee :idea: ?
Grüße und DANKE! 🍻

Nils

-----------------------------------------
CCU3 + 2x LAN-Gateway

MichaelN
Beiträge: 9679
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 700 Mal
Danksagung erhalten: 1626 Mal

Re: Suche Skript für Regenmenge

Beitrag von MichaelN » 12.09.2021, 23:37

Bei einem Neustart starten alle Programme!
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

Benutzeravatar
NilsG
Beiträge: 1702
Registriert: 09.08.2013, 23:44
System: CCU
Hat sich bedankt: 385 Mal
Danksagung erhalten: 30 Mal
Kontaktdaten:

Re: Suche Skript für Regenmenge

Beitrag von NilsG » 13.09.2021, 08:46

MichaelN hat geschrieben:
12.09.2021, 23:37
Bei einem Neustart starten alle Programme!

Ja, korrekt.
Und genau das denke ich verursacht das Problem.

Ich werde dann wohl auch die "Sicherheitsfunktion" mit der umfunktionierten Systemvariblen "Anwesenheit" hier einbauen.
Grüße und DANKE! 🍻

Nils

-----------------------------------------
CCU3 + 2x LAN-Gateway

Xel66
Beiträge: 14165
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 585 Mal
Danksagung erhalten: 1500 Mal

Re: Suche Skript für Regenmenge

Beitrag von Xel66 » 13.09.2021, 09:00

Nein, nicht korrekt, es starten nicht "alle" Porgramme. Diese Falschmeldung gewinnt auch nicht durch noch so ofte Wiederholung an Wahrheitswert (so ählich wie die Behauptung, dass alle Vögel fliegen könnten). Es wird bei allen Programmen eine Bedingungsprüfung gemacht (sieht man am Zeitstempel) und wenn diese Prüfung ein WAHR ergibt, wird ggf. ein dazugehöriges DANN abgearbeitet (oder ein ggf. vorhandenes SONST, wenn die Prüfung ein FALSCH ergeben hat). Programme mit Tastern als Trigger, sowie Zeitpunkten erhalten keinen Zeitstempel (definierte Zeitbereiche werden geprüft). Diese Vorgehensweise dient vermutlich dazu, das System bei einem Start in einen konsistenten Zustand zu versetzen, der den aktuellen Bedingungen sowie dem aktuellen Zeitpunkt entspricht. Ferner werden (vermeintlich während des Starts sowie auch danach) auch Bedingungsprüfungen durch die Statusübermittlung von Aktoren und Sensoren getriggert. Daten von Messensoren werden z.B. bei Thermosensoren mit 0°C inialisiert und beim der ersten Übermittlung auf den tatsächlichen Wert gesetzt. Sowas kann natürlich auch Programme triggern.

Dieses Verhalten wurde zumindest mit den HmIP-Geräten teilweise abgestellt, was aber auch wieder nicht auf des Nutzers Wohlwollen trifft (alle Aktoren werden bis zur ersten zyklischen Statusmeldung im WebUI als "AUS" unabhängig von ihrem tatsächlichen Schaltzustand dargestellt).

Wenn gerade solche Programme, die z.B. die Messwerte protokollieren oder in ander Variablen übertragen oder berechnen, dann ist deren Trigger eben falsch gewählt. Ein Programm, welches soetwas um 0:00 Uhr macht, dürfte nicht getriggert werden (außer der Neustart erfolgt genau um 0:00 Uhr, was hinreichend unwahrscheinlich ist).

Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

Antworten

Zurück zu „HomeMatic allgemein“