Wrapper-Device zur Berechnung abs. Feuchte nutzen

Anbindung von FS20-Komponenten, ELV-Wetterstationen, EnOcean und DMX an HomeMatic

Moderator: Co-Administratoren

Antworten
MichaelN
Beiträge: 1263
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 87 Mal
Danksagung erhalten: 130 Mal

Wrapper-Device zur Berechnung abs. Feuchte nutzen

Beitrag von MichaelN » 15.05.2020, 19:24

Hallo zusammen,

ich möchte das Wrapper Device zur Berechnung der absoluten Feuchte benutzen.

Prinzipiell funktioniert es auch - aber zu langsam.

Ich habe folgenden Code:

Code: Alles auswählen

! absolute Feuchte aussen und innen berechnen, vergleichen und Lueftungsempfehlung geben
dom.GetObject("CUxD.CUX9002001:1.SET_TEMPERATURE").State(dom.GetObject(ID_SYSTEM_VARIABLES).Get("Forecast_Temp_AVG").State());
dom.GetObject("CUxD.CUX9002001:1.SET_HUMIDITY").State(dom.GetObject(ID_SYSTEM_VARIABLES).Get("Forecast_Feuchte").State());
var abs_hum_aussen = dom.GetObject("CUxD.CUX9002001:1.ABS_HUMIDITY").State();

dom.GetObject("CUxD.CUX9002001:1.SET_TEMPERATURE").State(dom.GetObject(ID_SYSTEM_VARIABLES).Get("Keller_Temp").State());
dom.GetObject("CUxD.CUX9002001:1.SET_HUMIDITY").State(dom.GetObject(ID_SYSTEM_VARIABLES).Get("Keller_Feuchte").State());
var abs_hum_innen = dom.GetObject("CUxD.CUX9002001:1.ABS_HUMIDITY").State();

dom.GetObject(ID_SYSTEM_VARIABLES).Get("Telegram").State("aussen:"#abs_hum_aussen#" / innen:"#abs_hum_innen);

WriteLine(abs_hum_aussen);
WriteLine(abs_hum_innen);
Ich erhalte immer für beide Berechnungen den gleichen Wert. Ich vermute, das die Berechnung länger dauert, als das abfragen. Wie kann ich sicherstellen, das ich immer den neu berechneten Wert erhalte?

Das Device habe ich folgendermaßen angelegt:
Unbenannt.jpg
Unbenannt2.JPG

MichaelN
Beiträge: 1263
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 87 Mal
Danksagung erhalten: 130 Mal

Re: Wrapper-Device zur Berechnung abs. Feuchte nutzen

Beitrag von MichaelN » 15.05.2020, 20:55

ich habe es jetzt auf die brutale Art gelöst:

Code: Alles auswählen

var tmp = dom.GetObject("CUxD.CUX9002001:1.ABS_HUMIDITY").State();
dom.GetObject("CUxD.CUX9002001:1.SET_TEMPERATURE").State(Day0_avg);
dom.GetObject("CUxD.CUX9002001:1.SET_HUMIDITY").State(Day0_Humidity_avg);
var abs_hum_aussen = tmp;
while ( tmp == abs_hum_aussen )
	{ abs_hum_aussen = dom.GetObject("CUxD.CUX9002001:1.ABS_HUMIDITY").State();}
Mich würde aber trotzdem interessieren, ob es eleganter geht

stan23
Beiträge: 1264
Registriert: 13.12.2016, 21:14
System: Alternative CCU (auf Basis OCCU)
Wohnort: Altmühltal
Hat sich bedankt: 259 Mal
Danksagung erhalten: 131 Mal
Kontaktdaten:

Re: Wrapper-Device zur Berechnung abs. Feuchte nutzen

Beitrag von stan23 » 15.05.2020, 21:33

Mit der Schleife legst du leider die ReGa Skriptengine lahm.

Teile es doch in 2 Programme:
Im ersten schreibst du deine Werte in das CUx-Device.
Das zweite triggert auf ABS_HUMIDITY und schickt dann deine Nachricht los.
Viele Grüße
Marco

RaspberryMatic als VM auf einem NUC mit Proxmox und USB-Funkmodul
~80 Geräte (HM, HmIP, HMW, HBW, AskSin)

MichaelN
Beiträge: 1263
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 87 Mal
Danksagung erhalten: 130 Mal

Re: Wrapper-Device zur Berechnung abs. Feuchte nutzen

Beitrag von MichaelN » 15.05.2020, 21:38

Kann man im Skript auf die Änderung warten?

Ich brauche ja 2 Berechnungen, das wird mit triggern von Programmen etwas komplex

nicolas-eric
Beiträge: 3263
Registriert: 07.01.2015, 23:26
Wohnort: Scheeßel
Hat sich bedankt: 21 Mal
Danksagung erhalten: 9 Mal

Re: Wrapper-Device zur Berechnung abs. Feuchte nutzen

Beitrag von nicolas-eric » 15.05.2020, 22:23

Ich würde 1 Programm machen, in dem SOFORT ein Script gestartet wird, das die Werte in beiden Wrapper Devices setzt und dann noch ein Script, dass VERZÖGERT um X Sekunden die ABS Werte holt, vergleicht und bei Bedarf ne Nachricht schickt.

MichaelN
Beiträge: 1263
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 87 Mal
Danksagung erhalten: 130 Mal

Re: Wrapper-Device zur Berechnung abs. Feuchte nutzen

Beitrag von MichaelN » 15.05.2020, 22:28

2 wrapper device - ja, das wäre eine Lösung. Oder besser gesagt, eine andere Art des work around. Im cuxd Handbuch ist genau diese Anwendung ja beschrieben, ohne Hinweis darauf, dass der Wert erst nach 1 Sekunde bereit steht. Daher frage ich mich, ob ich noch irgendwas anderes machen muss.

nicolas-eric
Beiträge: 3263
Registriert: 07.01.2015, 23:26
Wohnort: Scheeßel
Hat sich bedankt: 21 Mal
Danksagung erhalten: 9 Mal

Re: Wrapper-Device zur Berechnung abs. Feuchte nutzen

Beitrag von nicolas-eric » 15.05.2020, 22:34

Wenn im Handbuch steht, dass das 1 Sekunde dauert, dann weisst Du ja schon, dass Du das X in meinem Post zuvor mindestens mit einer 2 ersetzen musst, um auf Nummer sicher zu gehen.

Das IST die Lösung.
Eine Pause im Script würde bewirken, dass die Script Engine in der Zeit für andere Scripts nicht ansprechbar ist. Andere Programme würden also nicht funktionieren wie gewollt zu dem Zeitpunkt, die CCU wäre quasi lahmgelegt.
Es gibt eine Grund, warum im Manual steht, man solle 2 solche Devices nehmen...

MichaelN
Beiträge: 1263
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 87 Mal
Danksagung erhalten: 130 Mal

Re: Wrapper-Device zur Berechnung abs. Feuchte nutzen

Beitrag von MichaelN » 15.05.2020, 22:35

Das steht so nicht im Handbuch, habe ich auch nicht so geschrieben.

MichaelN
Beiträge: 1263
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 87 Mal
Danksagung erhalten: 130 Mal

Re: Wrapper-Device zur Berechnung abs. Feuchte nutzen

Beitrag von MichaelN » 16.05.2020, 11:33

nicolas-eric hat geschrieben:
15.05.2020, 22:34
Es gibt eine Grund, warum im Manual steht, man solle 2 solche Devices nehmen...
Steht das da? Habe ich nicht gelesen. Wie auch immer, ich habe mal drüber geschlafen und die Lösung hat durchaus ihren Charme.
Jetzt habe ich ein Programmstruktur, die auch funktioniert, wenn ich wirklich mal einen echten Sensor dran hängen habe, der laufend Daten liefert. Meine ursprüngliche Lösung war auf eine einmalige Aktualisierung am Tag ausgerichtet.

Jetzt brauche ich nur irgendwann mal eine Lösung um einen Sensor im Keller anzubinden. Netzwerkkabel habe ich leider nicht legen lassen. Und Funk kann man da auch vergessen. Weder WLAN, noch 868 Mhz, noch Mobilfunk dringt darin vor. Auch Powerline bekommt keine stabile Verbindung.

Antworten

Zurück zu „CUxD“