Weitere Shortcuts für's Arbeiten in der Konsole

Hi, es gibt ja beim Arbeiten in der der Verwaltungskonsole so ein paar mir bekannte Shortcuts wie STRG+C(Copy), STRG+P(Einfügen) oder STRG+L(Link erstellen). Ich finde irgendwie gerade die Dokumentation dazu nicht. Viel mehr war es aber glaube ich nicht.

Ich würde mir da noch ein paar mehr Shortcuts wünschen für Dinge, die ich oft brauche und für die ich immer durch die Einstellungen navigieren muss.

Das wäre z.B. das Toggeln der Visuellen Einstellungen wie “Objekt anzeigen” oder “Objekt aktivieren”.

Wäre es denkbar, dass ihr sowas noch implementiert, oder dass man sich selbst für gewisse Dinge Shortcuts anlegen kann?

Gibt noch ne Masse mehr => Tastenkombinationen — IP-Symcon :: Automatisierungssoftware

Ich weiß jetzt nicht wie genau Du das meinst, aber ich bin kein Fan von Tastenkombinationen die dann Magic Dinge tun.

Was ich meine, wenn ich aus versehen die Tastenkombi für „Objekt anzeigen“ drücke - während es im zugeklappten Zustand ist (weil die Einstellungen erstmal nicht sichtbar sind nach öffnen einer Variable …)- fände ich es nicht gut!

Gruß Heiko

Ok, es gibt da schon noch ein paar mehr, aber die oben genannten, die mir beim täglichen Arbeiten am meisten fehlen, sind leider nicht dabei :frowning:

An dem versehentlichen verändern von Objekteigenschaften ist schon was dran. Aber wenn ich nun STRG+Shift+V nehme für “Toggel Visibility” wäre das denke ich schon sehr unwahrscheinlich, dass das jemand aus Versehen drückt. Aber ausschließen kann man es auch nicht.

Für mich wäre es zumindest ein ziemliche Erleichterung.

Wieso brauchst Du die Funktion so oft? Für immer die gleichen Variablen? Wenn ja, warum kein Script?

Wenn ich ein neues Projekt anlege und mir die Instanzen und Variablen aus dem KNX Konfigurator erstellen lassen, dann sind erst mal alle Variablen editierbar.

Um mal ein paar Beispiele zu nennen, sind das alle Werte von der Wetterstation oder bei den Heizungsreglern alle Ist-Temperaturen. Diesen Variablen sollen aus IPS ja nicht geändert werden. Daher muss ich alle so ändern, dass sie keine Standard Aktion haben.

Bei der Sichtbarkeit sind das z.B. immer die Links für die Fotos in den Räumen.

Und das kann man nicht automatisieren?

Ich habe z.B. ein Script welches ich immer ausführen wenn ein neues Zigbee Gerät hinzukommt. Das geht über alle Zigbee Devices und modifiziert anhand des Variablenidents die Sichbarkeit, Icons usw.

Könnte mir vorstellen das sowas auch mit KNX Sachen machbar wäre.

Nur so als Idee.

Das mit dem Script hört sich auf jeden Fall interessant an. Hab ich auch schon daran gedacht, das mit einem Script zu versuchen. Aber das übersteigt aktuell noch meine Fähigkeiten bei Scripten.

Wenn du mir mal eins deiner Scripte zeigen könntest, würde mal schauen, ob ich das für meinen Fall auch anpassen lässt.

Klar, hier ist mein Script - ist aber ne reines "Arbeits-"Script , also nix kommentiert.
Aber vielleicht sieht man was ich meinte und wie man vorgehen kann …

<?php
#
# Zigbee2MQTTBridge = {00160D82-9E2F-D1BD-6D0B-952F945332C5}
# Zigbee2MQTTConfigurator = {D30BADA8-F261-4D9F-89A9-2E9961AF021F}
# Zigbee2MQTTDevice = {E5BB36C6-A70B-EB23-3716-9151A09AC8A2}
# Zigbee2MQTTGroup = {11BF3773-E940-469B-9DD7-FB9ACD7199A2}
# Zigbee2TasmotaBridge = {4A0D466C-45CF-B6C4-10B3-5A429B57A8D0}
# Zigbee2TasmotaConnect = {D5C0D7CE-6A00-BDBE-C43E-678CF5CBE178}
# Zigbee2TasmotaDevice = {7FB10079-784C-EC79-4425-2941D23EEAFA}
#
# Zigbee2MQTTBridge
$z2mBID = '{00160D82-9E2F-D1BD-6D0B-952F945332C5}';
# Zigbee2MQTTConfigurator
$z2mCID = '{D30BADA8-F261-4D9F-89A9-2E9961AF021F}';
# Zigbee2MQTTDevice
$z2mDID = '{E5BB36C6-A70B-EB23-3716-9151A09AC8A2}';
# Zigbee2MQTTGroup
$z2mGID  = '{11BF3773-E940-469B-9DD7-FB9ACD7199A2}';


//CollectIdent($z2mDID);
IterateZigbee($z2mDID);
IterateZigbee($z2mGID);

function CollectIdent($guid) {
    // Idents
    $idents = [];
    //Auflisten
    $module = IPS_GetInstanceListByModuleID($guid);
    foreach ($module as $instance) {
        foreach (IPS_GetChildrenIDs($instance) as $child) {
            $object = IPS_GetObject($child);
            if(isset($idents[$object['ObjectIdent']])) {
                $idents[$object['ObjectIdent']]++;
            }
            else {
                echo $object['ObjectID'] . ':' . $object['ObjectIdent'] . PHP_EOL;
                $idents[$object['ObjectIdent']] = 1;
            }
        }
    }
    ksort($idents, SORT_STRING);
    print_r($idents);
}

function IterateZigbee($guid) {
    $module = IPS_GetInstanceListByModuleID($guid);
    foreach ($module as $instance) {
        foreach (IPS_GetChildrenIDs($instance) as $child) {
            OrganizeID($child);
        }
    }
} 

function OrganizeID($id) {
    $object = IPS_GetObject($id);
    switch ($object['ObjectIdent']) {
        case 'action':
            IPS_SetPosition($object['ObjectID'], 7);
            break;
        case 'action_duration':
            IPS_SetPosition($object['ObjectID'], 7);
            break;
        case 'angle_x':
        case 'angle_y':
        case 'angle_z':
            IPS_SetPosition($object['ObjectID'], 8);
            break;
        case 'announce':
            IPS_SetPosition($object['ObjectID'], 20);
            IPS_SetIcon($object['ObjectID'], 'EnergyProduction');
            IPS_SetHidden($object['ObjectID'], true);
            break;
        case 'battery':
            IPS_SetPosition($object['ObjectID'], 15);
            IPS_SetVariableCustomProfile($object['ObjectID'], 'Z2M.Battery.100');
            break;
        case 'battery_state':
            IPS_SetPosition($object['ObjectID'], 16);
            IPS_SetVariableCustomProfile($object['ObjectID'], 'Z2M.Battery.State');
            break;
        case 'brightness':
            IPS_SetPosition($object['ObjectID'], 3);
            break;
        case 'color':
            IPS_SetPosition($object['ObjectID'], 2);
            #IPS_SetIcon($object['ObjectID'], '');
            break;
        case 'color_hs':
            IPS_SetPosition($object['ObjectID'], 2);
            #IPS_SetIcon($object['ObjectID'], 'Paintbrush');
            IPS_SetHidden($object['ObjectID'], true);
            break;
        case 'color_mode':
            IPS_SetPosition($object['ObjectID'], 3);
            IPS_SetHidden($object['ObjectID'], true);
            break;
        case 'color_power_on_behavior':
            IPS_SetPosition($object['ObjectID'], 4);
            IPS_SetHidden($object['ObjectID'], true);
            break;
        case 'color_temp':
            IPS_SetPosition($object['ObjectID'], 5);
            IPS_SetHidden($object['ObjectID'], false);
            break;
        case 'color_temp_kelvin':
            IPS_SetPosition($object['ObjectID'], 5);
            IPS_SetHidden($object['ObjectID'], true);
            break;
        case 'color_temp_presets':
            IPS_SetPosition($object['ObjectID'], 5);
            IPS_SetHidden($object['ObjectID'], true);
            break;
        case 'color_temp_startup':
            IPS_SetPosition($object['ObjectID'], 5);
            IPS_SetHidden($object['ObjectID'], true);
            break;
        case 'color_temp_startup_presets':
            IPS_SetPosition($object['ObjectID'], 5);
            IPS_SetHidden($object['ObjectID'], true);
            break;
        case 'contact':
            IPS_SetPosition($object['ObjectID'], 8);
            break;
        case 'current':
            IPS_SetPosition($object['ObjectID'], 17);
            break;
        case 'device_status':
            IPS_SetPosition($object['ObjectID'], 0);
            break;
        case 'device_temperature':
            IPS_SetPosition($object['ObjectID'], 14);
            break;
        case 'do_not_disturb':
            IPS_SetPosition($object['ObjectID'], 17);
            IPS_SetHidden($object['ObjectID'], true);
            break;
        case 'effect':
            IPS_SetPosition($object['ObjectID'], 6);
            break;
        case 'energy':
            IPS_SetPosition($object['ObjectID'], 19);
            break;
        case 'identify':
            IPS_SetPosition($object['ObjectID'], 28);
            IPS_SetHidden($object['ObjectID'], true);
            break;
        case 'illuminance':
            IPS_SetPosition($object['ObjectID'], 9);
            //IPS_SetVariableCustomProfile($object['ObjectID'], '~Illumination');
            break;
        case 'illuminance_lux':
            IPS_SetPosition($object['ObjectID'], 10);
            IPS_SetHidden($object['ObjectID'], true);
            break;
        case 'last_seen':
            IPS_SetPosition($object['ObjectID'], 30);
            IPS_SetIcon($object['ObjectID'], 'Clock');
            IPS_SetHidden($object['ObjectID'], true);
            break;
        case 'led_indication':
            IPS_SetPosition($object['ObjectID'], 16);
            break;
        case 'level_config__current_level_startup':
        case 'level_config__current_level_startup_presets':
        case 'level_config__execute_if_off':
        case 'level_config__on_level':
        case 'level_config__on_off_transition_time':
            IPS_SetPosition($object['ObjectID'], 21);
            IPS_SetHidden($object['ObjectID'], true);
            break;
        case 'linkquality':
            IPS_SetPosition($object['ObjectID'], 29);
            //IPS_SetVariableCustomProfile($object['ObjectID'], 'Z2M.Intensity.254');
            IPS_SetHidden($object['ObjectID'], true);
            break;
        case 'motion_sensitivity':
            IPS_SetPosition($object['ObjectID'], 13);
            break;
        case 'occupancy':
            IPS_SetPosition($object['ObjectID'], 11);
            break;
        case 'occupancy_timeout':
            IPS_SetPosition($object['ObjectID'], 12);
            break;
        case 'power':
            IPS_SetPosition($object['ObjectID'], 18);
            break;
        case 'power_on_behavior':
            IPS_SetPosition($object['ObjectID'], 18);
            IPS_SetHidden($object['ObjectID'], true);
            break;
        case 'power_outage_count':
            IPS_SetPosition($object['ObjectID'], 18);
            IPS_SetHidden($object['ObjectID'], true);
            break;
        case 'sensitivity':
            IPS_SetPosition($object['ObjectID'], 12);
            break;
        case 'soil_moisture';
            IPS_SetPosition($object['ObjectID'], 10);
            break;
        case 'state':
            IPS_SetPosition($object['ObjectID'], 1);
            break;
        case 'strength':
            IPS_SetPosition($object['ObjectID'], 11);
            IPS_SetVariableCustomProfile($object['ObjectID'], 'Z2M.Strength');
            break;
        case 'temperature':
            IPS_SetPosition($object['ObjectID'], 14);
            break;
        case 'temperature_unit';
            IPS_SetPosition($object['ObjectID'], 14);
            IPS_SetHidden($object['ObjectID'], true);
            break;
        case 'trigger_count':
            IPS_SetPosition($object['ObjectID'], 9);
            IPS_SetHidden($object['ObjectID'], true);
            break;
        case 'update__installed_version':
        case 'update__latest_version':
        case 'update__progress':
        case 'update__remaining':
        case 'update__state':
            IPS_SetPosition($object['ObjectID'], 22);
            IPS_SetHidden($object['ObjectID'], true);
            break;
        case 'vibration':
            IPS_SetPosition($object['ObjectID'], 15);
            break;
        case 'voltage':
            IPS_SetPosition($object['ObjectID'], 16);
            break;
        case 'x_axis':
        case 'y_axis':
        case 'z_axis':
            IPS_SetPosition($object['ObjectID'], 9);
            break;
        default:
            if(!empty($object['ObjectIdent'])) {
                echo 'Ident:' . $object['ObjectIdent'] . PHP_EOL;
            }
   }
}

?>

Hey @pitty, das ist super! Da kann ich mir einiges von abschauen und mal versuchen selbst umzusetzen.

Vielen Dank dafür!

P.S. ich merke aber, gerade, dass es ohne zusätzliche Beschreibung der Funktionen eher schwer wird das zu verstehen. Aber zumindest weiß ich nun, dass sowas machbar wäre und kann das erst mal gezielt auf einzelne Instanzen anwenden. Und die Dokumentation zu den verwendeten IPS_Befehlen lese ich mir auch mal durch.

Freut mich, die Herangehensweise ist eigentlich gar nicht so schwer …

1.) Zuerst werden alle Instanzen von einem bestimmten Typ gesucht (IterateZigbee), bei Dir müssten das halt KNX Geräte sein

2.) dann geht die Funktion durch alle „Kinder“ der Instanz (das sind dann die Statusvariablen)

3.) OrganizeID nimmt so eine Variable und schaut was sie für ein Ident hat und setzt dann z.B. das Icon oder die Position u.s.w.

Also, Du müsstest nur auf KNX switchen und dann schauen ob Du es per IDENT oder NAME (oder wie auch immer man dort die einzelnen Variablen identifizieren kann) anpasst!

Ansonsten auch der Hinweis, dass du ja mehrere Objekte gleichzeitig bearbeiten kannst. Sprich, alle Objekte, die du verstecken möchtest auswählen (per Shift oder Strg + Mausklick) und dann nur einmal Objekt bearbeiten und da Objekt anzeigen abwählen.

1 „Gefällt mir“