Antwort
Dez 18, 2020 - 19:43
Ich würde mal schätzten das dies nicht möglich ist, da Du im NEO Automation Manager nicht einfach beliebig Abhängigkeiten nachinstallieren kannst und auch keine Bilder einfach im NEO Automation Manager speichern kannst
Möglich ist das definitiv mit PHP, ich nutzte einen Webhook in IP-Symcon, der den Request auswertet, das passende Bild aus dem Medienelement ausliest und den passenden Content Type bestimmt und das Bild dann als echo auf den Webhook zurückgibt.
Erst müsstest Du die Request URI auslesen
Möglich ist das definitiv mit PHP, ich nutzte einen Webhook in IP-Symcon, der den Request auswertet, das passende Bild aus dem Medienelement ausliest und den passenden Content Type bestimmt und das Bild dann als echo auf den Webhook zurückgibt.
Erst müsstest Du die Request URI auslesen
$_SERVER['REQUEST_URI']
und auswerten.
$request_uri = $_SERVER['REQUEST_URI'];
$script_name = substr($_SERVER['SCRIPT_NAME'], strlen("/hook/mediaimage/"));
$picture = explode(".", $script_name);
$picture_name = $picture[0];
$picture_type = $picture[1];
Aus IP-Symcon schicke ich dann ein Bild nachdem die Media ID identifiziert wurde so zurück
$mediaimage = MediaImage($media_id);
$headhtml = $mediaimage["headhtml"];
$imgdata = $mediaimage["imgdata"];
header($headhtml);
echo $imgdata;
function MediaImage($imageid)
{
if (!IPS_MediaExists($imageid)) {
die("Media Image with ID (" . $imageid . ") does not exists");
}
$media = IPS_GetMedia($imageid);
if ($media['MediaType'] != 1) {
die("ID #" . $imageid . " is not an image");
}
$imgbase64 = IPS_GetMediaContent($imageid); //liefert den Base64 kodierten Inhalt für das Medienobjekt
$imgdata = base64_decode($imgbase64);
$mimetype = getImageMimeType($imgdata);
$headhtml = getimgheader($mimetype);
$mediaimage = array("headhtml" => $headhtml, "imgdata" => $imgdata, "mimetype" => $mimetype);
return $mediaimage;
}
function getimgheader($mimetype)
{
if ($mimetype == "jpeg") {
$header = 'Content-Type: image/jpeg';
} elseif ($mimetype == "png") {
$header = 'Content-Type: image/png';
} elseif ($mimetype == "gif") {
$header = 'Content-Type: image/gif';
} elseif ($mimetype == "bmp") {
$header = 'Content-Type: image/bmp';
} elseif ($mimetype == "tiff") {
$header = 'Content-Type: image/tiff';
}
return $header;
}
function getBytesFromHexString($hexdata)
{
for ($count = 0; $count < strlen($hexdata); $count += 2)
$bytes[] = chr(hexdec(substr($hexdata, $count, 2)));
return implode($bytes);
}
function getImageMimeType($imagedata)
{
$imagemimetypes = array(
"jpeg" => "FFD8",
"png" => "89504E470D0A1A0A",
"gif" => "474946",
"bmp" => "424D",
"tiff" => "4949",
"tiff" => "4D4D"
);
foreach ($imagemimetypes as $mime => $hexbytes) {
$bytes = getBytesFromHexString($hexbytes);
if (substr($imagedata, 0, strlen($bytes)) == $bytes)
return $mime;
}
return NULL;
}
Eventuell kannst Du das ja im NEO Automation Manager nachbauen. Da der NEO Automation Manager keine Bilder speichern kann, müsstest Du schauen, ob eine String Variable des NEO Servers groß genug ist, um das Bild Base64 codiert in der Variable abzulegen.
Von
Hi, danke für die Antwort. Ich lese fast überall, dass mit IP Symcon so vieles geht. Ich hätte halt gern ein Tool zur Steuerung. Ich schau mir IP Symcon mal an, vielleicht lohnt sich ja ein Wechsel.
Von
NEO dient ja der Steuerung von vielen Systemen, nur das was Du da machen willst, ist schon sehr speziell und geht doch über das hinaus, was man so gewöhnlich mit NEO alleine bzw. dem NEO Automation Manager realisiert.
Gerade im Zusammenhang mit einer Fritzbox ist bei NEO mit IP-Symcon deutlich mehr möglich. Du kannst dann z.B. auch einen Festnetznummer in der Fritzbox auf IP-Symcon vergeben und IP-Symcon dann per Festnetz anrufen und DTMF Eingaben auswerten und dann einen Task im NEO Automation Manger per Telefonanruf auslösen.
Auch kannst Du die Fritzbox komplett in NEO ansteuern über Fritz Box Projekt
https://www.symcon.de/forum/threads/28966-Fritz-Box-Project
und so Telefonlisten usw. in NEO anzeigen lassen.
Neuen Kommentar hinzufügen