komplexe IF Anweisung

Begonnen von Jochen Auer, 05 Januar 2014, 11:25:52

Vorheriges Thema - Nächstes Thema

Jochen Auer

Guten morgen alle zusammen!

ich habe eine Problem, mein Ziel ist es eine Nachtabsenkung zu schreiben die ich in mehreren Schritten erarbeite

1. Fester Wert Nachtabsenkung an auf 16°C, Nachtabsenkung aus 23°C funktioniertNachtabsenkung { if ("%" eq "on") {fhem("set Heizungsstellantrieb desired-temp 17")}else{fhem("set Heizungsstellantrieb desired-temp 23")}}

2. Fester Wert Nachtabsenkung an auf 16°C, Nachtabsenkung aus Wert von Sollwertgeben nehmen.

Hier entsteht dann mein Problem wie kann ich einen Variablenwert (Temperatur:setpointScald) in die If anweisung einfügen
Mein Ansatz sah so aus

Nachtabsenkung { if ("%" eq "on") {fhem("set Heizungsstellantrieb desired-temp 17")}else{fhem("set Heizungsstellantrieb desired-temp { ReadingsVal("Temperatur","setpointScaled",0)} ")}}

Geht das überhabt oder bin ich schon na an der Lösung?

Damian

Zitat von: Jochen Auer am 05 Januar 2014, 11:25:52
Nachtabsenkung { if ("%" eq "on") {fhem("set Heizungsstellantrieb desired-temp 17")}else{fhem("set Heizungsstellantrieb desired-temp { ReadingsVal("Temperatur","setpointScaled",0)} ")}}
Geht das überhabt oder bin ich schon na an der Lösung?

nein, aber du bist schon nah dran  ;):

Nachtabsenkung { if ("%" eq "on") {fhem("set Heizungsstellantrieb desired-temp 17")}else{fhem("set Heizungsstellantrieb desired-temp ".{ReadingsVal("Temperatur","setpointScaled",0)})}}

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Jochen Auer

Hallo Damian,

danke für die hilfe, leider geht es noch nicht!
Für was steht der . vor dem Befehl {ReadingsVal....?

Ich denke mir es ist nur noch eine kleinigkeit das es noch nicht funkioniert  >:(

Damian

Mit dem Punkt werden Zeichenketten aneinander gehängt (in der Fachsprache "Konkatenation" genannt).

Dann schreibe in der Kommando-Zeile:

{fhem("set Heizungsstellantrieb desired-temp ".{ReadingsVal("Temperatur","setpointScaled",0)})}

dann weißt du, ob dieser Teil wenigsten funktioniert.

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Jochen Auer

hab die Lösung gefunden
die geschweifte Klammer {} um ReadingsVal weggemacht und es funktioniert!

Nachtabsenkung { if ("%" eq "on") {fhem("set Heizungsstellantrieb desired-temp 17")}else{fhem("set Heizungsstellantrieb desired-temp ".ReadingsVal("Temperatur","setpointScaled",15))}}

Jetzt hab ich aber noch eine Frage bezüglich der IF-Anweisung.
Wird die Anweisung nur einmal ausgeführt wenn sich die Nachtabsenkung änderet?
Weil das wäre schlecht kann man das ändern?


Damian

Zitat von: Jochen Auer am 06 Januar 2014, 13:55:42
Jetzt hab ich aber noch eine Frage bezüglich der IF-Anweisung.
Wird die Anweisung nur einmal ausgeführt wenn sich die Nachtabsenkung änderet?
Weil das wäre schlecht kann man das ändern?

Was ist denn überhaupt Nachtabsenkung?

Deine if-Abfrage macht nur in Kombination mit anderen Befehlen Sinn.

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Jochen Auer

Die Nachtabsenkung soll über ein Zeitprogramm gesetz werden, um die Raumtemperatur in der Nacht zu reduzieren.
Jetzt hab ich aber gelesen das ein notify nur abgearbeitet wird bei einer Änderung der Bedingung.
Da sich die Nachtabsenkung nur einmal z.B. um 22 Uhr auf AN setzt und um 6 Uhr auf AUS wird nur dann der Wert übernommen.
Das Problem dabei ist am Tag kommt der Wert über einen Sollwertgeber (Temperatur:setpointscaled), dieser Wert kann ich den ganzen Tag ändern, deshalb sollte ich die Bedingung immer abgefragt haben ca. alle 2-5 Min.