Script zur Ermittlung eines gleitenden Mittelwertes
Moderator: Co-Administratoren
-
- Beiträge: 9807
- Registriert: 27.04.2020, 10:34
- System: CCU
- Hat sich bedankt: 711 Mal
- Danksagung erhalten: 1656 Mal
Re: Script zur Ermittlung eines gleitenden Mittelwertes
Vielleicht liegt es auch daran wie elegant die Lösung ist
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 +++
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 +++
-
- Beiträge: 338
- Registriert: 05.10.2020, 18:37
- System: CCU
- Hat sich bedankt: 30 Mal
- Danksagung erhalten: 25 Mal
Re: Script zur Ermittlung eines gleitenden Mittelwertes
Hi
Man lenke den Blick auf den Inhalt seiner Werteliste
Thomas
mit dem Code vom Script hats wenig zu tun.
Man lenke den Blick auf den Inhalt seiner Werteliste
Wenn der wo fragt halt verschweigt das er nach dem 1. scriptstart die SysVars umbenannt und nur die Änderungen im Script sichtbar sind wirds halt schwirig.ich habe in der Werteliste
gemittelte Helligkeit_wl Über 1h gesammelte Werte der Helligkeit. 20.05.2023 15:04:40
208|199|195|216|219|218|162|190|194|203|190|194|192|173|196|189|196|170|162|164
diese Werte stehen
Thomas
Wenn du keine App zur Bedienung brauchst, dann hast du kein Smarthome, sondern nur eine angefangene Baustelle, oder nur ein unsmartes Autohome.
Homematic-Script - ScriptLexikon für alle
Methoden Konstanten
Hilfe und Infos erwünscht. Alle können mitmachen. Keine Levels. Keine Geheimtuerei.
Homematic-Script - ScriptLexikon für alle
Methoden Konstanten
Hilfe und Infos erwünscht. Alle können mitmachen. Keine Levels. Keine Geheimtuerei.
-
- Beiträge: 80
- Registriert: 11.04.2023, 21:07
- System: CCU
- Hat sich bedankt: 36 Mal
- Danksagung erhalten: 4 Mal
Re: Script zur Ermittlung eines gleitenden Mittelwertes
Hallo, sorry, ich hänge gerade etwas - möchte gerne die Liste "svNameWerteliste" abrufen, und meine 20 Werte durch 10 statische temporär ersetzen, in meinem Fall -150.
Siehe wie folgt:
Liste aktuell zB.:
-119|-124|158|-126|-236|-272|-214|-213|-105|-156|-296|-295|-592|-389|-114|-123|-269|-335|-338|-336
Soll unabhängig von der Mittelwertsberechnung einmal gesetzt werden auf zB:
-150|-150|-150|-150|-150|-150|-150|-150|-150|-150|-296|-295|-592|-389|-114|-123|-269|-335|-338|-336
Wird danach bei forlaufender, automatisch Mittelwertsberechnung nach ein paar Minuten vermutlich dann so zB aussehen:
-123|-145|-174|-150|-150|-150|-150|-150|-150|-150|-150|-150|-150|-296|-295|-592|-389|-114|-123|-269
Ziel:
Ich möchte den Wert in meiner Variable "Stromzaehler_MitW", die meinen Mittelwert anzeigt (zugewiesen zu "svMittelwertGleitend"), so kurzfristig beeinflussen.
Es sollte mit "StrValueByIndex" gehen, aber iwie klappts bei mir nicht (Liste bei Abruf ist immer 0)
Gruß MarKiesCo
Siehe wie folgt:
Liste aktuell zB.:
-119|-124|158|-126|-236|-272|-214|-213|-105|-156|-296|-295|-592|-389|-114|-123|-269|-335|-338|-336
Soll unabhängig von der Mittelwertsberechnung einmal gesetzt werden auf zB:
-150|-150|-150|-150|-150|-150|-150|-150|-150|-150|-296|-295|-592|-389|-114|-123|-269|-335|-338|-336
Wird danach bei forlaufender, automatisch Mittelwertsberechnung nach ein paar Minuten vermutlich dann so zB aussehen:
-123|-145|-174|-150|-150|-150|-150|-150|-150|-150|-150|-150|-150|-296|-295|-592|-389|-114|-123|-269
Ziel:
Ich möchte den Wert in meiner Variable "Stromzaehler_MitW", die meinen Mittelwert anzeigt (zugewiesen zu "svMittelwertGleitend"), so kurzfristig beeinflussen.
Es sollte mit "StrValueByIndex" gehen, aber iwie klappts bei mir nicht (Liste bei Abruf ist immer 0)
Gruß MarKiesCo
Zuletzt geändert von MarKiesCo am 12.05.2024, 13:06, insgesamt 1-mal geändert.
-
- Beiträge: 9807
- Registriert: 27.04.2020, 10:34
- System: CCU
- Hat sich bedankt: 711 Mal
- Danksagung erhalten: 1656 Mal
Re: Script zur Ermittlung eines gleitenden Mittelwertes
Tipps zu Skript befehlen siehe Signatur
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 +++
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 +++
-
- Beiträge: 80
- Registriert: 11.04.2023, 21:07
- System: CCU
- Hat sich bedankt: 36 Mal
- Danksagung erhalten: 4 Mal
Re: Script zur Ermittlung eines gleitenden Mittelwertes
ja, ich nutze tatsächlich immer sämtliche Dokumentationen aber wie ich schrieb Michael, ich komm grad nicht weiter, sicher weil die Liste ein Objekt ist. wäre dankbar für Hilfe
-
- Beiträge: 583
- Registriert: 17.04.2021, 17:12
- System: CCU
- Hat sich bedankt: 29 Mal
- Danksagung erhalten: 137 Mal
Re: Script zur Ermittlung eines gleitenden Mittelwertes
Du kannst dich z.B. hieran orientieren:
Code: Alles auswählen
!Auslesen über Variable für Systemvariablennamen
string SysVarName = "svNameWerteliste";
if ( dom.GetObject(ID_SYSTEM_VARIABLES).Get(SysVarName)) {
string svNameWerteliste = dom.GetObject(ID_SYSTEM_VARIABLES).Get(SysVarName).Value();
} else {
WriteLine("Variablenname ist falsch");
}
!zum Testen -kann sonst weg
string svNameWerteliste = "-119|-124|158|-126|-236|-272|-214|-213|-105|-156|-296|-295|-592|-389|-114|-123|-269|-335|-338|-336";
string neueWertliste;
string index;
integer von = 0;
integer bis = 19;
foreach(index, system.GenerateEnum(von, bis)) {
if (index.ToInteger() < 10) {
neueWertliste = neueWertliste # "-150" #"|";
} else {
neueWertliste = neueWertliste # (svNameWerteliste.StrValueByIndex("|", index.ToInteger()))#"|";
}
}
neueWertliste = neueWertliste.RTrim("|");
!zum Testen
WriteLine(neueWertliste);
!Schreiben über Variablen für Systemvariablennamen und neuem Wert
string SysVarName = "svNameWerteliste";
boolean SVrNewVal = neueWertliste;
if (dom.GetObject(ID_SYSTEM_VARIABLES).Get(SysVarName)) {
dom.GetObject(ID_SYSTEM_VARIABLES).Get(SysVarName).State(SVrNewVal);
} else {
WriteLine("Variablenname ist falsch");
}
Gruß
Harry
Harry
-
- Beiträge: 9807
- Registriert: 27.04.2020, 10:34
- System: CCU
- Hat sich bedankt: 711 Mal
- Danksagung erhalten: 1656 Mal
Re: Script zur Ermittlung eines gleitenden Mittelwertes
Nein, die Liste ist ein einfacher String. Du brauchst eigentlich nur einen neuen basteln aus deinem Wunsch Wert und der Hälfte der alten Werte. Dummerweise weiß man nie, wo die Trennstelle ist. Daher wirst du die Werte auslesen und neu zusammen setzen müssen.
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 +++
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 +++
-
- Beiträge: 80
- Registriert: 11.04.2023, 21:07
- System: CCU
- Hat sich bedankt: 36 Mal
- Danksagung erhalten: 4 Mal
Re: Script zur Ermittlung eines gleitenden Mittelwertes
Danke Tyfys und Michael, aber irgendwie komm ich auf das selbe Ergebnis wie zuvor, 0
Siehe Screenshot meine Liste mit dem aktuellen Werten zur Mittelwertberechnung.
...und das Ergebnis des Scriptteils. Was übersehe ich, um erstmal nur den Inhalt der Liste im SDV (bzw. im CCU Scriptfenster) sehen zu können?
Gruß, MarKiesCo
Siehe Screenshot meine Liste mit dem aktuellen Werten zur Mittelwertberechnung.
...und das Ergebnis des Scriptteils. Was übersehe ich, um erstmal nur den Inhalt der Liste im SDV (bzw. im CCU Scriptfenster) sehen zu können?
Gruß, MarKiesCo
-
- Beiträge: 583
- Registriert: 17.04.2021, 17:12
- System: CCU
- Hat sich bedankt: 29 Mal
- Danksagung erhalten: 137 Mal
Re: Script zur Ermittlung eines gleitenden Mittelwertes
so siehst du, ob du die richtige System-Variable am Wickel hast und deren Inhalt
(im CCU Scriptfenster Skript testen)
stell dann das Ergebnis hier mal rein in Code-Tags </>
(im CCU Scriptfenster Skript testen)
Code: Alles auswählen
string SysVarName = "Stromzaehler_Schaltschrank_ZwSp";
if ( dom.GetObject(ID_SYSTEM_VARIABLES).Get(SysVarName)) {
string svNameWerteliste = dom.GetObject(ID_SYSTEM_VARIABLES).Get(SysVarName).Value();
WriteLine(svNameWerteliste);
WriteLine(svNameWerteliste.Type());
} else {
WriteLine("Variablenname ist falsch");
}
Gruß
Harry
Harry
-
- Beiträge: 80
- Registriert: 11.04.2023, 21:07
- System: CCU
- Hat sich bedankt: 36 Mal
- Danksagung erhalten: 4 Mal
Re: Script zur Ermittlung eines gleitenden Mittelwertes
voilà
CCU Scriptfenster
Screenshot Scriptfenster
SDV results
Aktuelle Werteliste in CCU
Gruß, MarKiesCo
CCU Scriptfenster
Code: Alles auswählen
0
integer
Screenshot Scriptfenster
SDV results
Code: Alles auswählen
------------------------------- Scriptausgabe -------------------------------
0
integer
------------------------------ Script Variablen -----------------------------
[SysVarName ](string ): Stromzaehler_Schaltschrank_ZwSp
[svNameWerteliste ](string-->integer): 0
------------------------------- Ausführung -------------------------------
06:14:02:293 Start Programmausführung
06:14:02:293 Hole Systemzeit [TX 36 Bytes]
06:14:02:453 Empfange Systemzeit [RX 153 Bytes]
06:14:02:455 Sende Script an CCU [TX 818 Bytes]
06:14:02:604 Empfange Daten von CCU [RX 288 Bytes]
06:14:02:604 Hole Systemlog [TX 118 Bytes]
06:14:02:786 Empfange Systemlog [RX 11451 Bytes]
06:14:02:795 Scriptausführung und Auswertung abgeschlossen
06:14:02:795 CCU Laufzeit 0.157 sec
Aktuelle Werteliste in CCU
Gruß, MarKiesCo