FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: NeuFehm am 24 März 2017, 23:37:27

Titel: ECMD: Übergabevariable gesucht von "set RGBLampe FF00FF"
Beitrag von: NeuFehm am 24 März 2017, 23:37:27
mein Colorpicker erzeugt bspw. den Befehl "set RGBLampe FF00FF"
Nun hätte ich gern eine classdef geschrieben, die den Wert "FF00FF" verarbeitet.
Ich kenne das nur von Beispiel "set myLampe on":
set on cmd {hier der Befehl, der die Lampe anschaltet}
Wie kann ich aber den Wert referenzieren? So:
set RGBLampe cmd {Hier der Befehl unter Berrücksichtigung von $Forumfrage...}

$Forumfrage = $1?
$Forumfrage = _$?
$Forumfrage = RGBLampe[]?

keine Ahnung... hat jemand eine Idee?

LG Mirko
Titel: Antw:Übergabevariable gesucht von "set RGBLampe FF00FF"
Beitrag von: Thorsten Pferdekaemper am 26 März 2017, 10:55:06
Hi,
ich habe versucht, die Frage zu verstehen, aber ohne Erfolg. Kannst Du mal versuchen, mit Beispielen zu beschreiben, was Du erreichen willst?
Gruß,
   Thorsten
Titel: Antw:Übergabevariable gesucht von "set RGBLampe FF00FF"
Beitrag von: NeuFehm am 26 März 2017, 21:12:19
Ich möchte meine Eigenbausteuerung für RGB über rs 485 veranlssen, den vom Colorpicker ermittelten Wert einzustellen.
Dazu noch mal einen Ganz zurück:

Zunächst das Funktionsprinzip.
Will man per RS485 eine einfache Lampe definieren, nutzt man ein ECMD Device:
define myMModul ECMD serial /dev/ttyAMA0@9600
attr myMModul classdefs MModul=/opt/fhem/MModul.classdef
define MeineLampe ECMDDevice MModul
attr MeineLampe IODev myMModul


In der Classdef stehen dann die einzelnen Befehle, die vom Device kommen können. In unserem Fall "on" und "off" ("set MeineLampe on" und "set MeineLampe off")
und der dazugehörige Befehl für das Device.
Das sieht dann so aus:
set on cmd {chr(35).chr(77).chr(49).chr(69).chr(1).chr(1).chr(1).chr(13).chr(10)}
set off cmd {chr(35).chr(77).chr(49).chr(69).chr(1).chr(1).chr(0).chr(13).chr(10)}


Man kann also auch in Fhem ein beliebiges Device definieren und mit "webCmd" zuweisen. Das sieht beim dumm dann so aus:
define RGBLampe dummy
attr RGBLampe room LED
attr RGBLampe setList rgb:colorpicker,RGB
attr RGBLampe webCmd rgb:rgb ff0000:rgb 00ff00:rgb 0000ff:toggle:on:off

define colorInit notify global:INITIALIZED {use Color}


Die Frage ist nun, wie kann ich den ermittelten Farbcode an die classdef weiter geben.
Das müsste ungefähr so aussehen:
set rgb:rgb cmd {code für die Schaltung inkl. $rgb.....}
Aber wie sieht das konkret aus?

Wenn Du immer noch fragen hast, bitte einfach nochmal fragen!
Titel: Antw:ECMD: Übergabevariable gesucht von "set RGBLampe FF00FF"
Beitrag von: NeuFehm am 26 März 2017, 21:20:32
Ich glaube ich habe was in der commandref gelesen:
set <commandname> params <parameter1> [<parameter2> [<parameter3> ... ]]
also
set rgb params rgb
und
The macro %<parameter> will expand to the current value of the named parameter. This can be either a parameter from the device definition or a parameter from the set or get command.
also
set rgb cmd {......%rgb....}
Das muss ich mal probieren.....