FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: MichlB am 19 Mai 2016, 16:07:00

Titel: DOIF mit OldValue für Pumpensteuerung
Beitrag von: MichlB am 19 Mai 2016, 16:07:00
Hallo

Ich versuche krampfhaft ein DOIF mit einem OldValue und Value vergleich zu erstellen bekomme aber immer nur fehler...
Ziel: vergleiche den Alten wert eines Sensors mit dem Neuen Wert, ist der neue Höher, dann schalte

mein Ansatz:
(({OldValue("DS18B20_FF68DE641501:temperature")} < {Value("DS18B20_FF68DE641501:temperature")}) set B0 on

irgendwie steig ich durch die Pearl Syntax nicht durch...
tja programmieren will wohl gelernt sein.

oder vielleicht hat jemand eine bessere Idee?
Mein Boiler ist der Pufferspeicher meiner Zentralheizung, schaltet die Gastherme ein und heitzt, soll sich die Boilerpumpe einschalten, wenn Therme sich ausschaltet soll die Pumpe noch Zeit x weiterlaufen und sich dann abdrehen. wenn jedoch ein Mischer wärmebedarf hat, soll sie sich wieder einschalten, bis dieser wieder schließt....


Titel: Antw:DOIF mit OldValue für Pumpensteuerung
Beitrag von: igami am 19 Mai 2016, 16:16:17
Zitat von: Michl1003! am 19 Mai 2016, 16:07:00
bekomme aber immer nur fehler...
Was denn für welche?
Titel: Antw:DOIF mit OldValue für Pumpensteuerung
Beitrag von: CoolTux am 19 Mai 2016, 16:17:25
https://forum.fhem.de/index.php?topic=13378.0
Titel: Antw:DOIF mit OldValue für Pumpensteuerung
Beitrag von: MichlB am 19 Mai 2016, 16:23:33
hallo
meistens bekomm ich


di_BoilerVL DOIF: no right bracket: (({OldValue("DS18B20_FF68DE641501:temperature")} < {Value("DS18B20_FF68DE641501:temperature")}) set B0 on
Titel: Antw:DOIF mit OldValue für Pumpensteuerung
Beitrag von: CoolTux am 19 Mai 2016, 16:30:41
Schaue Dir bitte noch mal die Syntax von DOIF an.
Titel: Antw:DOIF mit OldValue für Pumpensteuerung
Beitrag von: igami am 19 Mai 2016, 16:43:26
Zitat von: Michl1003! am 19 Mai 2016, 16:23:33
hallo
meistens bekomm ich


di_BoilerVL DOIF: no right bracket: (({OldValue("DS18B20_FF68DE641501:temperature")} < {Value("DS18B20_FF68DE641501:temperature")}) set B0 on

Dann solltest du mal die Klammern zählen ;)
Und den Hinweis von CoolTux befolgen
Titel: Antw:DOIF mit OldValue für Pumpensteuerung
Beitrag von: pc1246 am 19 Mai 2016, 16:48:24
Und eventuell auch gleich ueber das Ausschalten nachdenken, sonst ist das gleich die naechste Frage!
Gruss Christoph
Titel: Antw:DOIF mit OldValue für Pumpensteuerung
Beitrag von: MichlB am 19 Mai 2016, 20:39:24
hi
danke für den Klammer-Tipp, habs soweit hinbekommen, aber jetzt hab ich die Situation, dass ich nicht weiß ob das mit den Werten des Sensors funktinioert...

define NotfallDI DOIF (["DS18B20_FF68DE641501:temperature"] > "40") (set NOTFALL on) DOELSE (set NOTFALL off)

für die Pumpensteuerung hätt ichs mit

define di_BoilerVL DOIF ([DS18B20_FF68DE641501:?])(setreading di_BoilerVL temperature [DS18B20_FF68DE641501:temperature])

versucht...

Titel: Antw:DOIF mit OldValue für Pumpensteuerung
Beitrag von: igami am 19 Mai 2016, 20:43:35
> ist vergleicht Zahlen mit " machst du aus einer Zahl einen Text, wird zu weiteren Fehlermeldungen führen.

Wie hängen die Codes die du jetzt gepostet hast mit dem ursprünglichen Vorhaben zusammen?
Da ging es ja um eine Differenz. Diese könntest du auch mit userReadings um dem Modifikator difference berechnen und im DOIF dann prüfen ob das userReadings negativ ist.

Grüße
igami
Titel: Antw:DOIF mit OldValue für Pumpensteuerung
Beitrag von: MichlB am 19 Mai 2016, 21:59:03
oh sorry, hab den falschen erwischt, aber irgendwie funkt das sowieso nicht so recht...
und jetzt blick ich mich grad nicht mehr durch... muß morgen noch mal mit klarem kopf das thema angehen...
ich hab generell das problem, dass ich nicht so recht die werte von irgendwas auslesen kann... ich versteh das ganze mit den Syntax nicht so recht..
was ist der Unterschied zwischen [], () und {}
wann muss man ein " setzen...?


also mein letzter versuch hat auch nicht mehr geklappt...

define di_BoilerPumpe DOIF {OldValue("DS18B20_FF68DE641501:temperature") < Value("DS18B20_FF68DE641501:temperature")} set B0 on


Titel: Antw:DOIF mit OldValue für Pumpensteuerung
Beitrag von: igami am 19 Mai 2016, 22:28:03
Bei DOIF kommt man gut ohne Perl {} aus. Die Readings werden in [] angegeben und Blöcke in ().
Einfach noch mal die deutsche Commandref zu DOIF lesen.