95_remotecontrol.pm - Eigene Taste+set Befehl

Begonnen von stiftmaster, 22 Januar 2015, 12:03:12

Vorheriges Thema - Nächstes Thema

stiftmaster

Hallo FHEM Gemeinde,
ich möchte gerne die RC um eine Power Taste erweitern.
Auf dieser Taste soll sich ein toggle mit set wol_htpc on und set wol_htpc shutdown befinden.

Wie kann ich das lösen?
Im Wiki kann ich nichts genaues finden.

Gruß
./stiftmaster

UliM

#1
Hi,
die rc ist ja ein eigenes fhem-device.
Du kannst eine beliebige Taste definieren, z.B. simsalabim:PLAY

Wenn dann die Taste PLAY gedrückt wird, wird ein event rc1:simsalabim ausgelöst.

Definier Dir einfach die Taste die Du willst, ordne ihr einen erdachten Befehlsnamen zu (z.B. simsalabmim) und schau Dir dann im eventmonitor an, welcher event generiert wird, wenn Du die Taste drückst.
Wenn Deine remote z.B. rc1 heisst, kannst Du den Tastendruck mit einem notify abgreifen, das z.B. auf rc1:simsalabim reagiert und die Aktion ausführt, die Du möchtest.
define n_rc1 notify rc1:simsalabim set lampe on

Alles ungetestet - poste doch hier Deine Lösung wenn alles funzt.

Gruß, Uli

PS: Siehe auch fhemwiki.de unter Stichwort "remotecontrol".
RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

stiftmaster

Dank Dir Uli für deine Erklärung.
Ich habe mir also eine fünfte Reihe in der RC erzeugt Befehl:Icon

row05 wol_htpc_on:POWEROFF3


Und mein notify erszeugt

define wolon_rc_xbmc notify rc_xbmc:wol_htpc_on set wol_htpc on

Das wol Paket wird gesendet und der HTPC startet  :D, wie kann ich jetzt aber je nach state ein wol_htpc on oder wol_htpc shutdown übermitteln?


Danke für Deine Hilfe

./stift

UliM

Hi,
prima dass es geklappt hat.
Entweder mit 2 unterschiedlichen Tasten auf der remotecontrol, oder indem Du Deinem notify perl-code mitgibst.
Ich kenne state und readings des htpc-device nicht, aber Du könntest sowas machen wie:
define wolon_rc_xbmc notify rc_xbmc:wol_htpc_on { fhem("set wol_htpc ".Value("htpc") eq "off" ? "on" : "shutdown");}
(ungetestet).
Bin auf Deine Lösung gespannt.
Gruß, Uli

PS: Die verwendete Schreibeweise hat die Form <Bedingung>?<Ergebnis wenn Bedingung wahr>:<Ergebnis sonst> , siehe perl
RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

stiftmaster

 :o ich glaub da stoß ich an meine Grenzen  ;D, aber ich versuch es.....
Als Distri läuft Openelec / Kodi, ich hatte mir als Notlösung ja schon einen separaten Schalter gebastelt, welcher je nach state Ein/Aus geschaltet hat.

Der State ist ist opend oder disconnected.
Definiert habe ich es so:
devStateIcon Initialized:rc_RED:poweron opened:general_aus:poweroff disconnected:general_an:poweron

Dafür gab es folgende Attribute:
powerCmdOff set XBMC shutdown
powerCmdOn set wol_htpc on

UliM

Hi,
dann anders gefragt: abhängig von welchem Wert soll entschieden werden, ob on oder shutdown gesendet werden soll?
Ein internal? (z.B. STATE)
Oder ein reading? Welches?
=8-)
RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

stiftmaster

#6
Gehen würde womöglich beides, welches ist denn einfacher zu realisieren?


Internals:
   CFGFN      ./cfg_multimedia.cfg
   DEF        192.168.200.3 tcp
   DeviceName 192.168.200.3:9090
   Host       192.168.200.3
   LAST_PING  1422110540.72414
   LAST_PONG  1422110540.7292
   NAME       XBMC
   NEXT_OPEN  1422110719.11103
   NR         56
   PARTIAL
   Port       9090
   Protocol   tcp
   STATE      disconnected
   TYPE       XBMC
   Pendingevents:
   Pendingplayercmds:
     668575
     714521
   Readings:
     2014-12-14 02:42:38   currentTrack    12
     2015-01-24 15:14:20   fullscreen      off
     2014-12-14 02:42:38   label           The Struggle Within
     2014-12-13 23:21:14   movieid         16
     2015-01-24 15:14:20   mute            off
     2015-01-24 15:14:20   name            Kodi
     2015-01-24 15:14:20   partymode
     2015-01-24 15:14:20   playStatus      stopped
     2015-01-18 00:08:03   playlist        add
     2015-01-24 15:14:20   repeat
     2015-01-24 15:14:20   shuffle
     2015-01-24 15:14:20   skin            Confluence(skin.confluence)
     2014-12-14 02:42:38   songid          97682
     2015-01-24 15:14:20   speed
     2015-01-24 15:44:19   state           disconnected
     2015-01-24 15:43:13   system          quit
     2015-01-24 15:14:20   time
     2015-01-24 15:14:20   totaltime
     2015-01-18 00:08:04   type            movie
     2015-01-24 15:14:20   version         14.0-ad747d9 stable
     2015-01-24 12:02:56   videolibrary    scanfinished
     2015-01-24 15:14:20   volume          88
     2014-12-13 23:21:14   year            2015
Attributes:
   devStateIcon Initialized:rc_RED:poweron opened:general_aus:poweroff disconnected:general_an:poweron
   group      Beleuchtung Multimedia steuern,Multimedia
   icon       it_television
   pingInterval 60
   powerCmdOff set XBMC shutdown
   powerCmdOn set wol_htpc on
   room       Wohnzimmer

UliM

Also
define wolon_rc_xbmc notify rc_xbmc:wol_htpc_on { fhem("set wol_htpc ".Value("XBMC") eq "disconnected" ? "on" : "shutdown");}
?
Also wenn der STATE von XBMC "disconnected" ist, soll wol_htpc ein "on" senden, anderenfalls ein "shutdown".
Oder wie?
=8-)
RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

stiftmaster

Hm,
also beim einschalten wird wol benutzt mit dem command
set wol_htpc on
und für das herunterfahren das XBMC command
set XBMC shutdown

UliM

Hi,
aha. Du sagst immer noch nicht, von was das abhängig sein soll...

Letzter Vorschlag meinerseits:
define wolon_rc_xbmc notify rc_xbmc:wol_htpc_on { if (Value('XBMC') eq 'disconnected') {fhem('set wol_htpc on') } else { fhem('set XBMC shutdown') } }

Falls auch das nicht geht, nimm einfach 2 Tasten :)

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

stiftmaster

Auf die Quick&Dirty Lösung mit 2 Tasten darf ich verzichten, Deine Lösung klappt jetzt wunderbar.

Vielen Dank für Deine Geduld, jetzt noch das geschriebene verinnerlichen und auf zu neuen Spielereien  :D