Hauptmenü

Mischersteuerung problem

Begonnen von Fhemeinsteiger, 28 September 2018, 15:37:18

Vorheriges Thema - Nächstes Thema

Fhemeinsteiger

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?

amenomade

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
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Fhemeinsteiger

Ja,
Danke, Prima,
das scheint es gewesen zu sein.
Ich werde es beobachten

fhemeinsteiger

Per

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?

abc2006

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
FHEM nightly auf Intel Atom (lubuntu) mit VDSL 50000 ;-)
Nutze zur Zeit OneWire und KNX

Fhemeinsteiger

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

abc2006

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...
FHEM nightly auf Intel Atom (lubuntu) mit VDSL 50000 ;-)
Nutze zur Zeit OneWire und KNX

Fhemeinsteiger

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

abc2006

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
FHEM nightly auf Intel Atom (lubuntu) mit VDSL 50000 ;-)
Nutze zur Zeit OneWire und KNX

Fhemeinsteiger

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 ?

abc2006

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
FHEM nightly auf Intel Atom (lubuntu) mit VDSL 50000 ;-)
Nutze zur Zeit OneWire und KNX

Fhemeinsteiger

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

abc2006

Alles klar. Trotzdem würd ich dir raten, es zu versuchen und zu verstehen. Das macht es später deutlich übersichtlicher...

Grüße,
Stephan
FHEM nightly auf Intel Atom (lubuntu) mit VDSL 50000 ;-)
Nutze zur Zeit OneWire und KNX

Carsten1981

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
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

Deckoffizier

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
FHEM 5.8 auf "yakkaroo Emu A1FL.1" mit CUL 868MHz, SIGNALduino,2 1Wire USB Busmaster, diverse 1 Wire Sensoren,Landroid,Aeotec USB Dongle Z-Wave Plus