Script für gleitenden Mittelwert

Homematic-, TCL- und Shell-Script, Toolchain, C, etc.

Moderator: Co-Administratoren

BadenPower

Re: Script für gleitenden Mittelwert

Beitrag von BadenPower » 10.06.2016, 12:22

hanan hat geschrieben:Hallo zusammen
Ich wollte den gleitenden Mittelwert über 24 Stunden mit einem HM-WDS30-OT2-SM errechnen, leider habe ich da etwas Probleme die Daten vom Sensor mit CUXD zu holen.
Ich sehe hier keinen Zugriff mittels CUxD auf einen Datenpunkt eines Sensors.
hanan hat geschrieben:Wass mache ich hier falsch?
Du verwendest eine Skript-Variable mit dem Namen >Aussentemperatur<, welche nicht deklariert ist und keinen Wert zugewiesen bekommen hat.

Code: Alles auswählen

m = dom.GetObject(Aussentemperatur+"AussenT.Mittelwert").Value();

Benutzeravatar
hanan
Beiträge: 222
Registriert: 15.12.2012, 16:00
Danksagung erhalten: 1 Mal

Re: Script für gleitenden Mittelwert

Beitrag von hanan » 10.06.2016, 13:37

Hallo BadenPower
Danke für den Tipp.

Frage: wie kann ich auf den HM-WDS30-OT2-SM mit der Serie-Nummer LEQ0177421 die Temperatur mit dem Script auslesen?

Besten Dank im Voraus.
Liebe Grüsse aus der Schweiz
Andy
_________________________________________________________________________________________________
Raspberrymatic auf NUC unter Proxmox mit RPI-RF-MOD Funkmodul und Antenne Aurel GP868, ca. 19x BidCos-RF und ca. 46x HmIP-RF, ioBroker auf NUC unter Proxmox, 4x Wiffi 3.0, Pulsecounter, Weatherman-Edition

BadenPower

Re: Script für gleitenden Mittelwert

Beitrag von BadenPower » 10.06.2016, 14:12

hanan hat geschrieben:Hallo BadenPower
Danke für den Tipp.

Frage: wie kann ich auf den HM-WDS30-OT2-SM mit der Serie-Nummer LEQ0177421 die Temperatur mit dem Script auslesen?

Besten Dank im Voraus.
Wenn Du dies über die Seriennummer machen möchtest, dann zum Beispiel so:

Code: Alles auswählen

real TempFühler1 = (dom.GetObject("BidCos-RF.LEQ0177421:1.TEMPERATURE")).Value();
real TempFühler2 = (dom.GetObject("BidCos-RF.LEQ0177421:2.TEMPERATURE")).Value();
real TempDifferenz1 = (dom.GetObject("BidCos-RF.LEQ0177421:3.TEMPERATURE")).Value();
real TempDifferenz2 = (dom.GetObject("BidCos-RF.LEQ0177421:4.TEMPERATURE")).Value();
.

Benutzeravatar
hanan
Beiträge: 222
Registriert: 15.12.2012, 16:00
Danksagung erhalten: 1 Mal

Re: Script für gleitenden Mittelwert

Beitrag von hanan » 10.06.2016, 15:47

Hallo BadenPower
Irgendwie bekomme ich das nicht hin... (habe Dir den falschen HM-Sensor angegeben, doch das Problem liegt wahrscheinlich nicht nur daran)

Ich wollte den untenstehenden Code für eine Mittelwertberechnung meines Aussenluft-Sensors HM-WDS10-TH-O (LEQ0177421) mit einer Variablen "AussenTMittel" über 24 Stunden verwenden. Also Script stündlich ablaufen lassen, Wert aus Variable auslesen, Neuer Wert mit LEQ0177421 errechnet und Wert in die Variable AussenTMittel zurückschreiben. Mit diesem errechneten Mittelwert möchte ich die Freigabe für meine Klimaanlage realisieren.

Doch mir fehlt da noch einiges an Sachverständnis.

Die Variable "AussenTMittel" habe ich als Zahl erstellt. Jetzt weiss ich hier mit dem Skript leider nicht weiter.

Code: Alles auswählen


    ! gleitender Mittelwert über 6 Werte
    ! Programm muß zyklisch per Zeitmodul ausgelöst werden

    ! Raumname ist Bestandteil des Kanalnamens (Raum.Sensor)
    ! und des Namens der Systemvariablen (Raum.T_Mittel)
    string raum = "Aussen";

    ! Lokale Variablen
    real    m;       ! Mittelwert
    real    n = 6; ! Anzahl der Mittelwerte
    
   ! Mittelwert in die lokale Variable einlesen
   m = dom.GetObject(raum+".T_Mittel").Value();

    ! Berechnung Mittelwert
    m = m*(n-1)/n +  dom.GetObject(raum+".Sensor").DPByHssDP("TEMPERATURE").Value()  /n;

    ! In Systemvariable schreiben
    dom.GetObject(raum+".T_Mittel").State(m);



Hat mir jemand bitte einen Tipp oder eine verständliche Vorlage, damit ich dieses weiter versuchen kann.

Danke im Voraus.
Liebe Grüsse aus der Schweiz
Andy
_________________________________________________________________________________________________
Raspberrymatic auf NUC unter Proxmox mit RPI-RF-MOD Funkmodul und Antenne Aurel GP868, ca. 19x BidCos-RF und ca. 46x HmIP-RF, ioBroker auf NUC unter Proxmox, 4x Wiffi 3.0, Pulsecounter, Weatherman-Edition

paul53
Beiträge: 2554
Registriert: 26.04.2012, 20:42
Wohnort: Berlin
Danksagung erhalten: 15 Mal

Re: Script für gleitenden Mittelwert

Beitrag von paul53 » 10.06.2016, 16:18

Hier steht es:

Code: Alles auswählen

! Raumname ist Bestandteil des Kanalnamens (Raum.Sensor)
Du musst den Sensor-Kanal (Kanal 1) des Aussensensors LEQ0177421 umbenennen in "Aussen.Sensor".
hanan hat geschrieben: mit einer Variablen "AussenTMittel"
Dann musst Du im Script ändern

Code: Alles auswählen

dom.GetObject(raum+".T_Mittel")
in

Code: Alles auswählen

dom.GetObject(raum+"TMittel")
Versionen: HM-CC-TC 2.1, HM-LC-Sw1 1.9, HM-CC-RT-DN 1.1, HM-MOD-RPI-PCB 1.2.1 (keine CCU)

Benutzeravatar
hanan
Beiträge: 222
Registriert: 15.12.2012, 16:00
Danksagung erhalten: 1 Mal

Re: Script für gleitenden Mittelwert

Beitrag von hanan » 10.06.2016, 19:13

Hallo paul53
Besten Dank.

Die Variable wird jetzt überschrieben, doch vom Sensor habe ich noch keine Daten...
In der Beilage die Benennung meines Aussenthermometers.
Dateianhänge
Aussenthermometer.jpg
Liebe Grüsse aus der Schweiz
Andy
_________________________________________________________________________________________________
Raspberrymatic auf NUC unter Proxmox mit RPI-RF-MOD Funkmodul und Antenne Aurel GP868, ca. 19x BidCos-RF und ca. 46x HmIP-RF, ioBroker auf NUC unter Proxmox, 4x Wiffi 3.0, Pulsecounter, Weatherman-Edition

paul53
Beiträge: 2554
Registriert: 26.04.2012, 20:42
Wohnort: Berlin
Danksagung erhalten: 15 Mal

Re: Script für gleitenden Mittelwert

Beitrag von paul53 » 10.06.2016, 19:41

Der Kanalname ist korrekt. Damit sollte das Script funktionieren, falls Du den Namen "Aussen.Sensor" nicht für ein weiteres Objekt verwendet hast.
Die beiden Zeilen:

Code: Alles auswählen

string raum = "Aussen";
m = m*(n-1)/n +  dom.GetObject(raum+".Sensor").DPByHssDP("TEMPERATURE").Value() /n;
sorgen für die Mittelwertberechnung aus der Aussentemperatur.
Vielleicht solltest Du das Programm erst einige Male per Hand starten um zu sehen, ob sich der Mittelwert der Aussentemperatur nähert.
Versionen: HM-CC-TC 2.1, HM-LC-Sw1 1.9, HM-CC-RT-DN 1.1, HM-MOD-RPI-PCB 1.2.1 (keine CCU)

Benutzeravatar
hanan
Beiträge: 222
Registriert: 15.12.2012, 16:00
Danksagung erhalten: 1 Mal

Re: Script für gleitenden Mittelwert

Beitrag von hanan » 10.06.2016, 21:00

Das Skript lasse ich zur Zeit im 1 Minuten Intervall laufen, doch der Wert bleibt bei 0.00.

Ist eventuell noch ein Problem bei der Variable?
Dateianhänge
Variable.jpg
Liebe Grüsse aus der Schweiz
Andy
_________________________________________________________________________________________________
Raspberrymatic auf NUC unter Proxmox mit RPI-RF-MOD Funkmodul und Antenne Aurel GP868, ca. 19x BidCos-RF und ca. 46x HmIP-RF, ioBroker auf NUC unter Proxmox, 4x Wiffi 3.0, Pulsecounter, Weatherman-Edition

paul53
Beiträge: 2554
Registriert: 26.04.2012, 20:42
Wohnort: Berlin
Danksagung erhalten: 15 Mal

Re: Script für gleitenden Mittelwert

Beitrag von paul53 » 10.06.2016, 21:56

HM-Script arbeitet alles von rechts nach links ab, d.h. es fehlt noch eine Klammer:

Code: Alles auswählen

m = (m*(n-1)/n) +  dom.GetObject(raum+".Sensor").DPByHssDP("TEMPERATURE").Value() /n;
Versionen: HM-CC-TC 2.1, HM-LC-Sw1 1.9, HM-CC-RT-DN 1.1, HM-MOD-RPI-PCB 1.2.1 (keine CCU)

Benutzeravatar
hanan
Beiträge: 222
Registriert: 15.12.2012, 16:00
Danksagung erhalten: 1 Mal

Re: Script für gleitenden Mittelwert

Beitrag von hanan » 10.06.2016, 23:30

Hallo paul53
Besten Dank, es funzt...

Schönes Wochenende
Grüsse aus der Schweiz
Liebe Grüsse aus der Schweiz
Andy
_________________________________________________________________________________________________
Raspberrymatic auf NUC unter Proxmox mit RPI-RF-MOD Funkmodul und Antenne Aurel GP868, ca. 19x BidCos-RF und ca. 46x HmIP-RF, ioBroker auf NUC unter Proxmox, 4x Wiffi 3.0, Pulsecounter, Weatherman-Edition

Antworten

Zurück zu „Softwareentwicklung für die HomeMatic CCU“