ECMD: Übergabevariable gesucht von "set RGBLampe FF00FF"

Begonnen von NeuFehm, 24 März 2017, 23:37:27

Vorheriges Thema - Nächstes Thema

NeuFehm

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
Raspberry Pi B+
RS 485 Schnittstellen: DIGITUS DA-70157, LINKSPTITE RS485/GPIO Shield for Raspberry Pi
RS485 Geräte: Ultraschallsensor für Zisternenfüllstand (Eigenbau), 4x8 Relais-M-Mastermodule (Eigenbau), 6 T-Module (Schalter und 3 analoge Eingänge) (Eigenbau)
sonstige Hardware: 2 Relay Modul

Thorsten Pferdekaemper

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
FUIP

NeuFehm

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!
Raspberry Pi B+
RS 485 Schnittstellen: DIGITUS DA-70157, LINKSPTITE RS485/GPIO Shield for Raspberry Pi
RS485 Geräte: Ultraschallsensor für Zisternenfüllstand (Eigenbau), 4x8 Relais-M-Mastermodule (Eigenbau), 6 T-Module (Schalter und 3 analoge Eingänge) (Eigenbau)
sonstige Hardware: 2 Relay Modul

NeuFehm

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.....
Raspberry Pi B+
RS 485 Schnittstellen: DIGITUS DA-70157, LINKSPTITE RS485/GPIO Shield for Raspberry Pi
RS485 Geräte: Ultraschallsensor für Zisternenfüllstand (Eigenbau), 4x8 Relais-M-Mastermodule (Eigenbau), 6 T-Module (Schalter und 3 analoge Eingänge) (Eigenbau)
sonstige Hardware: 2 Relay Modul