Anfängerfrage: Ansteuerung RGB über Glastaster

Hallo an die Gemeinde,

dies ist mein Erster Beitrag und irgendwann muss ich ja auch mal anfangen :smiley:

Wo fange ich an :confused:

Meine Hauskonfiguration sieht folgendermassen aus; Licht und Jalousien werden über KNX gesteuert, RGB’s über IPS-RGBW-868, Temperaturen über 1-Wire. Alles erstmal nur in wenigen Räumen, da ich am sanieren bin (Hausbau 1977).

Nun versuche ich schon seit einigen Tagen/Wochen die RGB’s über den Glastaster II Smart von MDT zu steuern! Aber ich bekomme es einfach nicht hin.

Die Gruppenadressen sind in der ETS5 angelegt, sowie die OPC-Datei in SP-Symcon eingespielt.
Berühre ich die Sensortasten verändern sich auch die Werte im Objektbaum.
In IPSView habe ich im Meta-Manager die RGB-Box mit der ID vom IPS-RGBW verknüpft, Ansteuerung per Handy funktioniert wunderbar.

Aber jetzt fehlen mir irgendwie die Grundkenntnisse, wie wo und was muss ich jetzt unternehmen:banghead:

Mit dem Glastaster die RGB’s über IP-Symcon / IPSView steuern. Wie verknüpft man so etwas ?
Im Workflow?

Gruppenadressen.JPG

Objektbaum RGB.JPG

Willkommen im Foum :slight_smile:

Sieh Dir mal diesen Beitrag an, im Prinzip sollte das bei Dir auch so funktionieren - ist zwar Homematic Licht, sollte aber bei KNX analog funktionieren.
https://ipsview.brownson.at/?p=886

Der MDR Glastaster kann in dem Fall nur HSV Ansteuerung, falls ich Deinen Beitrag richtig verstanden habe.

EDIT: Es muss natürlich MDT heißen.

Ja, du wirst zwischen den Farbmodellen HSV (Farbton, Sättigung, Helligkeit) und RGB umrechnen müssen.

Hallo,

vielen Dank für die Info’s, aber ich blicke es nicht.

Wenn ich die Sensortaste betätige bekomme ich immer nur den Wert 9,

Dann stellt sich mir die Frage wie wandelt man den HSV-Wert nach RGB um und umgekehrt für die Rückmeldung zum Glastaster :confused:

Benötige ich hierfür eine Addierung der Tastenimpulse?

Fragen über Fragen?

Gibt es hierfür ein fertiges Modul? Denn ich glaube nicht dass ich soetwas mit den Logik-Module hinbekomme:banghead:

Vielen Dank jetzt schonmal

Ich könnte Dir einen kleinen SubWorkflow zur Umwandlung von HSV in RGW bauen:cool:

:smiley:

Das ist eine Super Idee, denn mir fehlt hier wirklich der Denkanstoß;

Was muß ich unternehmen? :rolleyes:

Hab mal einen kleinen SubWF gebaut:

HSL_2_RGB.zip (1.19 KB)

sieht dann beispielsweise so aus:

Hallo Andreas,

vielen Dank;
wo soll ich Anfangen, ich steh noch im dunkeln;
Also dein SubWorkflow habe ich erfolgreich eingebunden und per Edit die Werte 120, 70, 70 eingetragen = Farbe grün
ich bin begeistert :), aber wieso bekomme ich aus dem Glastaster nur die Werte 1 oder 9 :banghead:

In der ETS kann ich keine anderen Parameter auswählen; nur Dimmer oder Jalousie, auch die Einstellung
HSV Farbsteuerung ist ausgewählt;

Gruß
Maik

Da muss einer der KNX Spezialisten ran:eek:

Hi Maik,
ich bin zwar noch nicht ganz so weit, habe aber ein KNX Testboard mit Glastaster und DALI Gateway (und jeweils ein DT6 bzw. DT8 Vorschaltgerät dran).
Der Glastaster sollte auch drei Werte auf drei GA’s senden. Auf diese GA‘s muss Symcon lauschen und stellen die Inputwerte für den Workflow dar. Aufpassen muss man nur, ob es relative Veränderungen oder absolute Werte sind. Bei relativen Veränderungen muss man vor dem Input in den Workflow noch rechnen (aktueller Wert in Symcon + Veränderung).
Generell rechnen muss man wohl auch noch für Sättigung und Helligkeit absolut, da hier nicht 0-255 sondern 0-100% gesendet werden.
Hast du den Glastaster wie in den Beispielen von MDT konfiguriert?

Ich bin da an der KNX Lichtsteuerung im Augenblick selber dran und werde das mal versuchen nachzustellen. Ich werde versuchen die Absolutwerte auf die GA‘s nach Symcon zu schreiben. Es verändert sich bei Bedienung am Glastaster immer nur einer der drei Werte, die anderen beiden bleiben konstant.

Hallo Frank,

ja die Einstellungen habe ich so gesetzt, auch die Kommunikationsobjekte habe ich so, siehe meine Bilder.
In der Tat liegt es wohl von der relativen Änderung in die absoluten Werte zu kommen, aber nur wie?
Ich bekomme ja aus der ETS nur ein Wert die HSV Farbton (H) relativ ändern, 4bit, Dimmer Schritt!

Ich habe ja nur den Glastaster und kein KNX Dali Gateway

der Vorteil dess ich das ganze auch über KNX/Dali steuer ist in dem Fall halt, dass Aktion/Reaktion validiert und Rückschlüsse gezogen werden können.
Am Ende ist es aber das gleiche, ich möchte über Symcon darauf zugreifen und steuern.

Ich habe mir das jetzt mal angeschaut ein paar Tests gemacht.

  1. Ich habe ETS 5.7.4 --> OPC Export / Import ist durch XML abgelöst.
  2. durch 1) sehen die bei mir angelegten Instanzen komplett anders aus.
  3. die Statusvariablen der GA 1/4/32,34,38 müssen aus Symcon gefüttert werden, sonst wird der Status im Glastaster nicht korrekt angezeigt. --> Du musst die Werte die im RGB Aktor aktuell gesetzt sind auf HSV zurück rechnen und auf den KNX Bus schicken.
  4. Die Tasten „Helligkeit“ unterscheiden zwischen einem kurzen und langem Tastendruck. Kurz ist jeweils AN/AUS, wenn es eingeschaltet ist, konnte ich mit langem Tastendruck die Helligkeit Stufenweise reduzieren.
  5. Farbton ist „unendlich“, nach 360° kommt wieder 1° (ist ja auch logisch und für die relative Umrechnung notwendig)

Hast du mal das logging für die Variablen eingeschaltet? Habe ich als erstes gemacht (ohne irgendwelche Umrechnungen). Ich will immer erst mal wissen und verstehen was da aus dem anderen System tatsächlich angkommt.

In diesem Fall ist das für mich sehr verwirrend:

Die Schrittunterteilung:
2020-03-09 14_54_22-Window.png

Bewegung und Erhöhen/Erniedrigen schaltet um ob der entsprechende Wert um die StepSize erhört oder reduziert wird. Wenn die Schrittunterteilung nicht auf „Pause“/0 steht, geht auch an den KNX Bus was zurück und Stripe und Taster ändern sich plausiebel.

Da beim XML Export die Datentypen in den Instanzen komplett anders aussehen als beim OPC kann ich mir vorstellen, dass es schon an der Stelle klemmt. Da die gleiche Hardware (Glastaster) dahintersteckt sollte das grundsätzlich auch identisch funktionieren.

Die Umrechnug der relativen Veränderung ist nicht kompliziert, solange man den letzten Absolutwert vor der Veränderung noch hat.

Zunächst müssen wir mal klären warum da unterschiedliche Instanzen sind (mit XML kommen die „neuen KNX DPT-Instanzen“ verwendet werden. Um das zu klären ist aber sicher die KNX Rubrik besser geeignet.
Ich werde das noch mal prüfen und einen entsprechenden Beitrag aufmachen. Ich kann beispielsweise die Instanz auch nur über die vordefinierten Schalter manuell bedienen, ein Ansprechen via Script gelingt mir nicht, für mich ist das auch noch neu.

Was mir eben noch auffällt, auf deinem letzten Screenshot in Beitrag #9 sieht man,dass H bei dir auch vom Typ 3.007 ist.
Wenn du magst, leg doch mal die Instanzen (H,S,V) manuell als „DPT 003.x - 3-Bit Controlled“ an:

Das wären dann zumindest die „neuen“ DPT Datenpunkte.

Moin Frank,

erstmal Danke das Du mir da unter die Arme greifst;
Ich habe mir mal die Instanzkonfiguration angeschaut und mit deiner verglichen,
da habe ich schon wieder Fragen? EIS2 DimSteuerung ist hier eingetragen!:confused:

Das Logging muss ich noch einschalten, Ich befasse mich noch nicht lange mit den Systemen.
Stehe also erstmal vorm Wald :smiley:

Mit der Umrechnung wird’s wahrscheinlich auch etwas holprip

:slight_smile: ich kann mich noch gut daran erinnern wie ich vor dem leeren Objektbaum saß…

Die Instanzkonfigurationen darfst du nicht miteinander vergleichen. Deine ist über den OPC Import erstellt, meine über XML
XML bringt mehr / andere Details und damit werden auch teilweise andere Instanzen angelegt.
Daher mein Vorschlag, dass du eine neue Instanz anlegst.

  • Rechte Maus auf eine Kategorie deiner Wahl (kann die gleiche sein in dem die anderen Objekte vom Glastaster drin sind)
  • Objekt hinzufügen -> Instanz
  • Im sich öffnenden Fenster im Schnellfilter „DPT 003“ eingeben
  • „DPT 003.x - 3-Bit Controlled“ auswählen, „Name“ sinnvoll übertippen und OK
  • das Fenster dass sich dann öffnet analog zu meinem Screenshot (das ist die Konfig von meinem DPT 003) konfigurieren -> Stichwort Gruppenadresse und Einheit
  • die Spezialschalter kannst du lassen wie sie sind

Das logging kannst du pro Variable einstellen:

  • Doppelklick auf den Variablennamen
  • Archiveinstellungen aufklappen
  • „Alle Variablenänderungen aufzeichnen“ aktivieren
  • wenn sich die Variable geändert hat kannst du mittels Doppelklick auf den Wert der Variable im sich öffnenden Fenster auf Archiv klicken und siehst die Historie der Einträge.

Ich habe mal „alte“ Instanzen erstellt (KNX/EIB Device, EIS2 Dim Steuerung Standard und erweitert). Im Grunde ist dass immer das Gleiche:

EIS Standard 0-15 EIS erweitert -7 - +7 DPT 3.007 Assoziation/Text
Bewegung + (=1) oder - (=0) Schrittunterteilung
7 -1 0 7 1 %
6 -2 0 6 3 %
5 -3 0 5 6 %
4 -4 0 4 12 %
3 -5 0 3 25 %
2 -6 0 2 50 %
1 -7 0 1 100 %
0 oder 8 0 0 oder 1 0 Pause
9 7 1 1 100 %
10 6 1 2 50 %
11 5 1 3 25 %
12 4 1 4 12 %
13 3 1 5 6 %
14 2 1 6 3 %
15 1 1 7 1 %

Eine 9 würde bei einer EIS Standard (0-15) Instanz also bedeuten, dass du eine Erhöhung des Wertes am Glastaster sendest.
Was ich noch nicht ganz verstehe, ist der reale Einfluss der Schrittunterteilung. Gefühlt rotiert das immer in der gleichen Geschwindigkeit .
Ein Test eben am Taster hat gezeigt, dass bei erhöhen des Wertes (rechte Taste) gesendet werden:
Standard = 9
Erweitert = 7
3.007 = 1 (Boolen = 0)

Reduzieren des Wertes (linke Taste):
Standard = 1
Erweitert = -7
3.007 = 1 (Boolen = 1)
alle anderen Schrittunterteilungen (DPT 3.007) kommen scheinbar nicht vor.

Daraus würde ich jetzt erst mal schließen, dass die einzige Information die aus dem Taster kommt, die „Richtung“ und die Information ob eine Taste gedrück ist kommt.
Das würde bedeuten, dass so etwas wie „Rotation im Farbkreis pro Zeiteinheit“ in PHP programmiert werden muss, z.B. 15°/Sek.

Beispiel:
Die rechte Taste wird 2 Sekunden gedrückt. Der letzte Winkel im Farbrad waren 340°
-> 340°+ 2Sek*15°/Sek = 10°
Neuer Wert für H der in den SubWorkflow übergeben wird ist 10°

Das wird hier an der Stelle so „kompliziert“, da die Information wie schnell ein Wert sich ändern soll in der KNX Welt vom KNX Dimmaktor vorgegeben wird (bzw. parametrierbar ist).
Das klingt jetzt erst mal alles fürchterlich kompliziert, eine Lösung dafür findet sich aber.
Wichtig dafür ist in jedem Fall, dass man den letzten Wert der im RGB Modul gesetzt wird zurück nach HSV rechnet und an die Statusvariablen schickt, damit die Anzeige im Taster synchron zum Leuchtenstatus ist.

BG
Frank

Edith sagt: Falscher Tabellenwert korrigiert

ich habe mir gestern die Umwandlung von RGB nach HSV angeschaut und bin darüber gestolpert, dass es wohl einen kleinen Unterschiede zwischen HSV und HSL gibt (bin nämlich beim rückwärts rechnen nicht auf die Ausgangswerte gekommen).
Da der Taster HSV in der Anzeige wiedergibt, werde ich jetzt mal eine Vorwärts/Rückwärts Berechnung raussuchen, die annährend das gleiche (HSV) Ergebnis liefert. Mit gewissen Ungenauigkeit wegen mathematischem Runden ist zu rechnen, der Glastaster ist ja aber kein Präzisionsmessinstrument :smiley:

Ich könnte mir bei dir vorstellen, dass evtl. in einem ersten Schritt dann ein Tastendruck eine Veränderung um eine bestimmte Schrittweite (z.B. 18° / 10%) darstellt.

Zur Erklärung: Das relative Dimmen gibt es bei KNX in zwei Varianten, von denen der MDT nur die zweite unterstützt.

Variante 1: Der Taster sendet wiederholt kleine Dimmschritte, solange die Taste gedrückt ist. Hier ist die Dimmgeschwindigkeit davon abhängig, welche Schritte der Taster sendet und wie oft.

Variante 2 (von MDT verwendet): Der Taster sendet einen Dimmschritt von 100%, wenn die Taste gedrückt wird. Beim Loslassen der Taste sendet er auf derselben GA ein STOP. Die Dimmgeschwindigkeit wird hier vom Dimmaktor bestimmt, der zwischen Start und Stop seine im Aktor festgelegte Dimmkurve fährt.

Ja, richtig. In IPS Werte durchlaufen bis das STOP kommt.

Prima, ich dampfe dass dann gerade mal zusammen:
Die drei Alternativen:
1 - EIS2 | DimSteuerung | Standard | [0…15] Instanz:
Wert erhöhen: 9
Stop: 8
Wert reduzieren: 1

2 - EIS2 | DimSteuerung | Erweitert| [-7…+7] Instanz:
Wert erhöhen: 7
Stop: 0
Wert reduzieren: -7

3 - 3.007 - Dimming Control Instanz:
Wert erhöhen: Schrittunterteilung 1, Bewegung und Erhöhen/Erniedrigen 1 (true)
Stop: Schrittunterteilung 0, Bewegung und Erhöhen/Erniedrigen 1(true) oder 0 (false)
Wert reduzieren: Schrittunterteilung 1, Bewegung und Erhöhen/Erniedrigen 0 (false)

HSV/HSL: Ein Gelbton wurde am Glastaster gesetzt. Die Umrechnung nach HSV2RGB lieferte einen Gelbton, die Umrechnung HSL2RGB weiß. -> HSV wird bevorzugt

HSV2RGB


// taken and based on http://www.beliefmedia.com/convert-rgb-hsv-hsl-php

//$value1 = 0; $value2 = 189; $value3 = 85;

$r = $value1; //Red
$g = $value2; //Green
$b = $value3; //Blue

$r = ($r / 255);
$g = ($g / 255);
$b = ($b / 255);

$maxrgb = max($r, $g, $b);
$minrgb = min($r, $g, $b);
$chroma = $maxrgb - $minrgb;

$computedv = 100 * $maxrgb;

if ($chroma == 0)
    return array(
        0,
        0,
        $computedv
    );

$computeds = 100 * ($chroma / $maxrgb);

switch ($minrgb) {
    case $r:
        $h = 3 - (($g - $b) / $chroma);
        break;
    case $b:
        $h = 1 - (($r - $g) / $chroma);
        break;
    default:
        /* $g == $minrgb */
        $h = 5 - (($b - $r) / $chroma);
        break;
}

$computedh = 60 * $h;

$result1 = round($computedh, 0); //Hue
$result2 = round($computeds, 0); //Saturation
$result3 = round($computedv, 0); //Value

//echo "h: ".$result1."
s: ".$result2."
v: ".$result3;

HSV2RGB:


// taken and based on http://www.beliefmedia.com/convert-rgb-hsv-hsl-php

//$value1 = 147; $value2 = 100; $value3 = 74;

$hue = $value1; //Hue
$sat = $value2; //Saturation
$val = $value3; //Value

$h = $hue;
$s = $sat;
$v = $val;

if ($hue < 0)
    $hue = 0;
if ($hue > 360)
    $hue = 360;
if ($sat < 0)
    $sat = 0;
if ($sat > 100)
    $sat = 100;
if ($val < 0)
    $val = 0;
if ($val > 100)
    $val = 100;

$dS = $sat / 100.0;
$dV = $val / 100.0;
$dC = $dV * $dS;
$dH = $hue / 60.0;
$dT = $dH;

while ($dT >= 2.0)
    $dT -= 2.0;
$dX = $dC * (1 - abs($dT - 1));

switch (floor($dH)) {
    case 0:
        $dR = $dC;
        $dG = $dX;
        $dB = 0.0;
        break;
    case 1:
        $dR = $dX;
        $dG = $dC;
        $dB = 0.0;
        break;
    case 2:
        $dR = 0.0;
        $dG = $dC;
        $dB = $dX;
        break;
    case 3:
        $dR = 0.0;
        $dG = $dX;
        $dB = $dC;
        break;
    case 4:
        $dR = $dX;
        $dG = 0.0;
        $dB = $dC;
        break;
    case 5:
        $dR = $dC;
        $dG = 0.0;
        $dB = $dX;
        break;
    default:
        $dR = 0.0;
        $dG = 0.0;
        $dB = 0.0;
        break;
}

$dM = $dV - $dC;
$dR += $dM;
$dG += $dM;
$dB += $dM;
$dR *= 255;
$dG *= 255;
$dB *= 255;

$result1 = round($dR); //Red
$result2 = round($dG); //Green
$result3 = round($dB); //Blue

//echo "R: " . $result1 . "
G: " . $result2 . "
B: " . $result3;

Bei Tastendruck sollte sich der entsprechende Wert (aus einer Ist-Statusvariable) kontinuierlich erhöhen/reduzieren bis das STOP Wert gesendet wird. Bestenfalls wird der geänderte Wert zyklisch an den RGB Controller weitergegeben… Wo ich das gerade schreibe, wird mir klar, dass RGB2HSV gar nicht notwendig ist. Für H, S und V wird sowieso eine Variable gebraucht. Die kann ich einmal setzen und so auch an die KNX Statusvariable schicken. Ausgangspunkt für die HSV2RGB berechnung sind immer die drei Statusvariablen die

  1. nach RGB gerechnet
  2. der inkrementierte absolut Wert an die KNS Statusvariable geschickt wird.

Offen: Wie verhält sich das RGB Gateway? Wie wird der Stripe darüber ein/aus geschaltet? Vom Taster gibts dazu einen separate Ein/Aus GA/Variable.

Was den Workflow angeht, bin ich jetzt allerdings raus. Ich bastel mir meine Sachen noch mit der Hand am Arm zusammen und will mich erst mal nicht in den Workflow einarbeiten.
Findet sich jemand der der dabei Hilfestellung leisten kann?