FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: tantor am 02 Februar 2015, 06:51:51

Titel: Fehler in der Funktion, aber wo?
Beitrag von: tantor am 02 Februar 2015, 06:51:51
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
Titel: Antw:Fehler in der Funktion, aber wo?
Beitrag von: Deudi am 02 Februar 2015, 07:14:01
Eine runde Klammer hinter "> 5" weg?
Titel: Antw:Fehler in der Funktion, aber wo?
Beitrag von: tantor am 02 Februar 2015, 11:50:13
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?
Titel: Antw:Fehler in der Funktion, aber wo?
Beitrag von: Deudi am 02 Februar 2015, 12:06:04
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"
Titel: Antw:Fehler in der Funktion, aber wo?
Beitrag von: betateilchen am 02 Februar 2015, 12:06:28
Was genau funktioniert denn nicht? Dein Coding aus dem ersten Beitrag funktioniert bei mir einwandfrei.

Titel: Antw:Fehler in der Funktion, aber wo?
Beitrag von: GrauesHaar am 02 Februar 2015, 12:07:20
Die 99 sind der Defaultwert, wenn Readings nicht zurueck gegeben hat.
Titel: Antw:Fehler in der Funktion, aber wo?
Beitrag von: Deudi am 02 Februar 2015, 12:10:16
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.
Titel: Antw:Fehler in der Funktion, aber wo?
Beitrag von: betateilchen am 02 Februar 2015, 12:22:15
was immer noch nicht die Frage beantwortet, was denn eigentlich nicht funktioniert...
Titel: Antw:Fehler in der Funktion, aber wo?
Beitrag von: Deudi am 02 Februar 2015, 12:25:52
Yep  8)
Titel: Antw:Fehler in der Funktion, aber wo?
Beitrag von: tantor am 02 Februar 2015, 15:41:46
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.
Titel: Antw:Fehler in der Funktion, aber wo?
Beitrag von: tantor am 02 Februar 2015, 17:38:48
Habe ich vielleicht bei meiner Dummy-Pumpe etwas falsch angegeben? Habe folgende Zeile geändert:
attr Pumpe devStateIcon on:off

Titel: Antw:Fehler in der Funktion, aber wo?
Beitrag von: Puschel74 am 02 Februar 2015, 17:42:18
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
Titel: Antw:Fehler in der Funktion, aber wo?
Beitrag von: tantor am 06 Februar 2015, 17:51:46
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! 
Titel: Antw:Fehler in der Funktion, aber wo?
Beitrag von: Otto123 am 06 Februar 2015, 18:06:10
Die ) + } steht falsch, denke ich:
{ if ( Value("Teichpumpe" eq "on") {fhem("set Pumpe on")}}
Titel: Antw:Fehler in der Funktion, aber wo?
Beitrag von: Puschel74 am 06 Februar 2015, 18:09:32
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
Titel: Antw:Fehler in der Funktion, aber wo?
Beitrag von: Otto123 am 06 Februar 2015, 18:15:00
Hallo,
Beim DOIF sind die Klammern noch wichtiger :)

Aber ich gebe für die eigentliche Aufgabe Puschel völlig Recht!

Gruß Otto
Titel: Antw:Fehler in der Funktion, aber wo?
Beitrag von: Puschel74 am 06 Februar 2015, 18:20:45
Hallo,

Zitat von: Otto123 am 06 Februar 2015, 18:15:00
Hallo,
Beim DOIF sind die Klammern noch wichtiger :)
Gruß Otto
Deswegen auch der Hinweis auf die deutsche commandref.
Das mein angepinnter Beitrag immer noch ignoriert wird (FEHM "spricht" mit einem in Form des Logfiles) stört mich mittlerweile nichtmehr.
Wobei FHEM auch "spricht" wenn man die fhem.cfg nicht beachtet und alles brav über die Befehlszeile und die jeweiligen DEF macht.
Aber jeder wie er will und wie es einem gefällt (und wenn man weiß worauf man achten muss).

Grüße