Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
externe Einflußnahme z.B. via http(s)-URL
24-11-2015, 10:24
Beitrag: #1
externe Einflußnahme z.B. via http(s)-URL
Hallo,

nachdem meine Anlage nun läuft und wir uns daran gewöhnen, besteht der Wunsch, die Anlage an das bestehende Heimsystem zu koppeln und einige Daten auszulesen:

- Statusänderungen bei den Sensoren wie z.B. Fensterkontakten
- Scharf-/Unscharfschaltungen
- Alarmierungen

Dabei wäre auch eine Möglichkeit interessant, die Anlage remote zu schalten via URL.

Gibt es soetwas? Oder gibt es sogar eine php-API (habe ich bisher allerdings nicht gefunden)?

Mfg
Andreas.

Gruß
Andreas.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
24-11-2015, 10:34
Beitrag: #2
RE: externe Einflußnahme z.B. via http(s)-URL
warum so kompliziert und nicht via Lupus - App?

Wahre Männer lesen keine Bedienungsanleitung!
Erfahrung ist eine nützliche Sache.
Leider macht man sie immer erst kurz nachdem man sie brauchte. (Goethe)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
24-11-2015, 23:03
Beitrag: #3
RE: externe Einflußnahme z.B. via http(s)-URL
Weil die Automation (Windows-Dienst) die App leider nicht bedienen kann.Rolleyes Wohl aber http-Request empfangen und lesen kann, über die mit der Anlage kommuniziert werden könnte.

Gruß
Andreas.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
12-03-2016, 23:06
Beitrag: #4
RE: externe Einflußnahme z.B. via http(s)-URL
Eigentlich sollte man da mit Wireshark den Daten auf die schliche kommen. Eine Integration in FHEM oder OpenHAB wäre wirklich eine schöne Möglichkeit den Nutzen zu maximieren.

Eigentlich fliegen die Daten ja via AJAX hin und her, man müsste sich die Arbeit machen und das mal analysieren, oder Lupus erkannt hier auch einen Mehrwert und erklärt den Datenaustausch ein wenig.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14-03-2016, 09:51
Beitrag: #5
RE: externe Einflußnahme z.B. via http(s)-URL
Hallo,

scheinbar hat die Lupusec eine REST-API. Bin heute morgen zufällig im IP-Symcom-Forum darüber gestolpert:
https://www.symcon.de/forum/threads/2968...s-auslesen

Welches Homeautomation-System benutzt du? Ich werde mir auch eine XT2 zulegen und versuchen, diese mit openHAB zu koppeln.

Gruß!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26-01-2019, 01:41
Beitrag: #6
RE: externe Einflußnahme z.B. via http(s)-URL
Konnte schon jemand die Verbindung zwischen Lupusec und openHab herstellen? Per REST API? Binding?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
27-01-2019, 00:47
Beitrag: #7
RE: externe Einflußnahme z.B. via http(s)-URL
Wenn man es denn unbedingt möchte (will hier keine Diskussion über Sinn oder Unsinn entfalten), funktioniert das gewünschte problemlos über ioBroker...
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
28-01-2019, 09:35
Beitrag: #8
RE: externe Einflußnahme z.B. via http(s)-URL
Hatte schon mal was gefunden und dann runtergebrochen auf eigene Anwendung. Man braucht einen PHP-fähigen Webserver im Intranet (Netzwerk-Festplatte oder so, hier ist es eine Synology)
Darauf folgender Beispielscript löst Regeln in der XT2 aus:
PHP-Code:
<html>

<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<
title>Lupusec XT2 Command Answer</title>
</
head>
<
body>
  
<?
// Dieses Script löst Regeln aus, Aufruf: http://Server-IP/LupusExecute.php?Regel=10

include 'LupusCredentials.php';

/* weitere REST-Befehle:

allg. Infos      /action/welcomeGet
Ereignisliste    /action/recordListGet
div. setzen auch möglich.....

*/

// -----------------------------------------------------------------------------
// ab hier ist nichts mehr anzupassen

// Login
$ch curl_init();
curl_setopt($chCURLOPT_URL,$url);
curl_setopt($chCURLOPT_TIMEOUT5); //timeout after 30 seconds
curl_setopt($chCURLOPT_RETURNTRANSFER,1);
curl_setopt($chCURLOPT_HTTPAUTHCURLAUTH_ANY);
curl_setopt($chCURLOPT_USERPWD"$username:$password");

$result=curl_exec ($ch);
if ( 
$result == false ) {

     echo 
"Anlage ausser Betrieb...";
     die;
}

if ( isset(
$_GET['Regel'])) {
  
$Action $_GET['Regel'];
} else {
  echo 
"Parameter Missing...";
  die;
}    

// Befehl ausführen
$Command "http://".$ip."/action/haExecute?ha=".$Action;  // siehe Lupus-Webseite und dann F12 im Browser

curl_setopt($chCURLOPT_URL,$Command);

$res=curl_exec ($ch);
echo 
"<br/>Result:".$res;

?> 
</body>

</html> 
die Credentials dann noch:
PHP-Code:
<?php
// Variablen definieren
$username     'Admin account name'
$password     'passwort im Klartext';
$ip            'XT2-IP';
$url             'http://'.$ip.'/';
?>

Aufruf: http://Server-IP/LupusExecute.php?Regel=10

Die Authentifizierung ist damit klar, weiteres kann man sogar einfach im Browser in der Entwicklerkonsole auslesen, wenn man die XT2-Webseite benutzt.

Bei bedarf suche ich noch meine Statusanzeige raus (Fenster offen/zu, Batterie,...)

Vielleicht hilft es ja jemnad auch weiter.

Gruß, Christian
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
31-01-2019, 09:01
Beitrag: #9
RE: externe Einflußnahme z.B. via http(s)-URL
Hallo Christian,

das Skript für die Statusanzeige fände ich super...

Viele Grüße
pamp
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
31-01-2019, 09:44
Beitrag: #10
RE: externe Einflußnahme z.B. via http(s)-URL
Ok, hier die Statusanzeige. Auch das ist runtergebrochen direkt auf meine Bedürfnisse. Wer ein bischen PHP/HTML kann, kann sich das natürlich weiter anpassen. (Hint: Credentials wie weiter oben erwähnt)

Code:
<html>
<head>
<META HTTP-EQUIV="refresh" CONTENT="60">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Lupusec XT2 Status</title>
</head>
<body bgcolor="#FFFFFF" text="#000000" link="#999999" vlink="#990000" alink="#666666"><!--mstheme--><font face="Arial, Arial, Helvetica">
  
<style type="text/css">    
    body  {
        background-color:#ddd;
        font-family: Arial, 'Arial', sans-serif;
    }
    
    .sensortable
    {
        width:100%;
        font-weight:normal;
        font-size:12;
        border: 1px solid black;
    }
    .statustable
    {
        width:100%;
        font-weight:bold;
        font-size:14;
        border: 1px solid black;
    }
    .armtable
    {
        width:100%;
        font-weight:bold;
        font-size:24;
        border: 1px solid black;
        padding: 30px;
    }
    
table {
    border-collapse: collapse;
}

table, th, td {
    border: 0px solid black;
}
th, td {
   padding: 0px 3px 0px 3px;
}
</style>  

<?
// Dieses Script liest die Sensoren und deren Daten aus einer Lupus XT2 Plus aus und stellt die Stati in einer Tabelle im Webfront dar


include 'LupusCredentials.php';

// Gerätetypen
$typen         = array("4" => "Türkontakt", "16" => "Tag Reader", "37" => "Keypad", "46" => "Sirene");

// -----------------------------------------------------------------------------
// ab hier ist nichts mehr anzupassen

// Login
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_TIMEOUT, 5); //timeout after 30 seconds
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");

$result=curl_exec ($ch);

    if ( $result == false ) {

         $bkcolor="red";
         $color="white";
         $Modus = 'Anlage ausser Betrieb';

         $html .= "<table class='statustable'>";
         $html .= "<tr bgcolor='{$bkcolor}' style='font-size:24; color:{$color};'>";
         $html .= "<td align='center' ><b><br/>{$Modus}<br/>&nbsp;</b></td></tr>";      

         $html .= "</table>";

         echo $html;
         die;
    }


// Sensorliste lesen
$sensorliste = "http://".$ip."/action/deviceListGet";

curl_setopt($ch, CURLOPT_URL,$sensorliste);
$result=curl_exec ($ch);

// Umwandeln von JSON in ein Array
$result = str_replace("\t", "", $result);
$json_sens = json_decode($result, true);


$generalstatus = "http://".$ip."/action/panelCondGet";

curl_setopt($ch, CURLOPT_URL,$generalstatus);
$result=curl_exec ($ch);

curl_close ($ch);

$result = str_replace("\t", "", $result);
$json_stat = json_decode($result, true);

$updates = $json_stat['updates'];
$gsm_ok = $updates['sig_gsm_ok'];
$gsm_signal = $updates['sig_gsm'];
if ( $gsm_ok == "1" ) {
    $gsm_ok = 'Ok';
} else  {
    $gsm_ok = 'Fehler!';
    $gsm_signal = "0";
}
if ($gsm_signal == '{WEB_MSG_NA}' ){
    $gsm_ok = 'Fehler 2!';
    $gsm_signal = "0";
}


$Forms = $json_stat['forms'];
$Area1 = $Forms['pcondform1'];

$mode1 = $Area1['mode'];  // Modus: 0 unscharf, 1 scharf, 2 home1, 3 home2, 4 home3



// jeweilge Zone als Index des neuen Arrays $sensoren verwenden und dieses nach Index (=Zone) sortieren
foreach ($json_sens['senrows'] as $sensor)
    {
   $zone = $sensor['zone'];
   $sensoren[$zone] = $sensor;
     }
ksort($sensoren);



// HTML-Ausgabe erstellen
$html = "\n<table class='sensortable'>\n";
$html .= "\n<tr>\n<td><b>Sensor</b></td>\n<td><b>offen</b></td>\n<td><b>Batt.</b></td>\n<td><b>Funk</b></td>\n</tr>\n";

foreach ($sensoren as $sensor)
    {
        $status = @GetTextBetween($sensor['status'], '{WEB_MSG_DC_', '}');
        if ( $status != "" ) {
          $html .= SensorOut( 0, $sensor );
        }
    }
    $html .= "\n</table>\n";
    $html .= "\n<table class='sensortable'>\n";
    $html .= "\n<tr>\n<td><b>Sensor+Batt.</b></td>\n\n<td><b>Funk</b></td>\n<td style='border-left: 1px solid black;' ><b>Sensor+Batt.</b></td>\n\n<td><b>Funk</b></td>\n</tr>\n";

$col = 0;    
foreach ($sensoren as $sensor)
    {
        $status = @GetTextBetween($sensor['status'], '{WEB_MSG_DC_', '}');
        if ( $status == "" ) {
          if ( $col == 0 )  $html .= "\n<tr>";    
          $html .= SensorOut( 1, $sensor );
          if ( $col == 1 )  $html .= "\n</tr>\n";    
          $col = 1- $col;
        }
    }

    $html .= "\n</table>\n";


// Armierung Status
    $bkcolor="lime";
    $color="black";
    $Modus = "unscharf";
    switch ($mode1) {
        case "0":
            $bkcolor="red";
            $color="white";
            $Modus = "unscharf";
        break;
        case "1":
            $bkcolor="lime";
            $color="black";
            $Modus = "SCHARF!";
        break;
        case "2":
            $bkcolor="yellow";
            $color="black";
            $Modus = "Home1";
        break;
        case "3":
            $bkcolor="yellow";
            $color="black";
            $Modus = "Home2";
        break;
        case "4":
            $bkcolor="yellow";
            $color="black";
            $Modus = "Home3";
        break;
    }

    
    

$html .= "\n<table class='armtable'>";
$html .= "\n<tr bgcolor='{$bkcolor}' color:{$color}' style='padding: 10px;'>";
$html .= "\n<td style='padding: 10px;' align='center' ><b>{$Modus}&nbsp;</b></td></tr>";      
$html .= "\n</table>\n";
    
    // GSM-Status
    $html .= "\n<table class='statustable'>";
    $html .= "\n<tr>\n<td><b>Status</b></td>\n<td><b>Wert</b></td>\n</tr>";

    $html .= "\n<tr><td>GSM ok</td>\n<td>" . $gsm_ok . "</td>\n</tr>";      
    $html .= "\n<tr><td>GSM Signal</td>\n<td>" . $gsm_signal . "/9</td>\n</tr>";

    $html .= "\n</table>\n";
    //$html .= "<p></p>";


echo $html;

// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
function SensorOut( $SnsTyp, $sensor )
{
    $html = '';
    $fault = 0;    
    // Daten aus Array zur besseren Anzeige bearbeiten
    $status = @GetTextBetween($sensor['status'], '{WEB_MSG_DC_', '}');
    $status = str_replace("CLOSE", "nein", $status);
    $status = str_replace("OPEN", "ja", $status);
    if ($sensor['rssi']=='{WEB_MSG_NA}') {
        $rssi="n/a";
        $fault = 1;
    } else {
        $rssi = substr($sensor['rssi'], -1);
    }

    $name =  $sensor['name'];
    $battery = $sensor['battery_ok'];
    $battery = str_replace("1", "OK",      $battery );
    $battery = str_replace("0", "Schwach", $battery );
    
    
    if ($fault==1) {
        $battery = "unbek.";
        $status  = "unbek.";
    }


    
    $bkcolor="gray";
    $color="black";
    if ( strcasecmp($status, "nein"   )== 0 ) { SetColors( 2, $bkcolor, $color );}
    if (( strcasecmp($status, "ja" )== 0 ) or ( $fault == 1 )) { SetColors( 0, $bkcolor, $color );}
    
    if ( $SnsTyp == 1 ) {
        if ( $battery == "OK" ) {
            SetColors( 2, $bkcolor, $color );
        } else {
          SetColors( 0, $bkcolor, $color );
        }
        $html .= "\n<td  style='border-left: 1px solid black;' bgcolor='{$bkcolor}' style='color:{$color};'><b>" . $name . "</b></td>";        // battery_ok
    } else  {
    
    
        // SensorName
        $html .= "\n<tr bgcolor='{$bkcolor}' style='color:{$color};'>";
        $html .= "\n<td><b>" . $name . "</b></td>";        // name
        
        //Sensor Status
        $html .= "\n<td align='center' >" . $status . "</td>";        // status


        // Batterie
        if ( strcasecmp($battery, "OK" )== 0 )      
          SetColors( 2, $bkcolor, $color );
        else
          SetColors( 0, $bkcolor, $color );

        $html .= "\n<td align='center' bgcolor='{$bkcolor}' style='color:{$color};'>" . $battery . "</td>";        // battery_ok
    }

// Funkleistung
    SetColors( 2, $bkcolor, $color );
    
    if ( strcasecmp($rssi, "5" )== 0 )  SetColors( 1, $bkcolor, $color );
    if ( strcasecmp($rssi, "4" )== 0 )  SetColors( 1, $bkcolor, $color );
    if ( strcasecmp($rssi, "3" )== 0 )  SetColors( 0, $bkcolor, $color );
    if ( strcasecmp($rssi, "2" )== 0 )  SetColors( 0, $bkcolor, $color );
    if ( strcasecmp($rssi, "1" )== 0 )  SetColors( 0, $bkcolor, $color );
    if ( strcasecmp($rssi, "0" )== 0 )  SetColors( 0, $bkcolor, $color );
    if ( $fault == 1 )  SetColors( 0, $bkcolor, $color );
    

    $html .= "\n<td align='center' bgcolor='{$bkcolor}' style='color:{$color};'>";
    if ( $fault==1)  {
        $html .= "n/a";
    }else{
        $html .= "{$rssi}/9";
    }
    $html .="\n</td>";        // rssi
    if ( $SnsTyp <> 1 ) {
      $html .= "\n</tr>\n";
    }
    return $html;
}
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
function SetColors( $level, &$backcolor, &$forecolor )
{
  switch ($level) {
      case 1:
        $backcolor="yellow";
        $forecolor="black";
      break;
      case 2:
        $backcolor="lime";
        $forecolor="black";
      break;
      default:
//      case 0:
        $backcolor="red";
        $forecolor="white";
      break;
  }
}
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
function GetTextBetween($string, $start, $end)
    {
   preg_match_all( "/$start(.*)$end/U", $string, $match );
   return $match[1][0];
    }
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
?>

</font></body>

</html>

Viel Spaß beim Weiterbasteln

Gruß, Christian
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
31-01-2019, 14:00
Beitrag: #11
RE: externe Einflußnahme z.B. via http(s)-URL
Super - Vielen Dank!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
31-01-2019, 16:49
Beitrag: #12
RE: externe Einflußnahme z.B. via http(s)-URL
Ich sende per Action URL an den JBMedia Lichtmanager Air den Status meiner Türen und der Alarmanlage.
Kann dann damit z.B. verhindern, dass die Rollläden vom Lichtmanager bei geöffneten Türen runterfahren um nicht ausgesperrt zu werden. Der Lichmanager würde sonst per Sonnenuntergangszeit die Rollläden runterfahren.
Auch eine einfache Leuchte z.B. für den Status Scharf/unscharf ist per Schaltsteckdose für kleines Geld so möglich.

Werde als nächstes die Rolläden hochfahren bei Rauchmeldung um Fluchtwege zu öffnen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Technaxx TX-83 Kamera HTTP Syntax Antonio 1 1.783 10-06-2021 16:32
Letzter Beitrag: ssb-security
  Apple Push Notification APNS HTTP/2 Fraggle 1 1.902 30-09-2020 22:27
Letzter Beitrag: bastelheini
  HTTP request von der Doorbird Timmei 5 3.295 31-08-2020 07:17
Letzter Beitrag: shortyHonk
  WLAN Kamera - Mit Action-URL aktuelles Bild per Mail versenden Fraggle 3 4.051 06-03-2020 10:27
Letzter Beitrag: peteralarm
  Klingelton externe Sirene PeterF 0 2.058 11-09-2019 14:31
Letzter Beitrag: PeterF
  Verzögerte Action URL & Shelly shortyHonk 6 8.824 17-06-2019 06:42
Letzter Beitrag: shortyHonk
  Action URL mit neuer Firmware: gelöst. tomleitner 5 5.059 15-04-2019 18:42
Letzter Beitrag: rubinho
  Acktion URL bei Fehler ausführen Detlef B. 1 2.023 09-04-2019 10:01
Letzter Beitrag: grelm
  SMS via GSM bei Netzwerkausfall. tomleitner 4 3.102 07-04-2019 06:53
Letzter Beitrag: tomleitner
  via SMS Commands an die Zentrale schicken nobody01 15 9.337 16-02-2019 18:11
Letzter Beitrag: seagull



Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste