[gelöst] DOIF mit Berechnung im Set

Begonnen von traxanos, 26 Juli 2015, 17:53:21

Vorheriges Thema - Nächstes Thema

traxanos

Hi

ich arbeite an einem DOIF für einen Waschmaschinenstatus welches auch eine Differenzberechnung durchführen soll.

Zuerst habe ich versucht eigenen Perlcode mit {} zu verwenden. Dann habe ich aber immer solche Fehler bekommen:

2015.07.26 17:18:08 2: Programm.Waschmaschine.Status: {  setReading("Waschmaschine.Status", "preEngery", 123);  fhem("set Waschmaschine.Status on");}: Unknown command {, try help.
Unknown command fhem("set, try help.
Unknown command }, try help.


Das Problem jetzt ohne {} hinbekommen.

  set Waschmaschine.Status on,
  setreading Waschmaschine.Status preEnergy [Waschmaschine.Status:energy]


Aber jetzt will ich die Differenzberechnung durch führen.

Hab schon mehrere Schreibweisen versucht aber es will nicht wie ich will. Das war mein letzter Versuch mit und ohne {}

setreading Waschmaschine.Status lastEnergy ([Waschmaschine.Status:energy]-[Waschmaschine.Status:preEnergy])

Daher die Frage, wie kann ich eine Berechnung durchführen. Ich möchte eine extra Method in myUtils gerne vermeiden.

Hier das komplette DOIF:

([Waschmaschine.Status:power] < 1) (
 
  set Waschmaschine.Status off,
  setreading Waschmaschine.Status preEnergy 0

) DOELSEIF ([Waschmaschine.Status:power] >= 1 and [Waschmaschine.Status:state] eq 'off') (

  set Waschmaschine.Status on,
  setreading Waschmaschine.Status preEnergy [Waschmaschine.Status:energy]

) DOELSEIF ([Waschmaschine.Status:power] < 3 and [Waschmaschine.Status:state] eq 'running') (

  set Waschmaschine.Status done,
  setreading Waschmaschine.Status lastEnergy ([Waschmaschine.Status:energy]-[Waschmaschine.Status:preEnergy])

) DOELSE (

  set Waschmaschine.Status running

)


Im Einsatz:
FHEM: Latest auf RPi2
HM: vCCU, HMLAN, HMUSB2, HM-CC-RD-DN, HM-TC-IT-WM-W-EU, HM-SEC-SC-2, HM-ES-PMWs1-Pl, HM-LC-Sw1PBU-FM, HM-PB-2-WM55-2, HM-RC-8, HM-BP-6-WM55
CUL: ESA2000, Intertechno

igami

Zitat von: commandref

Berechnungen im Ausführungsteil

Berechnungen können in geschweiften Klammern erfolgen. Aus Kompatibilitätsgründen, muss die Berechnung mit einer runden Klammer beginnen. Innerhalb der Perlberechnung können Readings, Stati oder Internals wie gewohnt in eckigen Klammern angegeben werden.

Anwendungsbeispiel: Es soll ein Vorgabewert aus zwei verschiedenen Readings ermittelt werden und an das set Kommando übergeben werden:

define di_average DOIF ([08:00]) (set TH_Modul desired {([default:temperature]+[outdoor:temperature])/2})
attr di_average do always

Grüße
igami
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

traxanos

jetzt ärgere ich mich, da ich die commandref danach durchsucht habe und auch die Schreibweise mit {()} aus einem anderen Beitrag versucht habe. Ergebnis war das der Ausdruck {(ZAHL - ZAHL)} komplett im Reading stand. Aber jetzt geht es...

Dennoch danke...
Im Einsatz:
FHEM: Latest auf RPi2
HM: vCCU, HMLAN, HMUSB2, HM-CC-RD-DN, HM-TC-IT-WM-W-EU, HM-SEC-SC-2, HM-ES-PMWs1-Pl, HM-LC-Sw1PBU-FM, HM-PB-2-WM55-2, HM-RC-8, HM-BP-6-WM55
CUL: ESA2000, Intertechno

igami

Also funktioniert nun alles?

Dann bitte die vollständige Lösung posten und ein "gelöst" vor den Thread Titel schreiben.
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

traxanos

Bin noch am testen und optimieren. Sobald alles fertig ist, mache ich einen neuen Beitrag unter CodeSchnipsel auf inkl. Anleitung etc.
Im Einsatz:
FHEM: Latest auf RPi2
HM: vCCU, HMLAN, HMUSB2, HM-CC-RD-DN, HM-TC-IT-WM-W-EU, HM-SEC-SC-2, HM-ES-PMWs1-Pl, HM-LC-Sw1PBU-FM, HM-PB-2-WM55-2, HM-RC-8, HM-BP-6-WM55
CUL: ESA2000, Intertechno