Script zur Ermittlung eines gleitenden Mittelwertes

Problemlösungen und Hinweise von allgemeinem Interesse zur Haussteuerung mit HomeMatic

Moderator: Co-Administratoren

MichaelN
Beiträge: 9771
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 707 Mal
Danksagung erhalten: 1647 Mal

Re: Script zur Ermittlung eines gleitenden Mittelwertes

Beitrag von MichaelN » 20.05.2023, 20:07

Vielleicht liegt es auch daran wie elegant die Lösung ist :wink:
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 +++

[sprotte80]
Beiträge: 337
Registriert: 05.10.2020, 18:37
System: CCU
Hat sich bedankt: 30 Mal
Danksagung erhalten: 25 Mal

Re: Script zur Ermittlung eines gleitenden Mittelwertes

Beitrag von [sprotte80] » 20.05.2023, 20:27

Hi
MichaelN hat geschrieben:
20.05.2023, 20:04
Keine Lust fremden Code zu analysieren. Kannst du ruhig übernehmen.
mit dem Code vom Script hats wenig zu tun.
Man lenke den Blick auf den Inhalt seiner Werteliste
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
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.

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.

MarKiesCo
Beiträge: 80
Registriert: 11.04.2023, 21:07
System: CCU
Hat sich bedankt: 34 Mal
Danksagung erhalten: 4 Mal

Re: Script zur Ermittlung eines gleitenden Mittelwertes

Beitrag von MarKiesCo » 12.05.2024, 12:30

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) :cry:

Gruß MarKiesCo
Zuletzt geändert von MarKiesCo am 12.05.2024, 13:06, insgesamt 1-mal geändert.

MichaelN
Beiträge: 9771
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 707 Mal
Danksagung erhalten: 1647 Mal

Re: Script zur Ermittlung eines gleitenden Mittelwertes

Beitrag von MichaelN » 12.05.2024, 12:44

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 +++

MarKiesCo
Beiträge: 80
Registriert: 11.04.2023, 21:07
System: CCU
Hat sich bedankt: 34 Mal
Danksagung erhalten: 4 Mal

Re: Script zur Ermittlung eines gleitenden Mittelwertes

Beitrag von MarKiesCo » 12.05.2024, 12:49

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

Tyfys
Beiträge: 577
Registriert: 17.04.2021, 17:12
System: CCU
Hat sich bedankt: 29 Mal
Danksagung erhalten: 133 Mal

Re: Script zur Ermittlung eines gleitenden Mittelwertes

Beitrag von Tyfys » 12.05.2024, 13:40

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

MichaelN
Beiträge: 9771
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 707 Mal
Danksagung erhalten: 1647 Mal

Re: Script zur Ermittlung eines gleitenden Mittelwertes

Beitrag von MichaelN » 12.05.2024, 16:52

MarKiesCo hat geschrieben:
12.05.2024, 12:49
weil die Liste ein Objekt ist
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 +++

MarKiesCo
Beiträge: 80
Registriert: 11.04.2023, 21:07
System: CCU
Hat sich bedankt: 34 Mal
Danksagung erhalten: 4 Mal

Re: Script zur Ermittlung eines gleitenden Mittelwertes

Beitrag von MarKiesCo » 12.05.2024, 23:34

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.
Screenshot 2024-05-12 232406.png
Screenshot 2024-05-12 232406.png (10.03 KiB) 128 mal betrachtet

...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?
Screenshot 2024-05-12 232513.png

Gruß, MarKiesCo

Tyfys
Beiträge: 577
Registriert: 17.04.2021, 17:12
System: CCU
Hat sich bedankt: 29 Mal
Danksagung erhalten: 133 Mal

Re: Script zur Ermittlung eines gleitenden Mittelwertes

Beitrag von Tyfys » 12.05.2024, 23:59

so siehst du, ob du die richtige System-Variable am Wickel hast und deren Inhalt
(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");
 }
stell dann das Ergebnis hier mal rein in Code-Tags </>
Gruß
Harry

MarKiesCo
Beiträge: 80
Registriert: 11.04.2023, 21:07
System: CCU
Hat sich bedankt: 34 Mal
Danksagung erhalten: 4 Mal

Re: Script zur Ermittlung eines gleitenden Mittelwertes

Beitrag von MarKiesCo » 13.05.2024, 06:15

voilà

CCU Scriptfenster

Code: Alles auswählen

0
integer

Screenshot Scriptfenster
Screenshot 2024-05-13 070712.png


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
Screenshot 2024-05-13 071326.png
Screenshot 2024-05-13 071326.png (10.84 KiB) 79 mal betrachtet

Gruß, MarKiesCo

Antworten

Zurück zu „HomeMatic Tipps & Tricks - keine Fragen!“