FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: traxanos am 26 Juli 2015, 17:53:21

Titel: [gelöst] DOIF mit Berechnung im Set
Beitrag von: traxanos am 26 Juli 2015, 17:53:21
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

)


Titel: Antw:DOIF mit Berechnung im Set
Beitrag von: igami am 26 Juli 2015, 17:58:40
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
Titel: Antw:DOIF mit Berechnung im Set
Beitrag von: traxanos am 26 Juli 2015, 18:08:09
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...
Titel: Antw:DOIF mit Berechnung im Set
Beitrag von: igami am 27 Juli 2015, 06:13:45
Also funktioniert nun alles?

Dann bitte die vollständige Lösung posten und ein "gelöst" vor den Thread Titel schreiben.
Titel: Antw:DOIF mit Berechnung im Set
Beitrag von: traxanos am 27 Juli 2015, 08:28:30
Bin noch am testen und optimieren. Sobald alles fertig ist, mache ich einen neuen Beitrag unter CodeSchnipsel auf inkl. Anleitung etc.