Statusanzeige eines dummy im Floorplan

Begonnen von Tino.Glatzel, 23 Dezember 2013, 21:47:49

Vorheriges Thema - Nächstes Thema

Tino.Glatzel

Hallo,

ich habe ein dummy im Floorplan mit den Optionen "ON" und "OFF" angelegt. Wenn ich nun das Device über die Schaltfläche an- bzw. ausschalte verändert sich ebenfalls die Anzeige im Floorplan. Hierfür habe ich auch die entsprechenden ...ON.. und ...OFF.. Dateien angelegt. Jetzt würde ich aber auch gerne sichtbar machen, ob das Schalten wirklich erfolgreich war. Hierzu habe ich die Datei ...FAIL.. für die Anzeige im Floorplan erzeugt.
Es scheint jedoch, dass das Dummy immer nur den ausgewählten Status aus dem Dropdown-Menü selbst anzeigt und nicht den Rückgabewert meines Makros.

Hier mal das Dummy:


define Zirkulation_Status dummy
attr Zirkulation_Status fp_Grundriss 187,492,2,Zirkulation
attr Zirkulation_Status setList state:ON,OFF
attr Zirkulation_Status webCmd state

define Zirkulation_Status_ON notify Zirkulation_Status:ON {\
fhem("trigger Zirkulation_ON");;\
}

define Zirkulation_Status_OFF notify Zirkulation_Status:OFF {\
fhem("trigger Zirkulation_OFF");;\
}

Hiermit spreche ich das 1-Wire Relais an:


define Zirkulation_ON notify Zirkulation_ON set TestRelais strobe 1;;set TestRelais PIO.ALL 0,1,0,0,0,0,1,1;;{ fhem("trigger perltest");; }


define Zirkulation_OFF notify Zirkulation_OFF set TestRelais strobe 1;;set TestRelais PIO.ALL 1,1,1,1,1,1,1,1;;{ fhem("trigger perltest");; }

und mit perltest frage ich den Status des Relais ab:

define perltest notify perltest {\
  my $device=$NAME;;\
  my $relais=" ";;\
  $relais=fhem("get TestRelais PIO.ALL");;\
  if ($relais eq "0,1,0,0,0,0,1,1") {\
  fhem("set Zirkulation_Status ON");;\
  } elsif ($relais eq "1,1,1,1,1,1,1,1") {\
  fhem("set Zirkulation_Status OFF");;\
  } else {\
  fhem("set Zirkulation_Status FAIL");;\
  };;\
}

Führe ich das "perltest" mit einem "trigger perltest" aus und die Relaisbaugruppe ist nicht angeschaltet, so wird der Status des Dummy-Device mit dem Status "FAIL" angezeigt. Somit scheint das Makro zu funktionieren.
Hat mir jemand einen Tipp wie ich die Sache anpacken kann?


Tino

UliM

Hi,
verstehe ich richtig: Zirkulation_Status hat den STATE "FAIL", im floorplan wird aberr noch das icon für on bzw off angezeigt?
Hast Du longpoll aktiviert? (attr WEB longpoll 1)  Nur dann werden icons aktualisiert, ohne dass im browser refresh-ed werden muss.

Falls ich was falsch verstanden habe, bitte mal die Abfolge der Schritte angeben (à la: 1. dummy hat Wert ON, in floorplan wird angezeigt icon für on, 2) set dummy FAIL, in flooplran wird angeiezgt....)

Gruß, Uli
RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

Tino.Glatzel

Hallo,

wenn das Dummy im Floorplan den Status ON anzeigt und ich wähle mit dem Dropdown-menü OFF aus, wird das Dummy auch mit dem Status OFF angezeigt. Das ist auch so, wenn das owfs-relais nicht am Bus hängt. Dies möchte ich ja mit dem Makro testen in dem ich nach dem setzen von PIO.ALL dieses auch noch einmal abfrage. Wenn in PIO.ALL keiner der gesuchten Werte drin ist, ist das Relais nicht mehr am Bus und ich möchte dann im Floorplan das Dummy mit dem Status FAIL anzeigen. Longpoll habe ich nicht aktiviert, aber auch ein refresch bringt nicht die gewünschte Anzeige. Erst wenn ich ein trigger perltest absetzen bekomme ich die Anzeige.
Setze ich wie beschrieben den Status auf OFF, obwohl kein Relais dran hängt ist auch der Status des Dummy in der Anzeige unter Everything auf OFF.


Tino

UliM

Hi,
es ist also nicht ein Problem der Anzeige, sondern dass der Wert FAIL auf dem dummy nicht gesetzt wird?
=8-)
RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

justme1968

vielleicht magst dir mal readingsProxy anschauen. damit kannst du dem dem 1-wire relais device ein proxy device vor setzen das direkt on und off kommandos kann und das pio reading direkt in einen state umwandeln kann den fhem dann ganz normal mit devStateIcon&co weiter verwenden kann.

du würdest dir alle dummys und trigger und notify sparen.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Tino.Glatzel

Hallo,

funktioniert das auch damit, dass ich bevor ich das Relais schalten will, den "strobe" auf 1 setzen muß ?

Tino

justme1968

du kannst im readingsProxy beliebigen code hinterlegen der dann beim set on oder off oder den kommandos die du definierst ausgeführt wird.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Tino.Glatzel

Hallo,

ok, dann versuche ich es jetzt mal mit dem readingsProxy. Leider habe ich im Wiki keine Beispiele gefunden. Deshalb hier noch einmal die Rückfrage.
In meinem Fall müsste ich dann die Sache ungefähr so definieren:

define TestRelais OWDevice 29.35A304000000

define Zirkulation_Status readingsProxy TestRelais:PIO.ALL
attr  Zirkulation_Status setFn { setzen von strobe;; setzen von PIO.ALL }
attr Zirkulation_Status valueFn {in "$VALUE" finde ich dann den aktuellen Wert von PIO.ALL nach dem setzen wovon ich den anzuzeigenden State abhängig machen kann ?}

Habe ich das so richtig verstanden?

Tino

justme1968

ja. genau so funktioniert es.

im wiki gibt es leider noch nichts. in dem thread hier: http://forum.fhem.de/index.php/topic,16374.0.html findest du zwei oder drei beispiele.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Tino.Glatzel

Hallo,

super - dann schau ich mal wie weit ich komme.

Vielen Dank für die Hilfe.

Tino