HUE Dimmschalter: über eine Taste mehrere HUE Szenen schalten

Dann müsste da irgendwas mit $IPS_ … Stehen…

So ist das nur eine leere variable. Könntest die aber vorher z.b. aus der Aktionsvariable füllen…

Wie müsste das dann aussehen?

Was auch nicht geht ist in meinem Skript oben vom Homematic 6 fach Taster. Da müsste doch die Zeile für einen Langen Tastendruck der Taste 6 meine gewünschte Szene ausgelöst werden.

RequestAction(58001, 2);

ID58001 - Szenen Variable
2 - Wert der Szene

Schrei mal wie du eine Szene schaltest. Ich benutze keine szenen nur warm kalt.

Ralf Biedermann

$aktion=GetValue(…);

Zurzeit über das Webfront:

Das wurde mir angelegt durch das Skript von Pitti:

<?php

declare(strict_types=1);

################################################################################
# Script:   System.ZigbeeScene.ips.php
# Version:  2.0.20231201
# Author:   Heiko Wilknitz (@Pitti)
#
# Simulation der Philips HUE Szenen 
#
# ------------------------------- Installation ---------------------------------
#
# Entsprechend der verwendeten Leuchtmittel die Konfiguration anpassen.
#  
#
# ------------------------------ Changelog -------------------------------------
#
# 02.10.2023 - Initalversion (v1.0)
# 01.12.2023 - Umbau auf Script-Bibliothek (v2.0)
#
# ----------------------------- Konfigruration ---------------------------------
#
# Global Debug Output Flag
$DEBUG  = false;
#
# Scene Profil
$SCENES = [
    [0, 'Sonnenuntergang', '', 0xFF8000],
    [1, 'Tropendämmerung', '', 0xB300B3],
    [2, 'Nordlichter', '', 0x00C6C6],
    [3, 'Frühlingsblüten', '', 0xFF80FF],
    [4, 'Entspannen', '', 0xF4B450],
    [5, 'Konzentrieren', '', 0xD1C4A4],
    [6, 'Hell', '', 0xFFCF78],
    [7, 'Lesen', '', 0xFFD482],
    [8, 'Energie Tanken', '', 0xF7FBFF],
    [9, 'Gedimmt', '', 0xFFCF78],
];
#
# Szenen-Aktionen 1:1 zum Profil [ProfilID => Farbe/Helligkeit (Z2m_Color/Z2M_Brightness)]
$ACTIONS = [
    0 => [[0xFFB5FE,199],[0xFF834B,199],[0xFF834B,199],[0xFF834B,199]],
    1 => [[0xFFB57E,123],[0xFF8C1D,123],[0xCBAAFF,123],[0xFFA354,123]],
    2 => [[0x5AB2FF,137],[0x57FFF7,137],[0x4252FF,137],[0x57EFF7,137]],
    3 => [[0xFFBBD2,214],[0xFF9BBF,214],[0xFFEFF9,214],[0xFFBBD2,214]],
    4 => [[0xF4B450,144]],
    5 => [[0xD1C4A4,254]],
    6 => [[0xFFCF78,254]],
    7 => [[0xFFD482,254]],
    8 => [[0xF7FBFF,254]],
    9 => [[0xFFCF78,78]],
];
#
# Anzusteuerende Lampen für die einzelnen Szenen:
#   - Integer-Variable pro gewünschten Raum und Lampe(ngruppe) anlegen
#   - Der Variable das Profil 'Z2M.LightScene' zuweisen
#   - Als Action dieses Script hinterlegen (eins für alle, darum im nachfolgenden Array alles hinterlegen)
#
# Aufbau Array:
#   - pro Szene können n-Lampen angesteuert werden
#   - Szenen-Variable mit Profil 'Z2M.LightScene' => Array von Lampen(Zigbee2MQTTDevice)
$LIGHTS = [
//  <Szenen-Variable> => [<Zigbee2MQTTDevice_Lampe1>, <Zigbee2MQTTDevice_Lampe2>, <Zigbee2MQTTDevice_Lampe3>, <Zigbee2MQTTDevice_Lampe4>],
    58001   => [37545, 57300, 21511, 24741, 53501, 11732, 54099, 50638, 57641, 59178, 47880, 36102], // Schalter: xyz
    43800   => [23545, 30933, 59839, 15588, 23634, 30900, 30804, 48155, 46444, 31109], // Schalter: xyz
    // weitere Einträge
];
#
################################################################################
#
# Requires include of the global function script via autoload (__autoload.php)
# or direct in the script (uncomment next line)!
require_once(IPS_GetKernelDir()."scripts".DIRECTORY_SEPARATOR.'System.Functions.ips.php');
# You can download it from here https://github.com/wilkware/ips-scripts
#
defined('WWX_FUNCTIONS') || die('Global function library not available!');

// INSTALLATION
if ($_IPS['SENDER'] == 'Execute') {
    $vpn = 'Z2M.LightScene';
    CreateProfileInteger($vpn, 'Shuffle', '', '', 0, 0, 0, $SCENES);
} 
// AKTION VIA WEBFRONT
if ($_IPS['SENDER'] == 'WebFront') {
    // Speichern (Wert übernehmen)
    SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);
    // Szene ausführen
    SetScene($LIGHTS[$_IPS['VARIABLE']], $ACTIONS[$_IPS['VALUE']]);
}

# ------------------------------- Functions ------------------------------------

function SetScene($LIGHTS, $ACTIONS)
{
    $set = 0;
    $color = 0;
    $bright = 0;
    foreach($LIGHTS as $light) {
        if(isset($ACTIONS[$set])) {
            $color = $ACTIONS[$set][0];
            $bright = $ACTIONS[$set][1];
            $set++;
        }
        $z2mColor  = IPS_GetObjectIDByIdent('Z2M_Color', $light); // 'color': xyz
        $z2mBright = IPS_GetObjectIDByIdent('Z2M_Brightness', $light); // 'brightness': xyz
        //echo 'ColorTemp: ' . $z2mColor . ', Brightness: ' . $z2mBright . ', Farbe: ' . $mired . ', Helligkeit: ' . $bright . PHP_EOL;
        RequestAction($z2mColor, $color);
        RequestAction($z2mBright, $bright);
    }
}

################################################################################
?>

Frag am besten mal Pitti wie man es im Script aufruft. Ich vermute

z.B. SetScene($LIGHTS[0], $ACTIONS[0]);

Ralf