Signalstärke von Aktoren ausgeben

Bei mir ist es genau andersherum; ich brauche nur FS20. ALso habe ich die erste foreach-Schleife gelöscht. Dann schmeißt er mir aber einiges an Fehlern:

Notice:  Undefined index: ConnectionID in C:\IP-Symcon\scripts\46711.ips.php on line 31

Notice:  Undefined index: ConnectionID in C:\IP-Symcon\scripts\46711.ips.php on line 31

Notice:  Undefined index: ConnectionID in C:\IP-Symcon\scripts\46711.ips.php on line 31

Notice:  Undefined index: ConnectionID in C:\IP-Symcon\scripts\46711.ips.php on line 31

Notice:  Undefined index: ConnectionID in C:\IP-Symcon\scripts\46711.ips.php on line 31

Warning:  Variable #32960 existiert nicht in C:\IP-Symcon\scripts\46711.ips.php on line 36

Notice:  Undefined index: ConnectionID in C:\IP-Symcon\scripts\46711.ips.php on line 31

Notice:  Undefined index: ConnectionID in C:\IP-Symcon\scripts\46711.ips.php on line 31

Warning:  Variable #38436 existiert nicht in C:\IP-Symcon\scripts\46711.ips.php on line 36

Notice:  Undefined index: ConnectionID in C:\IP-Symcon\scripts\46711.ips.php on line 31

Notice:  Undefined index: ConnectionID in C:\IP-Symcon\scripts\46711.ips.php on line 31

Notice:  Undefined index: ConnectionID in C:\IP-Symcon\scripts\46711.ips.php on line 31

Notice:  Undefined index: ConnectionID in C:\IP-Symcon\scripts\46711.ips.php on line 31

Geht bei mir ohne Probleme.
Welche FS20 Aktoren hast Du mit Batterie?
Ich habe nur HMS, deshalb ist das Script auch nur für das Modul HMS, solltest Du keine haben mußt Du das natürlich ändern. Sonst melde Dich einfach nochmal wenn Du nicht weiterkommst.

Ich habe FS20 Raumregler und Thermostate …
Interessanterweise sind die beiden Aktoren/Sensoren die den Fehler werfen HM Module?!? Ich habe Dein Script so „angepasst“:

<?

################ Script zur Ausgabe der Batteriestärke von Aktoren #############

$id_html_box    = 13728 /*[Scripte\Signalstärke\Signalstärke]*/  ;
$search_2      = 'Batterie'; //Bezeichnung der Batteriestärke des Aktors
$modul_2          = 'HMS'; //Name des Moduls

################################################################################

$ids = IPS_GetObjectList();
$arr = array();

foreach ($ids as $id)
{

       $name = IPS_GetName($id); //Name des aktuellen Objektes
    if( stristr($search_2, $name) ) //entspricht der Objektname dem des Suchfilters?
    {
      $id_aktor            = IPS_GetParent($id);
      $name_aktor         = IPS_GetName($id_aktor);

      $id_kategorie_1    = IPS_GetParent($id_aktor);
      $name_kategorie_1    = IPS_GetName($id_kategorie_1);

      $id_kategorie_2    = IPS_GetParent($id_kategorie_1);
      $name_kategorie_2    = IPS_GetName($id_kategorie_2);

        $id_gateway            = IPS_GetInstance($id_aktor)['ConnectionID'];
        $name_gateway        = IPS_GetName($id_gateway);

        if(stristr($name_aktor, $modul_2) === FALSE )
        {
           $wert_search   = GetValueBoolean($id);
           if($wert_search)
            {
                $wert_search = 0;
            }
            else
            {
                $wert_search = 100;
            }
         $arr[] = $wert_search.' | '.$id.'|'.$name_aktor.'|'.$name_kategorie_1.'|'.$name_kategorie_2.'|'.$name_gateway;
        }
        else
        {
            //Nichts ausgeben
        }
     }
}

sort($arr);

$html= '<style type="text/css">table.sigqal { width: 100%; border-collapse: true;} table.sigqal td';
$html.='{ border: 1px solid #444455; }</style>';
$html.='<table class="sigqal"><tr> ';
$html.='</td></tr><tr><td>';
$html.='Signalstärke<td>ID<td>Aktor<td>Pfad<td>Pfad<td>Gateway';

$farbe1 = "<td style='background: #333333;' colspan='1'>";
$farbe2 = "<td style='background: #800000;' colspan='1'>";

$empfang_025 = 0;
$empfang_050 = 0;
$empfang_075 = 0;

foreach ($arr as $value)
{
    $html_box = explode("|", $value);

    if($html_box[0] < 26)
    {
        $farbe2 = "<td style='background: #800000;' colspan='1'>";
    }
    elseif($html_box[0] < 76)
    {
       $farbe2 = "<td style='background: #FFB200;' colspan='1'>";
    }
    else
    {
       $farbe2 = "<td style='background: #00B233;' colspan='1'>";
    }

     $html.="<tr>";
    $html.="$farbe2 $html_box[0]%";
    $html.="$farbe1 $html_box[1]";
    $html.="$farbe1 $html_box[2]";
     $html.="$farbe1 $html_box[3]";
   $html.="$farbe1 $html_box[4]";
   $html.="$farbe1 $html_box[5]";
    $html.="</tr>";
    $html.="<tr>";
}
SetValueString($id_html_box, $html);

?>

Wenn ich unter „$modul_2 = ‚HMS‘; //Name des Moduls“ ein „FS20“ eintrage, dann bekomme ich garkeine Ausgabe.

Kann man auch die Signalstärke von FS20 Modulen auslesen?

Welche Signalstärke, die haben doch gar keinen Wert dafür in IPS?

Wenn ich unter „$modul_2 = ‚HMS‘; //Name des Moduls“ ein „FS20“ eintrage, dann bekomme ich garkeine Ausgabe.

Da soll auch nicht FS20 stehen, sondern immer der Typ des Objektes.

Deshalb frage ich ja. :slight_smile:

Ok … ? Und wo finde ich eine Liste mit Objekttypen?

Danke, es funktioniert mit nur noch einem Fehler. Ich bekomme immer noch eine Fehlermeldung von der ConncetionID.

$id_gateway = IPS_GetInstance($id_aktor)[‚ConnectionID‘];

Könnte dies zu tun haben mit der HMS, die ich nicht habe?

Albert

Was kann es damit auf sich haben?

Was kämpft ihr eigentlich rum? Im FS20-System wird keine Signalstärke übertragen. Nur HMS und FHT senden Batterie Status als true/false und dafür gibt es doch das schöne Batteriescript.

Heiner, hier ging es um im wesentlichen um Eaton, nicht um FS20.:wink:

Ok … ? Und wo finde ich eine Liste mit Objekttypen?

Steht immer im Objektbaum neben dem Objekt.

Das sind dann alle:


//Alle Modulnamen mit GUID ausgeben
 
foreach(IPS_GetModuleList() as $guid)
{
$module = IPS_GetModule($guid);
$pair[$module['ModuleName']] = $guid;
}
ksort($pair);
foreach($pair as $key=>$guid)
{
echo $key." = ".$guid."
";
}

Ich bin raus … 1000 Dank für die Unterstützung. :slight_smile:

@Ferengi
Ja ich weiß und deshalb haben mich die Fragen von Honk nach FS20 ,HMS und FHT gewundert. Aber er hatt’s jetzt auch gemerkt.

Das hat nicht wirklich etwas damit zu tun … „Signalstärke von Aktoren ausgeben“ ist das Thema. Es fing tatsächlich mit der Sendestärke von Eaton xcomfort an, schwenkte dann jedoch auf HMS/FS20. Ich dachte ich könnte das Script dazu verwenden die Signalstärke aus FS20 heraus zu bekommen. Es wunderte mich auch schon, dass ich nicht schon vorher etwas davon gehört hatte … bestätigte mich aber, als ich hörte das es gar nicht geht. Das mit dem Batteriestatus aus FS20 heraus (sofern von Komponente unterstützt) wusste ich und hatte ich auch schon abgebildet.
Kurze Rede, langer Sinn: Signalstärke auslesen aus FS20 geht nicht und Batteriestatus auslesen habe ich schon; Eaton xcomfort habe ich nicht; … also bin ich raus. :smiley:

Bei allen wo es nicht läuft:


$id_gateway =  IPS_GetInstance($id_aktor)['ConnectionID'];

durch:


$id_gateway = IPS_GetInstanceParentID($id_aktor);

ersetzen.:cool:

Was müsst ich denn machen um die Temperatur auszugeben .?

Klar beim $search mal Temperature rein schreiben aber dann gibs fehler wegen float, string…

Was muss ich denn alles ändern damits geht…?

GetValueInteger durch GetValueFloat ersetzen. Wenn Fehler kommen diese in Zukunft immer mit Angabe der Fehlermeldung und der ganzen Codezeile posten.

Hallo,

Ich habe ein Fehler nach Upgrade auf IPS 2.6:

Notice: Undefined index: ParentID in C:\IP-Symcon\scripts\17526.ips.php on line 30

30 $id_gateway = $id_gateway[‚ParentID‘];

Was könnte das sein?

Albert

Diese Zeile gibt es nicht in meinem Script.:eek:

Das ist die Special Skript für der Batteriestärke von Aktoren.

Vielleicht das falschen Thema, aber hier ist das Skript.

Albert


<?
################ Script zur Ausgabe der Batteriestärke von Aktoren #############

$id_html_box    = 33282 /*[Scripts\Batterijstatus\Batterij / Voeding status]*/ ;
$search        = 'Battery'; //Bezeichnung der Batteriestärke des Aktors
$modul          = 'xComfort'; //Name des Moduls

################################################################################

$ids = IPS_GetObjectList();
$arr = array();

foreach ($ids as $id)
{

       $name = IPS_GetName($id); //Name des aktuellen Objektes
    if( stristr($search, $name) ) //entspricht der Objektname dem des Suchfilters?
    {

	   $id_aktor            = IPS_GetParent($id);
      $name_aktor         = IPS_GetName($id_aktor);

      $id_kategorie_1    = IPS_GetParent($id_aktor);
      $name_kategorie_1    = IPS_GetName($id_kategorie_1);

      $id_kategorie_2    = IPS_GetParent($id_kategorie_1);
      $name_kategorie_2    = IPS_GetName($id_kategorie_2);

        $id_gateway            = IPS_GetInstance($id_aktor);
		  $id_gateway            = $id_gateway['ParentID'];
        $name_gateway        = IPS_GetName($id_gateway);

        if(stristr($name_aktor, $modul) === FALSE )
        {
        
           $wert_search   = GetValueInteger($id);
           if($wert_search <100) $wert_search = '0'.$wert_search;
         $arr[] = $wert_search.' | '.$id.'|'.$name_aktor.'|'.$name_kategorie_1.'|'.$name_kategorie_2.'|'.$name_gateway;
        }
        else
        {
            //Nichts ausgeben
        }
     }
}

sort($arr);

$html= '<style type="text/css">table.sigqal { width: 100%; border-collapse: true;} table.sigqal td';
$html.='{ border: 1px solid #444455; }</style>';
$html.='<table class="sigqal"><tr> ';
$html.='</td></tr><tr><td>';
$html.='Batterijsterkte<td>Object ID<td>Apparaat / Sensor<td>Ruimte<td>Fabrikant<td>Locatie';

$farbe1 = "<td style='background: #333333;' colspan='1'>";
$farbe2 = "<td style='background: #800000;' colspan='1'>";

$empfang_025 = 0;
$empfang_050 = 0;
$empfang_075 = 0;

foreach ($arr as $value)
{
    $html_box = explode("|", $value);

    if($html_box[0] < 26)
    {
        $farbe2 = "<td style='background: #800000;' colspan='1'>";
    }
    elseif($html_box[0] < 76)
    {
       $farbe2 = "<td style='background: #FFB200;' colspan='1'>";
    }
    else
    {
       $farbe2 = "<td style='background: #00B233;' colspan='1'>";
    }

     $html.="<tr>";
    $html.="$farbe2 $html_box[0]%";
    $html.="$farbe1 $html_box[1]";
    $html.="$farbe1 $html_box[2]";
     $html.="$farbe1 $html_box[3]";
   $html.="$farbe1 $html_box[4]";
   $html.="$farbe1 $html_box[5]";
    $html.="</tr>";
    $html.="<tr>";
}
SetValueString($id_html_box, $html);
?>