[ gelöst ] Codehilfe

Begonnen von Michael, 03 April 2015, 17:24:25

Vorheriges Thema - Nächstes Thema

Michael

Moin

Könnte jemand mal diesen Code auf Richtigkeit Ansehen.

Der erste Teil "consumptionTotal:consumption ..." ist Orginal.

Im zweiten Teil "... , {if Waschmaschine:power > 3 ...." wollte ich einen Zähler einbauen der mir
ein Reading (waschladungen) um 1 erhöht wenn die power > 3 ist.

consumptionTotal:consumption monotonic {ReadingsVal($name,'consumption',0)}, {if Waschmaschine:power > 3 {fhem (setreading $name waschladungen {ReadingsVal("Waschmaschine","waschladungen",0)+1));;;; }}

Bin für jede Hilfe Dankbar.
Gruß, Michael

FHEM 6.0 auf RPi 3
CUL V3 868 Mhz | JeeLink LaCrosse & PCA301 | CCU3
BMP085(180) | 14x TX29DTH-IT | 5x PCA 301 | SMA Peripheries | MobileAlerts MA-10(100,120PRO,200,251,410,650,660,800) | HM IP

jensb

Du willst wahrscheinlich nur einmal pro Wäsche den Zähler hochzählen. Daher wird das so noch nicht reichen. Eine Möglichkeit wäre, sich die letzte power zu merken und als Bedingung if (ReadingsVal("Waschmaschine","letztePower", 0) <= 3 && ReadingsVal("Waschmaschine","power", 0) > 3) zu verwenden.

Anschließend muss man immer "power" nach "letztePower" umkopieren und wenn die Bedingung erfüllt ist auch "waschladungen" hochzählen. Dazu kann man "setreading" verwenden.

Jens
FHEM 6.1 - RPi 4 Raspbian 12 + PiTFT - OPi Zero Armbian 5.35
EnOcean - (W)LAN/Firmata: BMP180, TSL2561, SHT21, Heatronic 3, OBIS - WLAN/ESP8266: Gardena 1251, Zirkulationspumpe - RTL433: Oregon - Bluetooth - MQTT
Contributions: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/jensb

Michael

Hallo jensb

Vielen Dank für deine Antwort.

ZitatDu willst wahrscheinlich nur einmal pro Wäsche den Zähler hochzählen ...
Da hast du Recht, habe mich wohl weider mal falsch Ausgedrückt.  ::)

So ganz kann ich deinen Vorschlag noch nicht folgen.

Ich muss doch nur beim Reading "waschladungen" mit setreading einen dazu Zählen wenn power größer 3 oder?  :-[
Gruß, Michael

FHEM 6.0 auf RPi 3
CUL V3 868 Mhz | JeeLink LaCrosse & PCA301 | CCU3
BMP085(180) | 14x TX29DTH-IT | 5x PCA 301 | SMA Peripheries | MobileAlerts MA-10(100,120PRO,200,251,410,650,660,800) | HM IP

jensb

#3
Ja. Aber damit der Leistungsvergleich alt/neu funktioniert, muss "letztePower" immer aktualisiert werden (oder zumindest bis du hochzählst).

Was passiert eigentlich bei dir bei der nächsten Wäsche? "power" und "letztePower" müssen mit Waschbeginn jedesmal zurückgesetzt werden.

Jens
FHEM 6.1 - RPi 4 Raspbian 12 + PiTFT - OPi Zero Armbian 5.35
EnOcean - (W)LAN/Firmata: BMP180, TSL2561, SHT21, Heatronic 3, OBIS - WLAN/ESP8266: Gardena 1251, Zirkulationspumpe - RTL433: Oregon - Bluetooth - MQTT
Contributions: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/jensb

Michael

Moin

@jensb
Das ganze muss doch einfacher gehen.
Aber Dank dir für die Antworten.

Hier habe ich mal den gesamten Code:
define Waschmaschine PCA301 02C1FF 01
attr Waschmaschine IODev JL_PCA301
attr Waschmaschine devStateIcon on:Steckdose.on off:Steckdose.off
attr Waschmaschine event-on-change-reading power
attr Waschmaschine group 03 Waschmaschine
attr Waschmaschine room Technik
attr Waschmaschine sortby 2
attr Waschmaschine webCmd :

define Waschmaschine_Betrieb dummy
attr Waschmaschine_Betrieb devStateIcon on:waschmaschine_on off:waschmaschine_off
attr Waschmaschine_Betrieb event-on-change-reading state
attr Waschmaschine_Betrieb group 03 Waschmaschine
attr Waschmaschine_Betrieb room Technik
attr Waschmaschine_Betrieb sortby 1

define check_Waschmaschine DOIF ([Waschmaschine:power]>3) (set Waschmaschine_Betrieb on, setreading Waschmaschine waschladungen ReadingsVal("Waschmaschine","waschladungen",0)+1) DOELSEIF ([Waschmaschine:power]<3) (set Waschmaschine_Betrieb off,set FritzBox ring 612 30 News msg:Wäsche fertig )
attr check_Waschmaschine cmdState on|off
attr check_Waschmaschine devStateIcon no timer:timer.off timer:timer.on
attr check_Waschmaschine group check
attr check_Waschmaschine sortby 3
attr check_Waschmaschine wait 60:60


Habe jetzt Versucht das ganze im DOIF zu machen.
Macht aber noch nicht ganz das was ich will.
Bekomme jetzt folgenden "ReadingsVal("Waschmaschine","waschladungen",0)" Eintrag.

Der Fehler muss ja im DOIF sein, nur ich finde Ihn nicht.

Kann mir jemand dabei Helfen?  :-[
Gruß, Michael

FHEM 6.0 auf RPi 3
CUL V3 868 Mhz | JeeLink LaCrosse & PCA301 | CCU3
BMP085(180) | 14x TX29DTH-IT | 5x PCA 301 | SMA Peripheries | MobileAlerts MA-10(100,120PRO,200,251,410,650,660,800) | HM IP

Michael

Moin

Hat denn keiner die Möglichkeit da zu machen.  :-[
Gruß, Michael

FHEM 6.0 auf RPi 3
CUL V3 868 Mhz | JeeLink LaCrosse & PCA301 | CCU3
BMP085(180) | 14x TX29DTH-IT | 5x PCA 301 | SMA Peripheries | MobileAlerts MA-10(100,120PRO,200,251,410,650,660,800) | HM IP

jensb

Versuchs mal mit

([Waschmaschine_Betrieb] eq 'off' && [Waschmaschine:power]>3)

und

([Waschmaschine_Betrieb] eq 'on' && [Waschmaschine:power]<3)

als Bedingungen

Jens
FHEM 6.1 - RPi 4 Raspbian 12 + PiTFT - OPi Zero Armbian 5.35
EnOcean - (W)LAN/Firmata: BMP180, TSL2561, SHT21, Heatronic 3, OBIS - WLAN/ESP8266: Gardena 1251, Zirkulationspumpe - RTL433: Oregon - Bluetooth - MQTT
Contributions: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/jensb

Michael

Moin

@jensb
Nicht böse mit mir sein, ich denke  :o das ist der falsche Weg.
Denn das DOIF macht ja was es soll, nur nicht das Reading waschladungen herrauf setzen.

Der grüne Teil wird abgearbeitet, nur mit dem roten kommen ich nicht klar.
([Waschmaschine:power]>3) (set Waschmaschine_Betrieb on, setreading Waschmaschine waschladungen ReadingsVal("Waschmaschine","waschladungen",0)+1)
Gruß, Michael

FHEM 6.0 auf RPi 3
CUL V3 868 Mhz | JeeLink LaCrosse & PCA301 | CCU3
BMP085(180) | 14x TX29DTH-IT | 5x PCA 301 | SMA Peripheries | MobileAlerts MA-10(100,120PRO,200,251,410,650,660,800) | HM IP

Damian

Zitat von: Michael am 16 April 2015, 07:17:43
Moin

@jensb
Nicht böse mit mir sein, ich denke  :o das ist der falsche Weg.
Denn das DOIF macht ja was es soll, nur nicht das Reading waschladungen herrauf setzen.

Der grüne Teil wird abgearbeitet, nur mit dem roten kommen ich nicht klar.
([Waschmaschine:power]>3) (set Waschmaschine_Betrieb on, setreading Waschmaschine waschladungen ReadingsVal("Waschmaschine","waschladungen",0)+1)

dann eher so:

define check_Waschmaschine DOIF ([Waschmaschine:power]>3) (set Waschmaschine_Betrieb on, setreading Waschmaschine waschladungen {([Waschmaschine:waschladungen]+1)}) ...

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Michael

Vielen  Dank !!!  :)

Genau so hatte ich mir das Vorgestellt, diese Klammern.  ::)
Gruß, Michael

FHEM 6.0 auf RPi 3
CUL V3 868 Mhz | JeeLink LaCrosse & PCA301 | CCU3
BMP085(180) | 14x TX29DTH-IT | 5x PCA 301 | SMA Peripheries | MobileAlerts MA-10(100,120PRO,200,251,410,650,660,800) | HM IP