[gelöst] Berechnungsfehler bei Negativer Aussentemperatur

Begonnen von Carsten1981, 18 November 2017, 16:02:01

Vorheriges Thema - Nächstes Thema

Carsten1981

Hallo zusammen,

Ich habe folgendes DOIF, mit dem ich die Vorlaufsoll Temperatur meiner Fußbodenheizung berechne. Das hat bis vor zwei Nächten auch super funktioniert, bis der erst Frost gekommen ist.

{fhem("set Vorlauf_soll ".((([Dummy_Fusspunkt_Aussentemperatur]-[Aussentemperatur:temperature])*[Dummy_Steigung])+[Dummy_Fusspunkt_Vorlauftemperatur])) }

Hatte dann als die Aussentemperatur negativ wurde Folgenden Fehler im Log

berechnung_Vorlauf_soll: {fhem("set Heizungs_Dummy ".(((15.0--0.062)*0.3)+23.0)) }: Can't modify constant item in postdecrement (--) at (eval 216677) line 1, near "15.0--"
syntax error at (eval 216677) line 1, near "--0.062"


Als erstes habe dem Sensor ein Offset eingestellt, das es zu keinen negativen Werten mehr kommt, und die Werte der Dummys entsprechend wieder angepasst das die Vorlauf Temperatur jetzt wieder stimmt.

Funktioniert, aber schön ist anders  >:(

Vielleicht hat ja jemand mehr Ahnung von Perl als ich....
Gruß Carsten
fhem 5.8 CUL 433, 8x DS18B20, 8fach 230V Relais
benachrichtigungen über Telegram, Steuerung Solar- und Kaminpumpe, Steuerung Somfy Rollos, Lichtsteuerung über Intertechno, Steuerung Heizungspumpe und Mischer Fußbodenheizung

Ellert

Versuche mal statt

[Dummy_Fusspunkt_Aussentemperatur]-[Aussentemperatur:temperature]

[Dummy_Fusspunkt_Aussentemperatur]-1*[Aussentemperatur:temperature]

Carsten1981

 :D

Hab es gerade auf dem Testsystem ausprobiert, und es scheint perfekt zu funktionieren. Vielen Dank für die Hilfe.

Was mich nur interessieren würde, wieso funktioniert es? Ob ich die negatvie Aussentemperatur abziehe oder sie vorher mit 1 multipliziere........

Danke
fhem 5.8 CUL 433, 8x DS18B20, 8fach 230V Relais
benachrichtigungen über Telegram, Steuerung Solar- und Kaminpumpe, Steuerung Somfy Rollos, Lichtsteuerung über Intertechno, Steuerung Heizungspumpe und Mischer Fußbodenheizung

Damian

Zitat von: Carsten1981 am 18 November 2017, 18:58:34
:D

Hab es gerade auf dem Testsystem ausprobiert, und es scheint perfekt zu funktionieren. Vielen Dank für die Hilfe.

Was mich nur interessieren würde, wieso funktioniert es? Ob ich die negatvie Aussentemperatur abziehe oder sie vorher mit 1 multipliziere........

Danke

1--1 geht in Perl nicht,  1-1*-1 wohl

1-(-1) hätte es auch getan, also: [Dummy_Fusspunkt_Aussentemperatur]-([Aussentemperatur:temperature])
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Carsten1981

fhem 5.8 CUL 433, 8x DS18B20, 8fach 230V Relais
benachrichtigungen über Telegram, Steuerung Solar- und Kaminpumpe, Steuerung Somfy Rollos, Lichtsteuerung über Intertechno, Steuerung Heizungspumpe und Mischer Fußbodenheizung

Per


Damian

Zitat von: Per am 20 November 2017, 12:56:51
Sollten nicht auch Leerzeichen reichen?
1 - -1

ja, allerdings wird vermutlich:

[Dummy_Fusspunkt_Aussentemperatur]-[Aussentemperatur:temperature]

nicht viel kritischer für den User aussehen, als:

[Dummy_Fusspunkt_Aussentemperatur] - [Aussentemperatur:temperature]

DOIF ersetzt im Ausführungsteil die Reading-Angaben gegen Inhalte. Eine elegantere Lösung wäre, wenn DOIF im Perlteil die Reading-Angaben gegen entsprechende Perlfunktionen ersetzen würde, wie in der Bedienung. Das Problem ist allerdings die saubere Erkennung, was im Ausführungsteil Perl ist und was nicht.

Das wurde im DOIF UI anders gelöst, dort wird konsequent nur in Perlfunktionen übersetzt, damit ist die Sache Perl-kompatibler.



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