[gelöst] setList, eventMap - Reading in Dummy übernehmen

Begonnen von drhirn, 19 Oktober 2015, 19:22:42

Vorheriges Thema - Nächstes Thema

drhirn

Hi,

mein Plan ist wie folgt:
Ich hätte gerne ein Device (Dummy), der in FHEMWEB und Floorplan mittels "on" und "off" geschaltet werden kann. Der Status soll dann aber nicht "on" und "off" sein, sondern "POWER" und "POWEROFF". Letzteres würde ich gerne via Notify an einen anderen Dummy schicken.

Ich hab jetzt mal den Dummy TV angelegt:

define TV dummy
attr TV setList POWER POWEROFF
attr TV eventMap POWER:on POWEROFF:off


Das sieht mal ganz gut aus. Schalte ich den Dummy aus, hat er den STATE "off" und das Reading "POWEROFF".

Dann habe ich noch ein Dummy dTest. Und der soll eben den Wert "POWEROFF" und nicht "off" bekommen.

Dazu habe ich ein Notify
define nTest notify TV set dTest $EVENT

So wird mir aber naheliegenderweise "off" an den Dummy dTest gesendet.

Wie bekomme ich's hin, dass $EVENT den Wert "POWEROFF" annimmt?

Danke!
Stefan

Sunny

Moin Stefan,

schaue Dir Dein eventMap nochmal genauer an.
(<alter Name>:<neuer Name>)  ;)

Viele Grüße
Sunny
FHEM 6.0 (RPi's 1b-4,CeleronM,Odroid C1+)
1-Wire (DS18B20,DS2406) |miniCUL|miniCUL868WLAN|HM|IT(-1500,LR-3500) |FB6591,FB7490,FB7580|DECT200|Powerline546E|520E|openwrt
Anfänger: Linux,FHEM+Perl

drhirn

Hi Sunny,

ich kann leider nicht ganz folgen.

Hab die Funktionalität inzwischen über ein DOIF gelöst. Es täte mich aber trotzdem interessieren, was im eventMap anders gehört hätte.

Danke
Stefan

marvin78

Er hat es doch geschrieben. Die Reihenfolge solltest du dir ansehen.

Sunny

Moin Stefan,
Zitat von: Sunny am 20 Oktober 2015, 00:14:11
... Dein eventMap nochmal ...
(<alter Name>:<neuer Name>)
<alter Name> <=> Standard FHEM Wert <=> bei Dir entweder "off" / "on"
<neuer Name> <=> eigener Wert <=> ...  ;)

Hoffe ich konnte es Dir jetzt verständlich "machen".

Viele Grüße
Sunny
FHEM 6.0 (RPi's 1b-4,CeleronM,Odroid C1+)
1-Wire (DS18B20,DS2406) |miniCUL|miniCUL868WLAN|HM|IT(-1500,LR-3500) |FB6591,FB7490,FB7580|DECT200|Powerline546E|520E|openwrt
Anfänger: Linux,FHEM+Perl

drhirn

Aso. Ja, eh. Dann muss ich setList ja auch umdrehen.


attr TV setList on off
attr TV eventMap on:POWER off:POWEROFF


Dann heißt's aber eben in FHEMWEB und Floorplan auch "POWER" und "POWEROFF". Dort soll aber trotzdem "on" und "off" stehen.

Oder steh ich jetzt noch fester auf der Leitung, als ich glaube?

Ich stellte allerdings gerade fest, dass es wunderbar funktioniert, wenn ich statt setList webCmd verwende. Was mich jetzt vollkommen irritiert.

Sunny

Moin Stefan,

Zitat von: drhirn am 20 Oktober 2015, 11:18:16
Aso. Ja, eh. Dann muss ich setList ja auch umdrehen.


attr TV setList on off
attr TV eventMap on:POWER off:POWEROFF


Oder steh ich jetzt noch fester auf der Leitung, als ich glaube?

Ich stellte allerdings gerade fest, dass es wunderbar funktioniert, wenn ich statt setList webCmd verwende. Was mich jetzt vollkommen irritiert.
Schubs von der Leitung:
Nein Du must nicht setlist umstellen, damit etablierst Du ja die neuen Befehle... ;)

Gib es eine gute Doku Commandref

Viele Grüße
Sunny
FHEM 6.0 (RPi's 1b-4,CeleronM,Odroid C1+)
1-Wire (DS18B20,DS2406) |miniCUL|miniCUL868WLAN|HM|IT(-1500,LR-3500) |FB6591,FB7490,FB7580|DECT200|Powerline546E|520E|openwrt
Anfänger: Linux,FHEM+Perl

drhirn

Hmm, so gut find ich die Doku gar nicht ;)

Ok, Code bitte. Ich glaub, anders wird das nichts.

Laut aktuellem Stand wären wir ja grad bei

attr TV setList POWER POWEROFF
eventMap on:POWER off:POWEROFF

und das kann nicht gehen ;)

Danke!

marvin78

#8
Die Doku ist sogar fantastisch gut.

Warum sollte das nicht gehen? Es ist bloß nicht das richtige für deinen Anwendungsfall (dummy).

Ich würde die Sache im notify regeln.


drhirn

Zitat von: marvin78 am 20 Oktober 2015, 11:42:51
Warum sollte das nicht gehen? Es ist bloß nicht das richtige für deinen Anwendungsfall (dummy).

Ich würde die Sache im notify regeln.

Lustig, im Wiki steht: "Dieses Attribut existiert nur bei dummy- und readingsProxy-Devices."

Was wäre das Richtige für meinen Anwendungsfall? Außer meine DOIF-Lösung?

marvin78

Ich meinte mit dem (dummy) in meinen Post nicht allgemein den dummy, sondern deine Problemstellung.

Das was du vor hast, wird in der Form nicht gehen. Hilfreich wäre eine Erklärung, warum du das genau so machen möchtest. Bei mir würde das ohne großes Kopfzerbrechen einfach so aussehen (auch wenn ich so etwas nie machen würde):

define NOTIFYNAME notify dummy1 {
  fhem("set dummy2 POWERON") if ($EVENT eq "on");
   fhem("set dummy2 POWEROFF") if ($EVENT eq "off");
}


Man kann auch noch mit userReadings arbeiten oder andere Dinge machen. Aber ohne den genauen Grund für sowas zu kennen, fallen Ratschläge schwer.

drhirn

Ich kann meinen TV nur via Infrarot steuern. Habe deshalb einen Raspberry mit LIRC u. Web-API zu einer IR-Fernbedienung umgebaut.
In FHEM hätte ich jetzt einfach gerne ein "Device" TV, dass ich "on" und "off" schalten kann. Der Befehl, der dann via curl zum Raspi geht, muss aber "POWER" und "POWEROFF" (statt "on" + "off") heißen.

marvin78

Und wofür brauchst du da 2 dummys? Das notify oben macht genau das, was du willst. Du musst nur noch den curl Befehl einbauen.

drhirn

Zwei? Hab eh nur einen!?

Und ja, das notify macht genau das, was ich möchte. Danke dafür!
Mein DOIF auch.

Es ging ja eigentlich nicht mehr um die Lösung für die Funktionalität, sondern um's Verstehen von eventMap und setList.

marvin78

Zitat von: drhirn am 20 Oktober 2015, 14:47:44
Zwei? Hab eh nur einen!?

Zitat von: drhirn am 19 Oktober 2015, 19:22:42
Letzteres würde ich gerne via Notify an einen anderen Dummy schicken.

...

Zitat von: drhirn am 20 Oktober 2015, 14:47:44
Es ging ja eigentlich nicht mehr um die Lösung für die Funktionalität, sondern um's Verstehen von eventMap und setList.

Das hast du nicht gesagt. Infos dazu findet man aber in der commandref (besser kann ich es gar nicht ausdrücken).

setList ist für dummys. Diese haben keine, durch das Modul vorgegebene setList, wie es in anderen Modulen der Fall ist. Über setList kannst du diese für jeden einzelnen dummy selbst bestimmen.

eventMap "übersetzt" ein event eines Devices in ein anderes. So kannst du z.B. dein Frontend übersetzen.