Fensterzustand anzeigen

Hallo,

hier dein Scriptteil:

$var = IPS_GetObjectIDByName("STATE", $id); 
        $profil = IPS_GetVariable($var['VariableID']);

IPS_GetObjectIDByName hat als Rückgabewert die ID und kein Array,
also müsste hier deine 2. Zeile so aussehen:

$profil = IPS_GetVariable($var);

Wie gesagt, bei mir liefert die foreach-Schleife keine Fehler.

Gruß,
Christian.

Hallo Christian,

habe Teilerfolge erzielt, danke :smiley:

Momentan hapert es noch bei einem Skript

   if(@IPS_GetObjectIDByName("STATE", $id))
    {
        $var = @IPS_GetObjectIDByName("STATE", $id);
        $profil = IPS_GetVariable($var);
        // Integer Variable
        if(($var['VariableType'] == 1) && ($profil['VariableCustomProfile'] == ""))

Die Auswertung geht nur wenn ich den VariablenTyp auf 0 setze (wobei dann wahrscheinlich nix ausgewertet wird). Irgendwie wird da mit „IPS_GetStatusVariable“ mehr übertragen wie mit den Ersatzbefehlen. Habe die Anleitungen mehrfach studiert und probiert, komme aber zu keinem Ergebnis.

Gruß
Bruno

<?
$bordercolor = "#505050"; // Rahmenfarbe anpassen

$str = "<table style='border-bottom:1px solid $bordercolor' width='100%' cellspacing='0'>";

foreach(IPS_GetInstanceListByModuleID("{EE4A81C6-5C90-4DB7-AD2F-F6BBD521412E}") as $ids)
{
   $id = IPS_GetInstance($ids);
   $ident = @IPS_GetObjectIDByIdent("STATE", $id['InstanceID']);
    if($ident !== false)
   {
      $var = IPS_GetVariable($ident);
      
        // Integer Variable
        if(($var['VariableValue']['ValueType'] == 1) && ($var['VariableCustomProfile'] == "~Window.HM")) // Profil eintragen
        {
             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);
            }
            switch(GetValue($var['VariableID']))
            {
               case 0:
               $img = "<td style='border-width:1px 0 0 1px; border-style:solid; border-color:$bordercolor;' align='center' bgcolor='#202020' width='50px'><img src='user\\icons\\fixed\\FensterGeschlossen.png'></td>";
               $changedID = IPS_GetVariable($var['VariableID']);
               $time = "<td style='border-width:1px 0 0 1px; border-style:solid; border-color:$bordercolor;' align='center' bgcolor='#202020'>".date('d.m.y H:i:s', ($changedID['VariableChanged']))."</td>";
               $value = "<td style='border-width:1px 1px 0 1px; border-style:solid; border-color:$bordercolor;' width='16%' align='center' bgcolor=#004000>geschlossen</td>";
               break;
               case 1:
               $img = "<td style='border-width:1px 0 0 1px; border-style:solid; border-color:$bordercolor;' align='center' bgcolor='#202020' width='38px'><img src='user\\icons\\fixed\\Fenster1_Gekippt32.png'></td>";
               $changedID = IPS_GetVariable($var['VariableID']);
               $time = "<td style='border-width:1px 0 0 1px; border-style:solid; border-color:$bordercolor;' align='center' bgcolor='#202020'>".date('d.m.y H:i:s', ($changedID['VariableChanged']))."</td>";
               $value = "<td style='border-width:1px 1px 0 1px; border-style:solid; border-color:$bordercolor;' width='16%' align='center' bgcolor='#C08800'>gekippt</td>";
               break;
               case 2:
               $img = "<td style='border-width:1px 0 0 1px; border-style:solid; border-color:$bordercolor;' align='center' bgcolor='#202020' width='38px'><img src='user\\icons\\fixed\\Fenster1_Offen32.png'></td>";
               $changedID = IPS_GetVariable($var['VariableID']);
               $time = "<td style='border-width:1px 0 0 1px; border-style:solid; border-color:$bordercolor;' align='center' bgcolor='#202020'>".date('d.m.y H:i:s', ($changedID['VariableChanged']))."</td>";
               $value = "<td style='border-width:1px 1px 0 1px; border-style:solid; border-color:$bordercolor;' width='16%' align='center' bgcolor=#800000>geöffnet</td>";
               break;
            }
            $name = IPS_GetObject($var['VariableID']);
            $str .= "<tr height='38px'>$img<td style='border-top:1px solid $bordercolor' bgcolor='#202020' width='67%'>  ".IPS_GetName(IPS_GetParent($name['ParentID']))." ".IPS_GetName($name['ParentID'])."</td>".$time.$value."</tr>";
        }
        // bool Variable
      if(($var['VariableValue']['ValueType'] == 0) && ($var['VariableCustomProfile'] == "~Window.HM")) // Profil eintragen
      {
         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);
            }
            switch(GetValue($var['VariableID']))
            {
               case 0:
               $img = "<td style='border-width:1px 0 0 1px; border-style:solid; border-color:$bordercolor;' align='center' bgcolor='#202020' width='38px'><img src='user\\icons\\fixed\\Tuer.png'></td>";
               $changedID = IPS_GetVariable($var['VariableID']);
               $time = "<td style='border-width:1px 0 0 1px; border-style:solid; border-color:$bordercolor;' align='center' bgcolor='#202020'>".date('d.m.y H:i:s', ($changedID['VariableChanged']))."</td>";
               $value = "<td style='border-width:1px 1px 0 1px; border-style:solid; border-color:$bordercolor;' width='16%' align='center' bgcolor=#004000>geschlossen</td>";
               break;
               case 1:
               $img = "<td style='border-width:1px 0 0 1px; border-style:solid; border-color:$bordercolor;' align='center' bgcolor='#202020' width='38px'><img src='user\\icons\\fixed\\TuerOffen.png'></td>";
               $changedID = IPS_GetVariable($var['VariableID']);
               $time = "<td style='border-width:1px 0 0 1px; border-style:solid; border-color:$bordercolor;' align='center' bgcolor='#202020'>".date('d.m.y H:i:s', ($changedID['VariableChanged']))."</td>";
               $value = "<td style='border-width:1px 1px 0 1px; border-style:solid; border-color:$bordercolor;' width='16%' align='center' bgcolor='#800000'>geöffnet</td>";
               break;
            }
            $name = IPS_GetObject($var['VariableID']);
            $str .= "<tr height='38px'>$img<td style='border-top:1px solid $bordercolor' bgcolor='#202020' width='67%'>  ".IPS_GetName(IPS_GetParent($name['ParentID']))." ".IPS_GetName($name['ParentID'])."</td>".$time.$value."</tr>";
        }
    }
}
$str .= "</table>";
SetValue(29445 /*[Homematic allgemein\Sensoren\Content]*/, $str);

?>

Guten Abend Rainer,

danke :smiley:

Gruß
Bruno

Hallo,

Ja, so einfach gehts auch :smiley:
Danke :wink:

Rainer ist doch sowohl für kurze und knappe Anwtorten wie auch effizientes Scripting bekannt ?!?#:D:D:D
echt irre…

Er hat uns wohl nimmer zuschauen können :smiley:

Hallo,
mit dem Script

<?
$bordercolor = "#505050"; // Rahmenfarbe anpassen

$str = "<table width='100%' cellspacing='0'>";
//$str .= "<tr><td width='100px'><b>&nbsp&nbspRaum</b></td><td width='380px' align='left'><b>Objekt</b></td><td align='center' width='90px'><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'] == 0)
        {
             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);
            }
            switch(GetValue($var['VariableID']))
            {
               case 0:
               $changedID = IPS_GetVariable($var['VariableID']);
               $time = "<td style='border:1px solid $bordercolor;' align='center' bgcolor='#27292B'>".date('d.m.y H:i:s', ($changedID['VariableChanged']))."</td>";
               $value = "<td style='border:1px solid $bordercolor;' width='16%' align='center' bgcolor=#004000>geschlossen</td>";
               break;
               case 1:
               $changedID = IPS_GetVariable($var['VariableID']);
               $time = "<td style='border:1px solid $bordercolor;' align='center' bgcolor='#27292B'>".date('d.m.y H:i:s', ($changedID['VariableChanged']))."</td>";
               $value = "<td style='border:1px solid $bordercolor;' width='16%' align='center' bgcolor='#C08800'>geöffnet</td>";
               break;
                           }
            $name = IPS_GetObject($var['VariableID']);
            $str .= "<tr height='38px'><td style='border:1px solid $bordercolor;' bgcolor=#27292B width='71%'>".IPS_GetName(IPS_GetParent($name['ParentID']))." ".IPS_GetName($name['ParentID'])."</td>".$time.$value."</tr>";
        }
    }
}
$str .= "</table>";
SetValue(16592 /*[HomeMatic\Tuerenstatus]*/ , $str);

?>

sehe ich den Status der Türen, allerdings auch den Status der Steckdosenschalter.
Wie bekomme ich das weg?

Gruß Konny

indem Du das Profil abfragst oder auf 2.5 updatetest und ein Ident vergibst welcher dann eindeutig ist oder das Script ein paar Seiten weiter vorne nimmst.

Ich hatte gerne ein nettes Datei gemacht, wo Ich genau und übersichtlich sehen kann wenn ein Tür (mit HomeMatic Türkontakt) geöffnet und wieder geschlössen würde. Also kein Graph, aber ein richtiges Logbestand. Kann jemand mir helfen?

zB
HAUSTÜR
07/03/2012 07:00 Offen
07/03/2012 07:01 Geschlossen
07/03/2012 07:05 Offen
usw

Vielleicht gefällt Dir das.

Eventuelle Anpassung an die V2.5 bitte selbst durchführen.

Hallo,

ich habe das modifizierte Script von khc, Seite 7, kopiert und für 2 TK testweise zum laufen gebracht. Mir waren die Zeiten wichtig.

Auch reagiert es auf Änderungen, ich bin stolz das ich das hinbekommen habe… obwohl das alles nicht von mir ist…
Dank an das Super Forum, ich habe es bis jetzt nicht bereut IPS gekauft zu haben!

Leider wird bei der Variablenbezeichung der komplette Pfad angezeigt, ich weiß nicht ob man das ändern kann?

Screenshot anbei.

Wo liegt mein Fehler?

Kann mir jemand helfen?

Gruß
Jürgen

die Zeile :

$ArrValues["Location"] = IPS_GetLocation(IPS_GetParent($varId)); 

tut das…kann man in

$ArrValues["Location"] = IPS_GetName(IPS_GetParent($varId)); 

ändern

Ohne Gewähr da aus dem Kopf aber damit solltest du klar kommen

Hallo dapor, das war die Lösung!
Danke.

Gruss Jürgen

…gerne.

Man kann auch die Sinnhaftigkeit von „Aus“ für ein geschlossenes Fenster anmerken. :confused:

Ich finde „geschlossen“ besser :smiley:

Gebe ich dir vollkommen Recht! werde ich ändern. :smiley:

Hallo!

ich habe dieses Script im Einsatz nur leider wird kein Status mehr angezeigt seit dem Update auf IPSymcon 4.0
Ist das erklärbar?

lg
Christian

siehe Anpassungen weiter oben!
Ansonsten mal eine genaue Fehlermeldung posten.

Hallo Werner,

nachdem ich das Update auf 4.0. gemacht habe sehe ich die Fensterabfrage im Handy und IPad
kannst du mir da helfen da diese Funktion echt genial ist

Danke

lg
CHristian

hallo

hier noch die Fehlermeldung