Hauptmenü

Floorplan Symbol für ECMDDevice

Begonnen von Netior, 09 Februar 2013, 16:31:10

Vorheriges Thema - Nächstes Thema

Netior

Hallo UliM

In FHEMWEB:
Wenn das Icon aus ist, kann man es einschalten. Wenn es ein ist aber nicht mehr aus.
D.h. Icon off -> drücke Icon -> Icon on (Aktor schaltet ein)
        Icon on -> drücke Icon -> Icon on (keine Aktion)

mfg
Netior

Tom_S

Genau so verhält es sich bei mir auch. So wie ich es oben beschrieben habe (save config) ist nicht ganz richtig.
Ich schalte ein paar Devices ein, und mache dann ein "shutdown restart". Alle Symbole die zu diesem Zeitpunkt an waren lassen sich jetzt aus- und auch wieder einschalten. Allerdings nur ein mal.

mfg Tom_S
RaspberryPI2 + pilight, 3x AVR-NetIO, LW12, LW12HX, LW12FC; MAX-Lan, ESP8266, Arduino, H801, Neopixel, Solaredge, Modbus

rudolfkoenig

Die FHEMWEB on/off Logik erzeugt in off Befehl, falls STATE auf on steht, sonst ein on.
Dabei wird fuer on/off die eventMap uebersetzung beruecksichtigt.
D.h. fuer die weitere Pruefung waere wichtig zu wissen, was in STATE steht.

Tom_S

Ich habe mal die Seite von einem Device angehängt. Da steht "on" drin wenn es an ist, sonst off


(siehe Anhang / see attachement)


mfg
RaspberryPI2 + pilight, 3x AVR-NetIO, LW12, LW12HX, LW12FC; MAX-Lan, ESP8266, Arduino, H801, Neopixel, Solaredge, Modbus

rudolfkoenig

Ist longpoll aktiv? Kann es sein, dass das Geraet kurzfristig andere Zustaende hat (set_on, etc)?
Letzteres kriegt man mit "inform timer" oder dem Event Monitor raus.

Netior


Hallo Rudolf

Der Event Manager zeigt folgendes:

2013-04-19 17:48:56 structure sz_LichtAlle off
2013-04-19 17:48:56 ECMDDevice sz_UNTERBETTBEL off:

Komisch das bei structure am ende kein ":" steht. Bei den ECMDDevices schon. Könnte das ein Problem sein?

mfg

Netior

rudolfkoenig

Ja, fuer das automatische toggle muss es on bzw. off sein, ohne Zusatz. Aber mit devStateIcon kann man es auch fuer on/off: einfach selbst stricken.

Netior

Hallo nochmals

Wo schleicht sich denn der ":" ein?
Es wäre doch super wenn der gar nicht erst kommt, so dass sich ECMDDevices genau wie die anderen benutzen lassen?
Log sagt folgendes...
2013.04.19 18:54:56 5: Cmd: >set sz_UNTERBETTBEL on<
2013.04.19 18:54:56 5: ...
2013.04.19 18:54:56 5: Postprocessing OK with perl command {""}.
2013.04.19 18:54:56 5: Triggering sz_UNTERBETTBEL (1 changes)
2013.04.19 18:54:56 5: Notify loop for sz_UNTERBETTBEL on:
2013.04.19 18:54:56 5: ...
2013.04.19 18:54:56 4: ECMDDevice sz_UNTERBETTBEL on

Warum ist beim Notify loop wieder der ":" am Ende, in der letzten Zeile nicht. Ich sehs nicht ein...

Tom_S

Ich glaube auch das der Doppelpunkt das Problem ist

bei ECMD sagt der Eventmonitor
2013-04-19 19:11:40 ECMDDevice FunkschalterA1 on:
2013-04-19 19:11:50 ECMDDevice FunkschalterA1 off:

beim Dummy nur
2013-04-19 19:12:05 dummy UbuntuTV off
2013-04-19 19:12:07 dummy UbuntuTV on

longpoll ist nicht aktiv

mfg
RaspberryPI2 + pilight, 3x AVR-NetIO, LW12, LW12HX, LW12FC; MAX-Lan, ESP8266, Arduino, H801, Neopixel, Solaredge, Modbus

Netior


Hallo

Hab noch ein bisschen getestet...

Ich möchte lediglich die simple Funktion das ich über das Icon die Beleuchtung ein und ausschalten kann. Kriege es aber nicht hin.

Config ist folgende:
define sz_UNTERBETTBEL ECMDDevice RFM12ASK 243 1
attr sz_UNTERBETTBEL room Schlafzimmer
attr sz_UNTERBETTBEL devStateIcon on:on:off off:off:on
attr sz_UNTERBETTBEL eventMap off:off on:on

- Wenn ich auf on oder off neben dem Icon klicke klappt alles einwandfrei. Es wird geschaltet und Icon wechselt.
- Wenn das Gerät on war, und ich fhem.cfg speichere, kann ich das Gerät über das Icon ausschalten und wieder einschalten. Dann aber nicht mehr ausschalten. Genau wie von Tom_S beschrieben.

Habe mal in der ECMDDevice.pm geschaut ob sich da ein : einschleicht, habe aber nichts gefunden. Und in State steht wirklich nur off und on.

Hat jemand noch eine Idee woran das liegen könnte, rsp wo ich noch suchen kann? Oder gibt es einen Workaround?
Wäre sehr sehr dankbar für tipps.

Gruss

Netior

rudolfkoenig

Falls die Events on: bzw.off: sind (mit Doppelpunkt), dann sollte das Attribut eher

attr sz_UNTERBETTBEL devStateIcon on.*:on:off off.*:off:on

sein.

Tom_S

ganz klar, so geht es natürlich. Man muß es halt für jedes Device festlegen.
Mich würde noch interesieren wo das "on:" "off:" her kommt. Von ethersex kommt ja nur ein "Ok" zürück.
Ohne postproc also "on: Ok"
Die postproc aus dem Wiki
> set on postproc {set on postproc {s/([OK|;]*)/success/; "$_" eq "success" ? "ok" : "error";}
bewirkt erstmal nichts. Ändert man "OK" in "Ok"
wird das "Ok" durch "success" ersetzt und in der Variable gespeichert, die dann "error" ausgiebt
wenn "$_" eq "success" (soweit ich das verstanden habe).
Wenn man "on" mit "error" tauscht
> set on postproc {s/([Ok|;]*)/success/; "$_" eq "success" ? "error" : "on";}
wir dann "ok: ok" zurück gegeben. Ob das in einer älteren Version mal funktioniert hat, kann ich nicht sagen. Durch "set on postproc {s/([Ok|;]*)/success/; "$_" eq "success" ? "error" : "";}" bleibt dann das "on:"
Müsste vom Modul kommen oder?

mfg
RaspberryPI2 + pilight, 3x AVR-NetIO, LW12, LW12HX, LW12FC; MAX-Lan, ESP8266, Arduino, H801, Neopixel, Solaredge, Modbus

Tom_S

hallo noch mal. Meine Perl Kentnisse beschränken sich leider auf "Selfhtml"
Ich habe in der 67_ECMDDevice.pm folgendes geändert

Ab Zeile 130
  if($postproc) {
        my %specials= ECMDDevice_DeviceParams2Specials($hash);
        my $command= EvalSpecials($postproc, %specials);
   $_= $value;
   Log 5, "Postprocessing $value with perl command $command.";
   $value= AnalyzePerlCommand(undef, $command);
  }

ersetzt durch

   $value= AnalyzePerlCommand(undef, "");

Damit ist das Problem behoben. Ob das so Ok ist weis ich nicht.

mfg
RaspberryPI2 + pilight, 3x AVR-NetIO, LW12, LW12HX, LW12FC; MAX-Lan, ESP8266, Arduino, H801, Neopixel, Solaredge, Modbus

Netior

Hallo Tom_S

Hast du noch einen postproc in der classdef? Wenn ja, welchen?
Benutzt du auch webCmd oder arbeitest du ohne?

D.h. du kannst jetzt direkt auf das icon klicken zum ein- und ausschalten?

mfg

Netior

Tom_S

nutze keine webcmd
postproc ist wie beschrieben
set on postproc {s/([Ok|;]*)/success/; "$_" eq "success" ? "error" : "";}

Ja, Icon wechselt den Status
Eventmonitor sagt on und off
Und auch die Statusabfrage in einem Notify geht jetzt

Vieleicht schaut ja noch mal einer der Ahnung hat drüber.

mfg
RaspberryPI2 + pilight, 3x AVR-NetIO, LW12, LW12HX, LW12FC; MAX-Lan, ESP8266, Arduino, H801, Neopixel, Solaredge, Modbus