FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: fhainz am 01 Juni 2013, 19:14:04

Titel: Problem mit Toggle
Beitrag von: fhainz am 01 Juni 2013, 19:14:04
Hallo!

Bin gerade dabei mir einen "HomeStatus" zu basteln. Der Status soll nur on (Zuhause) off (Abwesend) sein. Dazu hab ich einen Taster an der Eingangstüre der an einem S8M Eingangsmodul hängt.
Wenn ich on / off von fhem sende klappt alles wunderbar. Wenn ich aber den Taster betätige passiert nix. Es wird ein toggle gesendet. Deswegen hab ich das attribut comment Untoggle gesetzt, hab gedacht das würde reichen aber leider nein. ;) Hier mal mein Code:

define ZuHause FS20 e41b c4
attr ZuHause alias Zu Hause
attr ZuHause comment Untoggle
attr ZuHause devStateIcon .*off:HOME_Status.0 .*on:HOME_Status.1
attr ZuHause model fs20s8m
attr ZuHause room Wohnung

define Anwesend notify ZuHause:on set wzTV,wzDeckenfluter on;;set S4M_1A1 on-for-timer 2
define Abwesend notify ZuHause:off set room=Wohnzimmer off;;set room=Schlafzimmer off


In den Detail ändert sich State, das Symbol passt sich auch immer an. Nur das notify wurde nicht ausgeführt.
Kann mir jemand weiterhelfen?

Grüße
Titel: Aw: Problem mit Toggle
Beitrag von: Zrrronggg! am 01 Juni 2013, 19:59:08
Ich habe noch nie Verstanden was dieses "untoggle" Attribute überhaupt macht. Es löst jedenfalls toggle Befehle nicht mystisch in "on" und "off" auf.

Der Sender sendet weiter toggle - wenn du nur eine Taste zum Umschalten nehmen willst geht das auch kaum anders - und daher werden diese hier:

define Anwesend notify ZuHause:on set wzTV,wzDeckenfluter on;;set S4M_1A1 on-for-timer 2
define Abwesend notify ZuHause:off set room=Wohnzimmer off;;set room=Schlafzimmer off


auch nicht getriggert.

Ich würde das so machen:
1. Aus ZuHause einen dummy machen und den S8M Schalter umbennen, etwa in ZuHauseTaster
2. Mit dem Taster befüllst du jetzt das dummy "ZuHause":

define ZuHauseTaster_auswerten notify ZuHause {if (Value("ZuHause") eq "on" { fhem("set ZuHause off") } else { fhem("set ZuHause on") } }



Deinen Code

define Anwesend notify ZuHause:on set wzTV,wzDeckenfluter on;;set S4M_1A1 on-for-timer 2
define Abwesend notify ZuHause:off set room=Wohnzimmer off;;set room=Schlafzimmer off


kannst dann weiterverwenden.

Dann kannst du mit einem Taster des S8M immer zwischen anwesend und abwesend hin und her schalten.
Titel: Aw: Problem mit Toggle
Beitrag von: fhainz am 01 Juni 2013, 20:34:29
Hallo Zrrronggg!

Danke für deine Erklärung das bringt mich schon ein bisschen weiter.

Den S8M kann/will ich nicht umbenennen da noch andere Eingänge da rauf kommen. Ich hab einen Dummy ZuHausD angelegt und versucht dein Script umzusetzen. Aber leider wird noch nichtmal der dummy geschaltet. Anscheinend hab ich's doch noch nicht ganz geknissen ;) Könntest du nochmal auf meinen Code schauen?

define ZuHause FS20 e41b c4
attr ZuHause alias Zu Hause
attr ZuHause comment Untoggle
attr ZuHause devStateIcon .*off:HOME_Status.0 .*on:HOME_Status.1
attr ZuHause model fs20s8m
attr ZuHause room Wohnung

define ZuHauseD dummy
attr ZuHauseD room Wohnung

define ZuHauseTaster_auswerten notify ZuHauseD {if (Value("ZuHauseD") eq "on" { fhem("set ZuHauseD off") } else { fhem("set ZuHauseD on") } }
define Anwesend notify ZuHauseD:on set wzTV,wzDeckenfluter on;;set S4M_1A1 on-for-timer 2
define Abwesend notify ZuHauseD:off set room=Wohnzimmer off;;set room=Schlafzimmer off
Titel: Aw: Problem mit Toggle
Beitrag von: Puschel74 am 01 Juni 2013, 20:54:04
Hallo,

hier
define ZuHauseTaster_auswerten notify ZuHauseD {if (Value("ZuHauseD") eq "on" { fhem("set ZuHauseD off") } else { fhem("set ZuHauseD on") } }

würde ich drauf tippen das das notify nicht anschlägt da du den Dummy auswerten willst und nicht den Taster.

define ZuHauseTaster_auswerten notify ZuHause {if (Value("ZuHauseD") eq "on" { fhem("set ZuHauseD off") } else { fhem("set ZuHauseD on") } }
dürfte eher passen.

Grüße
Titel: Aw: Problem mit Toggle
Beitrag von: fhainz am 01 Juni 2013, 21:12:06
Das hab ich vorher schon versucht. Hat leider aucht nicht geklappt.
Titel: Aw: Problem mit Toggle
Beitrag von: Zrrronggg! am 01 Juni 2013, 22:17:41
Zitatwürde ich drauf tippen das das notify nicht anschlägt da du den Dummy auswerten willst und nicht den Taster.

Exact.

ZitatDas hab ich vorher schon versucht. Hat leider aucht nicht geklappt.

Moment, ich sehe es mir noch mal an.

Ah, Klammer vergessen, sorry:


define ZuHauseTaster_auswerten notify ZuHause {if (Value("ZuHauseD") eq "on") { fhem("set ZuHauseD off") } else { fhem("set ZuHauseD on") } }
define Anwesend notify ZuHauseD:on set wzTV,wzDeckenfluter on;;set S4M_1A1 on-for-timer 2
define Abwesend notify ZuHauseD:off set room=Wohnzimmer off;;set room=Schlafzimmer off


So sollte es gehen.
Tipp: Offene Klammern in komplexeren Sachen ruhig mal durchzählen. Jede öffnende eines Typs +1, jede schliessende -1.  Am Ende darf nix übrig bleiben   ;-)

In meinen ersten (fehlerhaften) Schnellschuss
define ZuHauseTaster_auswerten notify ZuHause {if (Value("ZuHause") eq "on" { fhem("set ZuHause off") } else { fhem("set ZuHause on") } }
wird die normale "(" Klammer  4x aufgemacht, aber nur 3x zu... das kann schon nicht gehen. Das sollte aber im Logfile auch Fehlemeldungen geworfen haben.

Titel: Aw: Problem mit Toggle
Beitrag von: fhainz am 01 Juni 2013, 23:14:49
Ah die Klammer. Auf das hätte ich selber auch kommen können. Jetzt funktionierts!
Danke!!!
Titel: Aw: Problem mit Toggle
Beitrag von: Zrrronggg! am 01 Juni 2013, 23:57:00
u r fellkamm