# Scripte kürzen - HM Komponentenarten "auf einmal" abfragen

**URL:** <https://community.symcon.de/t/scripte-kuerzen-hm-komponentenarten-auf-einmal-abfragen/23266>\
**Category:** HomeMatic\
**Created:** [22. Oktober 2010 um 13:54 UTC](https://community.symcon.de/t/scripte-kuerzen-hm-komponentenarten-auf-einmal-abfragen/23266 "2010-10-22T13:54:10Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![Bernardo71](https://community.symcon.de/user_avatar/community.symcon.de/bernardo71/32/135_2.png) [@Bernardo71](https://community.symcon.de/u/Bernardo71)\
**Post date:** [22. Oktober 2010 um 13:54 UTC](https://community.symcon.de/t/scripte-kuerzen-hm-komponentenarten-auf-einmal-abfragen/23266/1 "2010-10-22T13:54:10Z")

</div>

Hallo zusammen,

aktuell muss ich, aufgrund meiner limitierten PHP Möglichkeiten, immer einzeln mit der entsprechenden ID und getvalue in den Skripten die Stati von z.B. meinen Fenster-Drehgriffen abfragen, um z.B. Alarmmeldungen zu generieren.

Gibt es eine Möglichkeit eine beliebige Summe von Fenster-Drehgriffen über irgendeinen PHP Trick / eine PHP Abfrage so abzufragen, dass ich Griffe meinem System hinzufügen kann, ohne immer alle Scripte einzeln nachführen zu müssen.

So in der Art Getdevice „Type“ Status in einer PHP Zeile nur für die Instanzen der Fensterkontakte oder nur für Türkontakte usw…

Das würde sicherlich die Skripte um einiges einfacher machen und vor allen Dingen neue Kontakte automatisch mit hinzufügen.

Was sagen die PHP Meister dazu ?

Gruss  
B71

---

<div class="post-metadata">

**Author:** ![UVoigi](https://community.symcon.de/letter_avatar_proxy/v4/letter/u/a8b319/32.png) [@UVoigi](https://community.symcon.de/u/UVoigi)\
**Post date:** [22. Oktober 2010 um 15:28 UTC](https://community.symcon.de/t/scripte-kuerzen-hm-komponentenarten-auf-einmal-abfragen/23266/2 "2010-10-22T15:28:59Z")

</div>

Vieleicht meinst Du soetwas?

```php
<?

$Com = 51190 /*[Tools\EDIP\XBee Device-Edip-Wohnz]*/;

$bad = GetValueInteger(29629 /*[Räume\Fenstergriffe-Hoppe\FG_Badezimmer\Status]*/);
$bueroli = GetValueInteger(29202 /*[Räume\Fenstergriffe-Hoppe\FG_Buero_Links\Status]*/);
$buerore = GetValueInteger(33161 /*[Räume\Fenstergriffe-Hoppe\FG_Buero_Rechts\Status]*/);
$dennis = GetValueInteger(13235 /*[Räume\Fenstergriffe-Hoppe\FG_Dennis\Status]*/);
$essz = GetValueInteger(45984 /*[Räume\Fenstergriffe-Hoppe\FG_Esszimmer\Status]*/);
$essz1 = GetValueInteger(16670 /*[Räume\Fenstergriffe-Hoppe\FG_Esszimmer_1\Status]*/);
$essz2 = GetValueInteger(59949 /*[Räume\Fenstergriffe-Hoppe\FG_Esszimmer_2\Status]*/);
$gast = GetValueInteger(42359 /*[Räume\Fenstergriffe-Hoppe\FG_Gastezimmer\Status]*/);
$kammer = GetValueInteger(58167 /*[Räume\Fenstergriffe-Hoppe\FG_Kammer\Status]*/);
$kueche = GetValueInteger(49688 /*[Räume\Fenstergriffe-Hoppe\FG_Kueche\Status]*/);
$schlafz = GetValueInteger(38896 /*[Räume\Fenstergriffe-Hoppe\FG_Schlafzimmer\Status]*/);
$wc = GetValueInteger(31834 /*[Räume\Fenstergriffe-Hoppe\FG_WC\Status]*/);
$wohnz = GetValueInteger(54377 /*[Räume\Fenstergriffe-Hoppe\FG_Wohnzimmer\Status]*/);
$wohnz1 = GetValueInteger(57641 /*[Räume\Fenstergriffe-Hoppe\FG_Wohnzimmer_1\Status]*/);
$wohnz2 = GetValueInteger(30447 /*[Räume\Fenstergriffe-Hoppe\FG_Wohnzimmer_2\Status]*/);

$offen = array($bad, $bueroli, $buerore, $dennis, $essz, $essz1, $essz2, $gast, $kammer, $kueche, $schlafz, $wc, $wohnz, $wohnz1, $wohnz2);

//echo $ez." ".$ku." ".$wz_t." ".$wz_f;

if ((in_array("2", $offen)) or (in_array("0", $offen)))
{
   echo "Ein Fenster ist offen"; 
  
}
else
{
   if (in_array("3", $offen)) {
      echo "Ein Fenster ist gekippt"; 
      
   }
   else
   {
      echo "Alle Fenster zu";  
      
   }
}

?>

```

und von jedem Griff ein Ereignis bei Änderung mit rein packen.

---

<div class="post-metadata">

**Author:** ![RWN](https://community.symcon.de/user_avatar/community.symcon.de/rwn/32/125_2.png) [@RWN](https://community.symcon.de/u/RWN)\
**Post date:** [22. Oktober 2010 um 16:15 UTC](https://community.symcon.de/t/scripte-kuerzen-hm-komponentenarten-auf-einmal-abfragen/23266/3 "2010-10-22T16:15:37Z")

</div>

Hallo Bernd,

hiermit hast Du den Zustand von STATE, beim Fenstergriff und Schaltaktor mit VariablenID.

```php
foreach(IPS_GetInstanceListByModuleID("{EE4A81C6-5C90-4DB7-AD2F-F6BBD521412E}") as $id)
{
   if(IPS_StatusVariableExists($id, "STATE"))
    {
        $var = IPS_GetStatusVariable($id, "STATE");
        // Integer Variable
        if($var['VariableType'] == 1)
        {
            $value = GetValue($var['VariableID']);
            echo $var['VariableID']." ".$value."
";
        }
        // bool Variable
        if($var['VariableType'] == 0)
        {
            $value = GetValue($var['VariableID']);
            echo $var['VariableID']." ".(int)$value."
";
        }
    }
}

```

---

<div class="post-metadata">

**Author:** ![Bernardo71](https://community.symcon.de/user_avatar/community.symcon.de/bernardo71/32/135_2.png) [@Bernardo71](https://community.symcon.de/u/Bernardo71)\
**Post date:** [22. Oktober 2010 um 17:55 UTC](https://community.symcon.de/t/scripte-kuerzen-hm-komponentenarten-auf-einmal-abfragen/23266/4 "2010-10-22T17:55:58Z")

</div>

Seht Ihr…man muss nur mal fragen…

Vielen Dank. Ich werde das am Wochenende mal einbauen.  
Eines ist sicher…ich werde Fragen haben 😃

Gruss  
B71

---

<div class="post-metadata">

**Author:** ![RWN](https://community.symcon.de/user_avatar/community.symcon.de/rwn/32/125_2.png) [@RWN](https://community.symcon.de/u/RWN)\
**Post date:** [22. Oktober 2010 um 18:03 UTC](https://community.symcon.de/t/scripte-kuerzen-hm-komponentenarten-auf-einmal-abfragen/23266/5 "2010-10-22T18:03:03Z")

</div>

Hier noch eines zur Anzeige im Webfront.  
Stringvariable anlegen und ID unten eintragen.

```php
<?
$str = "<table width='100%' border='0' align='center'>";
$str .= "<tr bgcolor=#505050><td><b>&nbsp&nbspRaum</b></td><td align='center'><b>Typ</b></td><td align='center'><b>Status</b></td></tr>";
foreach(IPS_GetInstanceListByModuleID("{EE4A81C6-5C90-4DB7-AD2F-F6BBD521412E}") as $id)
{
   if(IPS_StatusVariableExists($id, "STATE"))
    {
        $var = IPS_GetStatusVariable($id, "STATE");
        // Integer Variable
        if($var['VariableType'] == 1)
        {
             if(@IPS_GetEventIDByName("Event".$var['VariableID'], $IPS_SELF) === false)
            {
                  $ereignis = IPS_CreateEvent(0);
                  IPS_SetEventTrigger($ereignis, 1, $var['VariableID']);
                  IPS_SetParent($ereignis, $IPS_SELF);
                  IPS_SetName($ereignis, "Event".$var['VariableID']);
                  IPS_SetEventActive($ereignis, true);
            }
            $value = GetValue($var['VariableID']);
            switch($value)
            {
               case 0:
               $value = "geschlossen";
               break;
               case 1:
               $value = "gekippt";
               break;
               case 2:
               $value = "geöffnet";
               break;
            }
            $name = IPS_GetObject($var['VariableID']);
            $str .="<tr bgcolor=#C08800><td>&nbsp&nbsp".IPS_GetName(IPS_GetParent($name['ParentID']))."</td><td align='center'>".IPS_GetName($name['ParentID'])."</td><td align='center'>".$value."</td></tr>";
        }
    }
}
$str .= "</table>";
SetValue(29445, $str);

?>

```

 ![sensoren.png](https://community.symcon.de/uploads/default/original/3X/a/6/a6a3aa8beb07e2c75f7bca8078acc31ae963f653.png)

---

<div class="post-metadata">

**Author:** ![UVoigi](https://community.symcon.de/letter_avatar_proxy/v4/letter/u/a8b319/32.png) [@UVoigi](https://community.symcon.de/u/UVoigi)\
**Post date:** [22. Oktober 2010 um 18:10 UTC](https://community.symcon.de/t/scripte-kuerzen-hm-komponentenarten-auf-einmal-abfragen/23266/6 "2010-10-22T18:10:44Z")

</div>

Hy Rainer,  
auch nicht schlecht.

Ups sehe grad wir sind ja hier in HomeMatic.:o

---

<div class="post-metadata">

**Author:** ![RWN](https://community.symcon.de/user_avatar/community.symcon.de/rwn/32/125_2.png) [@RWN](https://community.symcon.de/u/RWN)\
**Post date:** [22. Oktober 2010 um 19:05 UTC](https://community.symcon.de/t/scripte-kuerzen-hm-komponentenarten-auf-einmal-abfragen/23266/7 "2010-10-22T19:05:43Z")

</div>

ich habe oben noch den Trigger hinzugefügt. Die Event werden automatisch hinzugefügt bei Variablenänderung.

---

<div class="post-metadata">

**Author:** ![kronos](https://community.symcon.de/user_avatar/community.symcon.de/kronos/32/29620_2.png) [@kronos](https://community.symcon.de/u/kronos)\
**Post date:** [24. November 2010 um 13:55 UTC](https://community.symcon.de/t/scripte-kuerzen-hm-komponentenarten-auf-einmal-abfragen/23266/8 "2010-11-24T13:55:45Z")

</div>

Damit zeigt er auch Zwischstecker, Unterputzaktoren und noch ein bischen mehr an - leider.

---

<div class="post-metadata">

**Author:** ![RWN](https://community.symcon.de/user_avatar/community.symcon.de/rwn/32/125_2.png) [@RWN](https://community.symcon.de/u/RWN)\
**Post date:** [24. November 2010 um 14:05 UTC](https://community.symcon.de/t/scripte-kuerzen-hm-komponentenarten-auf-einmal-abfragen/23266/9 "2010-11-24T14:05:07Z")

</div>

das denk ich mir. 🙂 Da wird man noch mal filtern müssen.

setz mal ein print\_r($var); und schau mal was der Fensterkontakt(e) ist.

```php
// bool Variable
        if($var['VariableType'] == 0)
        {
            print_r($var);
            $value = GetValue($var['VariableID']);
            echo $var['VariableID']." ".(int)$value."
";
        }

```

---

<div class="post-metadata">

**Author:** ![kronos](https://community.symcon.de/user_avatar/community.symcon.de/kronos/32/29620_2.png) [@kronos](https://community.symcon.de/u/kronos)\
**Post date:** [24. November 2010 um 14:08 UTC](https://community.symcon.de/t/scripte-kuerzen-hm-komponentenarten-auf-einmal-abfragen/23266/10 "2010-11-24T14:08:59Z")

</div>

Huch, in falschem Thread gelandet. Sorry.

---

<div class="post-metadata">

**Author:** ![RWN](https://community.symcon.de/user_avatar/community.symcon.de/rwn/32/125_2.png) [@RWN](https://community.symcon.de/u/RWN)\
**Post date:** [24. November 2010 um 14:13 UTC](https://community.symcon.de/t/scripte-kuerzen-hm-komponentenarten-auf-einmal-abfragen/23266/11 "2010-11-24T14:13:12Z")

</div>

egal, ist das selbe. 😉

Was sagt dein print\_r ?

---

<div class="post-metadata">

**Author:** ![kronos](https://community.symcon.de/user_avatar/community.symcon.de/kronos/32/29620_2.png) [@kronos](https://community.symcon.de/u/kronos)\
**Post date:** [24. November 2010 um 14:19 UTC](https://community.symcon.de/t/scripte-kuerzen-hm-komponentenarten-auf-einmal-abfragen/23266/12 "2010-11-24T14:19:13Z")

</div>

Auf Anhieb mal nicht wirklich etwas brauchbares drin (nur ein Auszug):

```
[VariableHasAction] =&gt; 1
[VariableID] =&gt; 58275
[VariableIdent] =&gt; STATE
[VariableName] =&gt; STATE
[VariablePosition] =&gt; 0
[VariableProfile] =&gt; ~Switch
[VariableType] =&gt; 0
[VariableUseAction] =&gt; 1

```

Das Variablen-Profil sah erst vielversprechend aus aber er zeigt da nur das Standardprofil an und nicht das welches man selbst zugeordnet hat. Das sehe ich BUG an. Ansonsten wäre die Zuordnung einfach gewesen da ich wegen eigener Icons sowieso eigene Profile angelegt und zugeordnet habe.

---

<div class="post-metadata">

**Author:** ![RWN](https://community.symcon.de/user_avatar/community.symcon.de/rwn/32/125_2.png) [@RWN](https://community.symcon.de/u/RWN)\
**Post date:** [24. November 2010 um 14:27 UTC](https://community.symcon.de/t/scripte-kuerzen-hm-komponentenarten-auf-einmal-abfragen/23266/13 "2010-11-24T14:27:22Z")

</div>

probier es mal hiermit, ob es einen Unterschied gibt.

[IPS\_GetVariableProfile: IP-Symcon :: Automatisierungssoftware](http://www.ip-symcon.de/service/dokumentation/befehlsreferenz/variablenverwaltung/variablenprofile/ips-getvariableprofile/)

---

<div class="post-metadata">

**Author:** ![kronos](https://community.symcon.de/user_avatar/community.symcon.de/kronos/32/29620_2.png) [@kronos](https://community.symcon.de/u/kronos)\
**Post date:** [24. November 2010 um 14:43 UTC](https://community.symcon.de/t/scripte-kuerzen-hm-komponentenarten-auf-einmal-abfragen/23266/14 "2010-11-24T14:43:54Z")

</div>

Da kommt so etwas raus:

[Digits] =\> 1  
[Icon] =\> WindDirection  
[IsReadOnly] =\> 1  
[MaxValue] =\> 360  
[MinValue] =\> 0  
[Prefix] =\>  
[ProfileName] =\> ~WindDirection  
[ProfileType] =\> 2  
[StepSize] =\> 60  
[Suffix] =\> °

So lange ich nicht irgendwo die Brücke zur passenden Variable schlagen kann kann ich den Profilnamen nicht als Kennzeichen von State auswerten.

Eventuell über das HM-Inventory-Script - da kommen ja auch die Typen der HM-Instanzen raus. Aber da fehlt dann glaube ich wieder die Brücke zu einer IPS-Instanz.

Das wächst sich zu einer Machbarkeitsstudie aus.

---

<div class="post-metadata">

**Author:** ![RWN](https://community.symcon.de/user_avatar/community.symcon.de/rwn/32/125_2.png) [@RWN](https://community.symcon.de/u/RWN)\
**Post date:** [24. November 2010 um 15:44 UTC](https://community.symcon.de/t/scripte-kuerzen-hm-komponentenarten-auf-einmal-abfragen/23266/15 "2010-11-24T15:44:28Z")

</div>

> Das Variablen-Profil sah erst vielversprechend aus aber er zeigt da nur das Standardprofil an und nicht das welches man selbst zugeordnet hat. Das sehe ich BUG an.

Das sehe ich genauso oder die Beschreibung stimmt nicht. Machst Du einen Bug Report dazu auf.

Als Workaround die 2 Profile vergleichen. Mit IPS\_GetVariableprofile zeigt er es nämlich richtig an.

---

<div class="post-metadata">

**Author:** ![kronos](https://community.symcon.de/user_avatar/community.symcon.de/kronos/32/29620_2.png) [@kronos](https://community.symcon.de/u/kronos)\
**Post date:** [24. November 2010 um 16:11 UTC](https://community.symcon.de/t/scripte-kuerzen-hm-komponentenarten-auf-einmal-abfragen/23266/16 "2010-11-24T16:11:41Z")

</div>

Ok, BUG-Report ist erstellt. Mal sehen was passiert.

---

<div class="post-metadata">

**Author:** ![kronos](https://community.symcon.de/user_avatar/community.symcon.de/kronos/32/29620_2.png) [@kronos](https://community.symcon.de/u/kronos)\
**Post date:** [24. November 2010 um 16:19 UTC](https://community.symcon.de/t/scripte-kuerzen-hm-komponentenarten-auf-einmal-abfragen/23266/17 "2010-11-24T16:19:35Z")

</div>

Macht wirklich Spaß hier. Danke für Deine Zeit.

---

<div class="post-metadata">

**Author:** ![RWN](https://community.symcon.de/user_avatar/community.symcon.de/rwn/32/125_2.png) [@RWN](https://community.symcon.de/u/RWN)\
**Post date:** [24. November 2010 um 16:27 UTC](https://community.symcon.de/t/scripte-kuerzen-hm-komponentenarten-auf-einmal-abfragen/23266/18 "2010-11-24T16:27:32Z")

</div>

jetzt aber, hatte die hälfte vergessen. 😕

```php
$profID = IPS_GetVariable($var['VariableID']);
        $prof = $profID['VariableCustomProfile'];
        // bool Variable
      if(($var['VariableType'] == 0) && ($prof == "umschalten")) // Profil eintragen
      {

```

---

<div class="post-metadata">

**Author:** ![hrahlers](https://community.symcon.de/letter_avatar_proxy/v4/letter/h/58956e/32.png) [@hrahlers](https://community.symcon.de/u/hrahlers)\
**Post date:** [4. Juli 2011 um 19:58 UTC](https://community.symcon.de/t/scripte-kuerzen-hm-komponentenarten-auf-einmal-abfragen/23266/19 "2011-07-04T19:58:21Z")

</div>

Hallo,

beim Stöbern und Suchen nach Lösungsansätzen für mein nächstes Vorhaben bin ich auf diesen Thread gekommen, der ja schon älter ist, aber für meine Anfrag geeignet scheint.

Nachdem ich meine Fensterkontakte durch ein eiziges Script auswerten und Zustandsänderungen in eine MySql-DB schreiben lasse, möchte ich selbiges mit der HM-Tasterschnittstelle machen.

Dabei bildet das hier [http://www.ip-symcon.de/forum/f50/scripte-kuerzen-hm-komponentenarten-einmal-abfragen-11888/#post99036](http://www.ip-symcon.de/forum/f50/scripte-kuerzen-hm-komponentenarten-einmal-abfragen-11888/#post99036) das Herzstück des Ganzen. Nun gibt es bei den Tastern keine Statusvariable, die sich ändert, sondern nur der Zeitstempel. Lässt sich diese Tasterschnittstelle relativ eindeutig identifizieren? Laut Datenpunkten für HM sind PRESS\_SHORT, PRESS\_LONG und INSTALL\_TEST auch in vielen Geräten vorhanden. Hat da jemand schon was gemacht? Nach einigem Lesen und Probieren finde ich die Möglichkeit, HM-Geräte ähnlicher Natur (Taster, Fernbed., Wandtaster etc.) mit nur einem Script auszuwerten ziemlich genial und effizient.

---

<div class="post-metadata">

**Author:** ![REDBANDITO](https://community.symcon.de/user_avatar/community.symcon.de/redbandito/32/404_2.png) [@REDBANDITO](https://community.symcon.de/u/REDBANDITO)\
**Post date:** [18. August 2011 um 22:15 UTC](https://community.symcon.de/t/scripte-kuerzen-hm-komponentenarten-auf-einmal-abfragen/23266/20 "2011-08-18T22:15:04Z")

</div>

Hallo zusammen,

kurze Frage, wieso kann ich eigentlich beim Script von Bmwm3 mir zum Schluss den Wert vom Script nicht in einer String Variable ausgeben lassen?

Mit SetValueString(varID,$offen); sagt mir Ips immer:

Wrong parameter type for SetValueString () in [Test] on line 25

Was mache ich hier falsch? Den Wert vom Script spukt er mir ja aus aber ich will es aber in der variable angezeigt bekommen.

Gruss

[Nächste Seite](https://community.symcon.de/t/scripte-kuerzen-hm-komponentenarten-auf-einmal-abfragen/23266.md?page=2)
