FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: Fhemeinsteiger am 28 September 2018, 15:37:18

Titel: Mischersteuerung problem
Beitrag von: Fhemeinsteiger am 28 September 2018, 15:37:18
Hallo,
jetzt komme ich doch nicht mehr weiter und brauche eure Hilfe.
Ich möchte eine Mischersteuerung bauen,bekomme aber die Fehlermeldung im log:

2018-09-28 15:27:15 DOIF Mischersteuerung error: 0-29: Unknown command 0-29, try help.  < 0 and off eq "on": Unknown command <, try help

#Mischersteuerung
define Mischersteuerung DOIF (([Vorlauf_soll]-[Vorlauf:temperature]) > 2 and [Heizungspumpe] eq "on") (set Mischer_auf on-for-timer 10) ## Cmd 1: Schnell oeffnen \
DOELSEIF\
    (([Vorlauf_soll]-[Vorlauf:temperature]) > 1 and [Heizungspumpe] eq "on") (set Mischer_auf on-for-timer 5) ## Cmd 2: Ganz langsam oeffnen \
DOELSEIF\
   (([Vorlauf_soll]-[Vorlauf:temperature]) > 0.5 and [Heizungspumpe] eq "on") (set Mischer_auf on-for-timer 1) ## Cmd 3: Noch ein bisschen \
DOELSEIF\
   (([Vorlauf_soll]-[Vorlauf:temperature]) > 0 and [Heizungspumpe] eq "on") (set Mischer_auf off) ## Cmd 4: Mischer aus \
DOELSEIF\
   (([Vorlauf_soll]-[Vorlauf:temperature]) < 2 and [Heizungspumpe] eq "on") (set Mischer_zu on-for-timer 10) ## Cmd 5: schnell schließen \
DOELSEIF\
   (([Vorlauf_soll]-[Vorlauf:temperature]) < -1 and [Heizungspumpe] eq "on") (set Mischer_zu on-for-timer 5) ## Cmd 6: Ganz langsam schließen \
DOELSEIF\
   (([Vorlauf_soll]-[Vorlauf:temperature]) < -0.5 and [Heizungspumpe] eq "on") (set Mischer_zu on-for-timer 1) ## Cmd 7: Noch ein bisschen \
DOELSE\
   (([Vorlauf_soll]-[Vorlauf:temperature]) < 0 and [Heizungspumpe] eq "on") (set Mischer_zu off) ## Cmd 8: Mischer aus\

attr Mischersteuerung cmdpause 20:20:20:20:20:20:20:20
attr Mischersteuerung do always


wobei immo Vorlauf soll = 0 ist.

Vorlauf_soll
define Vorlauf_soll dummy

define Berechnung_Vorlauf_soll DOIF ([Aussentmp:temperature] >= -25 and [Aussentmp:temperature] < -10 and [Heizung] eq "on") (set Vorlauf_soll 65) \
DOELSEIF\
([Aussentmp:temperature] >= -10 and [Aussentmp:temperature] < -5 and [Heizung] eq "on") (set Vorlauf_soll 62)\
DOELSEIF\
([Aussentmp:temperature] >= -5 and [Aussentmp:temperature] < 0 and [Heizung] eq "on") (set Vorlauf_soll 60)\
DOELSEIF\
([Aussentmp:temperature] >= 0 and [Aussentmp:temperature] < 5 and [Heizung] eq "on") (set Vorlauf_soll 55)\
DOELSEIF\
([Aussentmp:temperature] >= 5 and [Aussentmp:temperature] < 10 and [Heizung] eq "on") (set Vorlauf_soll 50)\
DOELSEIF\
([Aussentmp:temperature] >= 10 and [Aussentmp:temperature] < 15 and [Heizung] eq "on") (set Vorlauf_soll 40)\
DOELSEIF\
([Aussentmp:temperature] >= 15 and [Aussentmp:temperature] < 20 and [Heizung] eq "on") (set Vorlauf_soll 30)\
DOELSEIF\
([Aussentmp:temperature] >= 20 and [Aussentmp:temperature] < 25 and [Heizung] eq "on") (set Vorlauf_soll 25)\
DOELSE\
(set Vorlauf_soll 0)
attr berechnung_Vorlauf_soll do allways


Fehlermeldung im log:
2018.09.28 15:21:24 2: Mischersteuerung: 0-29: Unknown command 0-29, try help.
2018.09.28 15:21:24 2: Mischersteuerung:  < 0 and off eq "on": Unknown command <, try help.
2018.09.28 15:22:15 2: Mischersteuerung: 0-29: Unknown command 0-29, try help.
2018.09.28 15:22:15 2: Mischersteuerung:  < 0 and off eq "on": Unknown command <, try help.
2018.09.28 15:24:45 2: Mischersteuerung: 0-29: Unknown command 0-29, try help.
2018.09.28 15:24:45 2: Mischersteuerung:  < 0 and off eq "on": Unknown command <, try help.
2018.09.28 15:27:15 2: Mischersteuerung: 0-29: Unknown command 0-29, try help.
2018.09.28 15:27:15 2: Mischersteuerung:  < 0 and off eq "on": Unknown command <, try help.
2018.09.28 15:29:45 2: Mischersteuerung: 0-29: Unknown command 0-29, try help.
2018.09.28 15:29:45 2: Mischersteuerung:  < 0 and off eq "on": Unknown command <, try help.


könnt ihr mir helfen?
Titel: Antw:Mischersteuerung problem
Beitrag von: amenomade am 28 September 2018, 16:41:16
DOELSE\
   (([Vorlauf_soll]-[Vorlauf:temperature]) < 0 and [Heizungspumpe] eq "on") (set Mischer_zu off) ## Cmd 8: Mischer aus\


Keine Bedingung nach DOELSE! DOELSE = sonst in allen anderen Fällen
Titel: Antw:Mischersteuerung problem
Beitrag von: Fhemeinsteiger am 29 September 2018, 12:19:35
Ja,
Danke, Prima,
das scheint es gewesen zu sein.
Ich werde es beobachten

fhemeinsteiger
Titel: Antw:Mischersteuerung problem
Beitrag von: Per am 01 Oktober 2018, 13:17:20
Ein paar Anmerkungen:
- bitte die Reihenfolge der Abfragen überprüfen! x < 2 ist immer "eher" wahr als x < -1. Wahrscheinlich soll das aber -2 heißen.
- ([Vorlauf_soll]-[Vorlauf:temperature]) kannst du in ein DOIF_Reading auslagern. Senkt die Last und erleichtert die Fehlersuche.
- die Vorlauftemp wird bestimmt nur interessant, wenn die Heizungspumpe an ist. Damit könntest du es aus dem DOIF ganz rausnehmen.
- wie hoch ist Vorlauf_soll, wenn es außen unter -25 ° Celsius ist? Viel Spass, wenn du deiner Frau erklären musst, warum es so kalt in der Bude ist!
- DOIF wird der Reihe nach abgearbeitet und bricht nach dem ersten Zutreffen ab. Damit kannst du zu
define Berechnung_Vorlauf_soll DOIF ([Aussentmp:temperature] < -10 and [Heizung] eq "on") (set Vorlauf_soll 65) \
DOELSEIF\
([Aussentmp:temperature] < -5 and [Heizung] eq "on") (set Vorlauf_soll 62)\
DOELSEIF\
([Aussentmp:temperature] < 0 and [Heizung] eq "on") (set Vorlauf_soll 60)\
...

vereinfachen.
Und auch hier: brauchst du [Heizung] eq "on" wirklich?
Titel: Antw:Mischersteuerung problem
Beitrag von: abc2006 am 23 Oktober 2018, 19:54:10
Ich möchte dir ans Herz legen, eine Heizkurve zu verwenden. Das vereinfacht das ganze, weil du vorne einen Wert reingibst (die Aussentemperatur) und hinten einen Wert herausbekommst (die Vorlauf_soll_temperatur). Das ganze kannst du dann mit einem PID auf den Mischer umsetzen.
Zusammen mit einem Hydraulischen Abgleich bekommst du eine erstaunlich selbstständig laufende Heizung, ohne dauernd temperaturen hoch und runterdrehen zu müssen.

Grüße,
Stephan
Titel: Antw:Mischersteuerung problem
Beitrag von: Fhemeinsteiger am 29 November 2018, 19:05:38
Danke euch beiden für die Unterstützung,
@abc2006:
Mit der Heizkurve ist sicherlich eine gute Idee, da muss ich mich erst dolle einlesen..


@Per:
mit dem Vorlauf soll hast du natürlich Recht, das werde ich so umsetzen. Danke
Zitat- ([Vorlauf_soll]-[Vorlauf:temperature]) kannst du in ein DOIF_Reading auslagern. Senkt die Last und erleichtert die Fehlersuche.
mit dem Auslagern- würde ich doch gerne in Angriff nehmen, allerdings begreife ich DOIF Reading auslagern nicht und habe keine Ahnung...

fhemeinsteiger
Titel: Antw:Mischersteuerung problem
Beitrag von: abc2006 am 29 November 2018, 20:27:56
https://fhem.de/commandref_DE.html#DOIF_DOIF_Readings

Da steht eigentlich alles.

attr <DOIF-Modul> DOIF_Readings <readingname1>:<definiton>, <readingname2>:<definition>,...

Zusammen mit

Zitat([Vorlauf_soll]-[Vorlauf:temperature])

hast du doch eigtl alles, was du dafür brauchst...
Titel: Antw:Mischersteuerung problem
Beitrag von: Fhemeinsteiger am 30 November 2018, 12:16:03
Ja Prima Danke,
habs warscheinlich so hinbekommen mit
Zitatattr Mischersteuerung DOIF_Readings diff:([Vorlauf_soll]-[Vorlauf:temperature])
und natürlich im DOIF mit
Zitat[$SELF:diff]
ersetzt.
Zumindest sind keine Fehler im log.
Da lasse ich es so mal laufen.

fhemeinsteiger
Titel: Antw:Mischersteuerung problem
Beitrag von: abc2006 am 30 November 2018, 12:35:08
Was mir direkt auffällt, ist die unterschiedliche schreibweise von

[Vorlauf:temperature]
und
[Vorlauf_soll].

Prüfe nochmal, ob es nicht doch besser [Vorlauf_soll:temperature] heissen sollte ...
Wenn du z.b. stateFormat benutzt, könnte das kritisch werden.

Und wenn wir grade beim optimieren sind, würd ich noch ein :d hinten dran setzen. Macht (in deinem Fall) wahrscheinlich keinen Unterschied.
Falls du aber irgendwann mal auf die Idee kommst, deine Temperaturen mit "°C" zu erweitern, funktioniert die Berechnung dann immer noch ..

Grüße,
Stephan
Titel: Antw:Mischersteuerung problem
Beitrag von: Fhemeinsteiger am 30 November 2018, 12:51:55
ZitatWas mir direkt auffällt, ist die unterschiedliche schreibweise von

[Vorlauf:temperature]
und
[Vorlauf_soll].

Prüfe nochmal, ob es nicht doch besser [Vorlauf_soll:temperature] heissen sollte ...
Wenn du z.b. stateFormat benutzt, könnte das kritisch werden.

Das hatte ich am Anfang so stehen.
Aber im log wurden Fehler gemeldet.
Weil die Vorlauf_soll von einem DOIF erzeugt wird und nicht von einem Sensor, hab ich es dann so probiert und hat funktioniert.

Mit dem :d meintest du Mischersteuerung DOIF_Readings diff:([Vorlauf_soll]-[Vorlauf:temperature]):d ?
Titel: Antw:Mischersteuerung problem
Beitrag von: abc2006 am 30 November 2018, 13:59:34
Zitat von: Fhemeinsteiger am 30 November 2018, 12:51:55
Mit dem :d meintest du Mischersteuerung DOIF_Readings diff:([Vorlauf_soll]-[Vorlauf:temperature]):d ?

Nein, ich meine so:
https://fhem.de/commandref_DE.html#DOIF_Filtern_nach_Zahlen


ZitatWeil die Vorlauf_soll von einem DOIF erzeugt wird und nicht von einem Sensor,

Evtl hast du da noch Potential...
Wenn du ein Doif hast, was einen Wert erzeugen soll, bsp

DF_berechne_meine_vorlauftemperatur

dann kannst du in dem Doif deine Berechnungen machen und mit

setreading $SELF vlsoll <ergebnis der Berechnung>
ein  Reading im Doif setzen. Dann sparst du dir den (von mir geraten) dummy

Und dann kannst du im DOIF_Reading schreiben

Mischersteuerung DOIF_Readings diff:([DF_berechne_meine_vorlauftemperatur:vlsoll]-[Vorlauf:temperature])

Wie gesagt, spart einen Dummy ...

Grüße,
Stephan
Titel: Antw:Mischersteuerung problem
Beitrag von: Fhemeinsteiger am 30 November 2018, 14:08:30
Oh je,
jetzt wird es (für mich) kompliziert.
Ich glaube mit einem dummy mehr kann ich leben.

Danke für deine Anregungen und Tipps.
Die haben mir schon sehr geholfen.
fhemeinsteiger
Titel: Antw:Mischersteuerung problem
Beitrag von: abc2006 am 30 November 2018, 14:49:55
Alles klar. Trotzdem würd ich dir raten, es zu versuchen und zu verstehen. Das macht es später deutlich übersichtlicher...

Grüße,
Stephan
Titel: Antw:Mischersteuerung problem
Beitrag von: Carsten1981 am 09 Dezember 2018, 15:39:31
Das kommt mir doch sehr bekannt vor😎....
https://forum.fhem.de/index.php/topic,81461.msg735591.html#msg735591

Was hat dich dazu bewogen die VL-soll Temperatur nicht über eine Heizkurve zu berechnen?
Hast du das mit dem DoIf reading hinbekommen? Finde das sehr intersannt und man hat es komprimierter ubd ich würde mir viele Dummys sparen.
Habe ich das mit dem :d richtif verstanden das ich Werte direkt im Device formatieren kann (z.B. Grad C) und mir das dann in der readings group sparen kann und die berechnungen trotzdem funktionieren?

Gruß Carsten
Titel: Antw:Mischersteuerung problem
Beitrag von: Deckoffizier am 11 Dezember 2018, 21:27:28
Hallo,

weil ich gerade am ähnlichen Thema dran bin mal eine vereinfachte im
Netz gefundene Formel für die Heizkurve man findet sicherlich mehr Varianten die
ich zur Probe mal ausprobiert habe.
Kommt fast genau mit dem Diagramm des Kesselschaltfeldes hin.
Könnte man in ein userReading packen.

ZitatHeizkurve
Formel : Y = Y1 + ( X - X1 ) * (( Y2 - Y1 ) / ( X2 - X1 ))

DAR = (Außentemperatur - RTSoll)

VTSoll = RTSoll + Niveau - Neigung * DAR * (1,4347 + 0,021 * DAR + 247,9 * 0,000001 * DAR*DAR)
          22        5        1,6      -20                     -20                        400


                                           (   1,11386                      )

= 62,64352

Gruß
Hans-Jürgen