+ Antworten
Ergebnis 1 bis 2 von 2
  1. #1
    Registriert seit
    Jun 2010
    Ort
    Koblenz
    Beiträge
    235

    Standard Symcon Pflege - alle Variablen mit Name XYZ finden

    Hallo Zusammen,

    ich stand vor der Herausforderung ein neues Variablen-Profil für die Variable UNREACH (Homematic) auszurollen.
    Eine manuelle Änderung kam auf Grund der Vielzahl der Devices und der Verschachtelungstiefe nicht in Frage, darauf hin habe ich folgende Funktion verwendet:

    PHP-Code:
    /***********************************************************************
    $ID: Start-Kategorie in IP-Symcon ab welcher gesucht werden soll. 0 durchsucht die gesamte vorhandene Struktur
    $NAME: String welcher den Variablen-Name enthält
    ************************************************************************/
    function FN_GetAllVariablesByName($ID$NAME)
    {
        global 
    $arResultList;
        
    $InstObj IPS_GetObject($ID);
        
        if (
    IPS_HasChildren($ID)) {
            
    $arVarList[] = IPS_GetChildrenIDs($ID);
            foreach (
    IPS_GetChildrenIDs($ID) as $VarChildID1) {
                if (
    IPS_GetName($VarChildID1) == $NAME)
                    
    $arResultList[] = $VarChildID1;
                
    FN_GetAllVariablesByName($VarChildID1$NAME);
            }
        }
        return 
    $arResultList;

    Um nun pauschal allen UNREACH-Variablen in IP-Symcon ein neues Profil zuzuordnen, kann z.B. folgendes Script verwendet werden:
    PHP-Code:
    <?
    $arResultList
    ;
    $arResultList FN_GetAllVariablesByName(0"UNREACH");
    print_r($arResultList);

    foreach (
    $arResultList as &$value) {
        
    IPS_SetVariableCustomProfile($value"DeviceState.OnlineOffline");
    }

    /***********************************************************************
    $ID: Start-Kategorie in IP-Symcon ab welcher gesucht werden soll. 0 durchsucht die gesamte vorhandene Struktur
    $NAME: String welcher den Variablen-Name enthält
    ************************************************************************/
    function FN_GetAllVariablesByName($ID$NAME)
    {
        global 
    $arResultList;
        
    $InstObj IPS_GetObject($ID);
        
        if (
    IPS_HasChildren($ID)) {
            
    $arVarList[] = IPS_GetChildrenIDs($ID);
            foreach (
    IPS_GetChildrenIDs($ID) as $VarChildID1) {
                if (
    IPS_GetName($VarChildID1) == $NAME)
                    
    $arResultList[] = $VarChildID1;
                
    FN_GetAllVariablesByName($VarChildID1$NAME);
            }
        }
        return 
    $arResultList;
    }
    ?>
    SmartHome: IPS 5.x Stable Unlimited auf RaspberryPi 3b+ / div. HM Produkte (GW: Homematic CCU2) / GHL Profilux III / IPSView / div. Z-Wave Produkte (GW: Fibaro HC2) / NETATMO / 1-Wire
    IT-Infrastruktur: UniFi WIFI / Switches / Firewall, QNAP NAS

  2. #2
    Registriert seit
    Sep 2008
    Ort
    Hamburg
    Beiträge
    1,069

    Etwas sauberer wäre, sich erst alle HM-Instanzen zu holen und darunter jeweils die Variable anhand des Ident (nicht Namen).
    LCN | HM | FS20, HMS und FHT | Arduino | ESP usw.
    "Der RGB-Streifen ist das Arschgeweih der Home Automation. "

Ähnliche Themen

  1. Event zu einer Variablen finden
    Von Jimmy Neutron im Forum Allgemeine Diskussion
    Antworten: 6
    Letzter Beitrag: 03.09.16, 21:30
  2. Alle Links zu einer Variablen finden
    Von dansch im Forum Skripte, PHP, SQL
    Antworten: 15
    Letzter Beitrag: 11.02.15, 16:45
  3. IP Symcon Mobile Version 1.0.4 zeigt nicht alle Variablen!!!
    Von JensHomeautomation im Forum Mobile (iOS/Android)
    Antworten: 1
    Letzter Beitrag: 04.04.12, 14:18
  4. Variablen einer Instanz finden?
    Von atmel im Forum Allgemeine Diskussion (2.x/3.x)
    Antworten: 2
    Letzter Beitrag: 14.03.09, 23:38
  5. Lebensdauer der FHT Systeme Pflege Wartung?
    Von DH0KAI im Forum Allgemeine Diskussion
    Antworten: 11
    Letzter Beitrag: 03.10.07, 19:27