Fehler in der Funktion, aber wo?

Begonnen von tantor, 02 Februar 2015, 06:51:51

Vorheriges Thema - Nächstes Thema

tantor

Warum bekomme ich diese Funktion nicht simuliert in Betrieb genommen. 1x Dummy-Schalter ; 1x Dummy-Pumpe und eine 1Wire-Temperatur als Komponenten.
Wäre schön, wenn mir jemand meinen Fehler aufzeigt. Notepad++ findet kein Programmierfehler.

define Teichpumpe dummy
attr Teichpumpe room Gartenhaus
attr Teichpumpe setList state:on,off
attr Teichpumpe webCmd state

# Simulation Teichpumpe
define Pumpe dummy
attr Pumpe devStateIcon on:rc_GREEN:off:rc_RED:
attr Pumpe room Gartenhaus
define Pumpe_AN at *{sunrise()} { if ( Value("Teichpumpe") eq "on" && ReadingsVal("SWT_Wassertemperatur","temperature",99) > 5) { fhem("set Pumpe on") } else { fhem("set Pumpe off") } }
attr Pumpe_AN room Gartenhaus
FHEM mit CUL V3.4 an Raspberry Pi 3
CUL V 1.67 CUL868; nanoCUL V1.66 433MHz; 1Wire USB-Adapter 2480B
8x HM-CC-RT-DN Fw 1.3; 9x HM-LC-Bl1PBU-FM Fw2.3
11x DS1820 2xDS2408

Deudi

Eine runde Klammer hinter "> 5" weg?
Gigabyte Brix, Ubuntu 16.04.3 LTS, Homematic, Z-Wave, EnOcean, Shelly@MQTT, SIGNALduino, JeeLink DAVIS-Sketch

tantor

Leider liegt es an der Klammer auch nicht. Kann es sein, dass die Definition der 1Wire Temperatur vielleicht falsch ist("SWT_Wassertemperatur","temperature",99). wofür steht die 99?
FHEM mit CUL V3.4 an Raspberry Pi 3
CUL V 1.67 CUL868; nanoCUL V1.66 433MHz; 1Wire USB-Adapter 2480B
8x HM-CC-RT-DN Fw 1.3; 9x HM-LC-Bl1PBU-FM Fw2.3
11x DS1820 2xDS2408

Deudi

ZitatKann es sein, dass die Definition der 1Wire Temperatur vielleicht falsch ist("SWT_Wassertemperatur","temperature",99). wofür steht die 99?

Häh? Ich denke das ist dein Code. Kennst du deine Sensoren nicht?
Wenn du uns mal die Fehlermeldung verrätst, geht es vielleicht schneller.

Die 99 ist der Wert, der zurückgegeben wird, falls es das Reading nicht gibt.
2. Versuch: Pack die 99 auch mal in Anführungzeichen: "99"
Gigabyte Brix, Ubuntu 16.04.3 LTS, Homematic, Z-Wave, EnOcean, Shelly@MQTT, SIGNALduino, JeeLink DAVIS-Sketch

betateilchen

Was genau funktioniert denn nicht? Dein Coding aus dem ersten Beitrag funktioniert bei mir einwandfrei.

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

GrauesHaar

Die 99 sind der Defaultwert, wenn Readings nicht zurueck gegeben hat.

Deudi

Zitat von: betateilchen am 02 Februar 2015, 12:06:28
Dein Coding aus dem ersten Beitrag funktioniert bei mir einwandfrei.

... die zweite Klammer hat er ja auch zur Verwirrung anderer zwischenzeitlich gelöscht.
Gigabyte Brix, Ubuntu 16.04.3 LTS, Homematic, Z-Wave, EnOcean, Shelly@MQTT, SIGNALduino, JeeLink DAVIS-Sketch

betateilchen

was immer noch nicht die Frage beantwortet, was denn eigentlich nicht funktioniert...
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Deudi

Gigabyte Brix, Ubuntu 16.04.3 LTS, Homematic, Z-Wave, EnOcean, Shelly@MQTT, SIGNALduino, JeeLink DAVIS-Sketch

tantor

Sorry, die Klammer hat sich irgendwie beim kopieren da rein gemogelt. Der Status der Pumpe ändert sich nicht von "on" nach "off" und umgekehrt, egal ob Dummy-Schalter "Teichpumpe" oder Temperaturwert geändert wird.
FHEM mit CUL V3.4 an Raspberry Pi 3
CUL V 1.67 CUL868; nanoCUL V1.66 433MHz; 1Wire USB-Adapter 2480B
8x HM-CC-RT-DN Fw 1.3; 9x HM-LC-Bl1PBU-FM Fw2.3
11x DS1820 2xDS2408

tantor

Habe ich vielleicht bei meiner Dummy-Pumpe etwas falsch angegeben? Habe folgende Zeile geändert:
attr Pumpe devStateIcon on:off

FHEM mit CUL V3.4 an Raspberry Pi 3
CUL V 1.67 CUL868; nanoCUL V1.66 433MHz; 1Wire USB-Adapter 2480B
8x HM-CC-RT-DN Fw 1.3; 9x HM-LC-Bl1PBU-FM Fw2.3
11x DS1820 2xDS2408

Puschel74

Hallo,

du hast ein at definiert das auf sunrise "hört".
DANN erst wird geprüft ob deine Teichpumpe on ist UND die Wassertemperatur > 5 °C ist.
Was die Teichpumpe oder die Temperatur vor oder nach sunrise macht interessiert das at nicht.
Wenn du auf die Teichpumpe oder die Temperatur triggern willst musst du ein notify nehmen.

Einfachst FHEM-Grundlagen die eigentlich auch im Einsteiger.pdf erklärt sind - oder zumindest in der commandref.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

tantor

Habe mal etwas rum probiert und leider immer noch keine Lösung für mein Problem. Folgende Funktion klappt:

define Teichpumpe dummy
attr Teichpumpe room Gartenhaus
attr Teichpumpe setList state:on,off
attr Teichpumpe webCmd state
# Simulationslampe Teichpumpe
define Pumpe dummy
attr Pumpe devStateIcon on:rc_GREEN:off:rc_RED:
attr Pumpe room Gartenhaus
# define Pumpe_AN notify Teichpumpe:on set Pumpe on
attr Pumpe_AN room Gartenhaus
define Pumpe_AUS notify Teichpumpe:off set Pumpe off
attr Pumpe_AUS room Gartenhaus

aber folgende leider nicht und ich bin der Meinung, dass es das gleiche beinhaltet:

...
define Pumpe_AN notify Teichpumpe { if ( Value("Teichpumpe") eq "on"} {fhem("set Pumpe on")}
attr Pumpe_AN room Gartenhaus
define Pumpe_AUS notify Teichpumpe:off set Pumpe off
attr Pumpe_AUS room Gartenhaus

Grundsätzlich möchte ich bei Sonnenaufgang, Wassertemperatur >5°C und Teichpumpe "on" die Pumpe laufen lassen.
Jedoch mache ich ja bei der einfachen Funktion schon etwas falsch.
Wäre schön, wenn mir jemand helfen könnte.

Danke! 
FHEM mit CUL V3.4 an Raspberry Pi 3
CUL V 1.67 CUL868; nanoCUL V1.66 433MHz; 1Wire USB-Adapter 2480B
8x HM-CC-RT-DN Fw 1.3; 9x HM-LC-Bl1PBU-FM Fw2.3
11x DS1820 2xDS2408

Otto123

Die ) + } steht falsch, denke ich:
{ if ( Value("Teichpumpe" eq "on") {fhem("set Pumpe on")}}
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Puschel74

Hallo,

ZitatGrundsätzlich möchte ich bei Sonnenaufgang, Wassertemperatur >5°C und Teichpumpe "on" die Pumpe laufen lassen.
Dann wäre DOIF das richtige für dich.

Warum?
Sonnenaufgang lässt sich per at aber nicht per notify triggern (doch aber nicht so einfach - Macro wäre dann die Möglichkeit).
Temperatur und Teichpumpe lässt sich per notify aber nicht per at triggern.
DOIF vereint das alles und es gibt sogar eine deutsche commandref dazu in der Damian das wirklich gut beschrieben hat.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.