DWD Wetterkarte aus IPSymcon in NEO Creator einbinden

Hallo zusammen,
hat jemand ein Tip für mich, wie ich die DWD Wetterkarten aus dem IPSymcon in eine NEO Creator Visualisierung einbetten kann?

Danke für Eure Hilfe schon im Voraus

Stefan

Welche Wetterkarten denn genau, Vorhersage oder auch Unwetterwarnung? Willst Du das einfach als Webseitenelement einbinden oder besitzt Du ein NEO Plugin für IP-Symcon, darin unterscheidet sich wie Du das einbinden kannst.

Vielleicht hilft Dir das erst mal weiter um z.B. die passenden Karten für Unwetterwarnungen zu bekommen

Hallo Fonzo,
Du bist ja wieder mal der Beste.
Ich besitze das NEO Plugin für IP-Symcon (hat mir viel Arbeit gespart).
Mir würde es reichen, wenn ich die Karten und Meldungen aus dem IP-Symcon in die Visualisierung rein bekomme.
Als Webseitenelement habe ich es schon geschafft, aber DEIN Script im IP-Symcon ist schon etwas anderes :slight_smile:
Irgendwie schaffe ich es nicht, das Gerät richtig einzubinden.

LG Stefan

PS.: Ich bin echt glücklich mit meinem heutigen Setup. IP-Symcon zum Automatisieren und den NEO Creator als Visualisierungstool. Danke für Deine Unterstützung von Anfang an.

Ja das macht vieles einfacher, dann sollte das Einbinden aber auch kein Thema sein.

Dann must Du erst mal z.B. das Skript von @pitti ausführen, das legt Dir passende Variablen an.
Damit das mit NEO noch besser funktioniert kannst Du das Skript noch leicht modifizieren. Dazu legst Du Dir zunächst mal in IP-Symcon eine Instanz an vom Typ Dummy.
Unterhalb der Dummy Instanz legst Du ein neues Skript an und kopierst dort folgenden Inhalt rein

pitti Skript modifiziert

PHP Skript von pitti
<?php 
// add Dummy Instance
$dummy_id = 36634;

################################################################################ 
# Script: Weather.StormWarning.ips.php 
# Version:    1.0 
# Author:    Heiko Wilknitz (@pitti) 
# 
# Abrufen von Radarbildern und Unwetterwarnungen 
# 
# ----------------------------------- ID´s ------------------------------------- 
# 
# Bei Verwendung der Scripte 'Meldungsanzeige im WebFron' (Post #51) 
# https://www.symcon.de/forum/threads/12115-Meldungsanzeige-im-WebFront 
# hier die ScriptID von 'Meldungsverwaltung' eintragen, sonst 0! 
$dbID        = 0; 
# 
# ----------------------------- Konfiguration ---------------------------------- 
# 
# Benötigte URLs für die verschiedenen Informationen 
# 
$urls = array( 
    # JSON API auslesen 
    'JSON'    => 'https://www.dwd.de/DWD/warnungen/warnapp/json/warnings.json', 
    # Check Icon 
    'CHECK'    => 'https://www.dwd.de/DWD/warnungen/warnapp_gemeinden/viewer/img/icn_check.png', 
    # Level Icons 
    'LEVEL'    => 'https://www.dwd.de/DWD/warnungen/warnapp_gemeinden/viewer/img/warndreieck/<LEVEL>.png', 
    # Tye Icons 
    'TYPE'    => 'https://www.dwd.de/DWD/warnungen/warnapp_gemeinden/viewer/img/warndreieck/warn_icons_<TYPE>.png', 
    # Temperatur Image 
    'TEMP'    => 'https://www.dwd.de/DWD/wetter/aktuell/deutschland/bilder/wx_<STATE>_akt.jpg', 
    # Niederschlag Radar 
    'RADAR'    => 'https://www.dwd.de/DWD/wetter/radar/rad_<STATE>_akt.jpg', 
    # Niederschlag Radarfilm 
    'MOVIE'    => 'https://www.dwd.de/DWD/wetter/radar/radfilm_<STATE>_akt.gif', 
    # Karte mit allen Warnungen 
    'MAPS'    => 'https://www.dwd.de/DWD/warnungen/warnapp_gemeinden/json/warnungen_gemeinde_map_<STATE><TYPE>.png' 
); 
# 
# Karte 
# 
$maps = array( 
  array(0, 'Bundesland', '', 0x0000FF), 
  array(1, 'Deutschland', '', 0x0000FF) 
); 
# 
# Bundesländer 
# 
$states = array ( 
    array(0, 'Baden-Württemberg', '', 0x800080, 'baw'), 
    array(1, 'Bayern', '', 0x800080, 'bay'), 
    array(2, 'Berlin,Brandenburg', '', 0x800080, 'bbb'), 
    array(3, 'Hessen', '', 0x800080, 'hes'), 
    array(4, 'Mecklenburg-Vorpommer', '', 0x800080, 'mvp'), 
    array(5, 'Niedersachsen,Bremen', '', 0x800080, 'nib'), 
    array(6, 'Nordrhein-Westfalen', '', 0x800080, 'nrw'), 
    array(7, 'Rheinland-Pfalz,Saarland', '', 0x800080, 'rps'), 
    array(8, 'Sachsen', '', 0x800080, 'sac'), 
    array(9, 'Sachsen-Anhalt', '', 0x800080, 'saa'), 
    array(10,'Schleswig-Holstein,Hamburg', '', 0x800080, 'shh'), 
    array(11,'Thüringen', '', 0x800080, 'thu') 
); 
# 
# Kriterien 
#  
$types = array( 
    array(-1,'Alle', '', 0xFFFF00, 'all'), 
    array(0, 'Gewitter', '', 0xFFFF00, 'gewitter'), 
    array(1, 'Wind / Sturm / Orkan', '', 0xFFFF00, 'sturm'), 
    array(2, 'Stark- oder Dauerregen', '', 0xFFFF00, 'regen'), 
    array(3, 'Schneefall', '', 0xFFFF00, 'schnee'), 
    array(4, 'Nebel', '', 0xFFFF00, 'nebel'), 
    array(5, 'Frost', '', 0xFFFF00, 'frost'), 
    array(6, 'Glätte, Glatteis', '', 0xFFFF00, 'glatteis'), 
    array(7, 'Tauwetter', '', 0xFFFF00, 'tauwetter'), 
    array(8, 'Hitze', '', 0xFFFF00, 'hitze'), 
    array(9, 'UV-Strahlung', '', 0xFFFF00, 'uv') 
); 
# 
# Warning levels 
# 
$levels = array( 
    0    => "gelb", 
    1    => "gelb", 
    2    => "gelb", 
    3    => "orange", 
    4    => "rot", 
    5    => "dunkelrot", 
    10    => "violet_hitze", 
    20    => "violet_uv" 
); 
# 
# Initial Code = Main-Taunus-Kreis 
# 
$regioCode    = "106436000";  
# 
################################################################################ 

// INSTALLATION 
if($_IPS['SENDER'] == "Execute") { 
    // Karte 
    $vid = CreateVariableByName($dummy_id, "Karte", 1); 
    CreateProfileInteger('DWD.Map', 'Image', '', '', 0, count($maps)-1, 0, 0, $maps); 
    IPS_SetVariableCustomProfile($vid, 'DWD.Map'); 
    IPS_SetVariableCustomAction($vid, $_IPS['SELF']); 
    SetValue($vid, 0); 
    // Bundesland 
    $vid = CreateVariableByName($dummy_id, "Bundesland", 1); 
    CreateProfileInteger('DWD.State', 'Macro', '', '', 0, count($states)-1, 0, 0, $states); 
    IPS_SetVariableCustomProfile($vid, 'DWD.State'); 
    IPS_SetVariableCustomAction($vid, $_IPS['SELF']); 
    SetValue($vid, 0); 
    // Kriterien 
    $vid = CreateVariableByName($dummy_id, "Kriterien", 1); 
    CreateProfileInteger('DWD.Types', 'Warning', '', '', 0, count($types)-1, 0, 0, $types); 
    IPS_SetVariableCustomProfile($vid, 'DWD.Types'); 
    IPS_SetVariableCustomAction($vid, $_IPS['SELF']); 
    SetValue($vid, -1); 
    // Region Code 
    $vid = CreateVariableByName($dummy_id, "Region", 3); 
    IPS_SetIcon($vid, 'Edit'); 
    IPS_SetVariableCustomProfile($vid, '~TextBox'); 
    IPS_SetVariableCustomAction($vid, $_IPS['SELF']); 
    SetValue($vid, $regioCode); 
    // Aktuelle Temperaturen 
    $vid = CreateVariableByName($dummy_id, "Temperaturen aktuell", 3); 
    IPS_SetIcon($vid, 'Temperature'); 
    IPS_SetVariableCustomProfile($vid, '~HTMLBox'); 
    SetValue($vid, GetImageTag($states[0][4], $urls['TEMP'])); 
    // Niederschlagsradar 
    $vid = CreateVariableByName($dummy_id, "Niederschlag Radarbild", 3); 
    IPS_SetIcon($vid, 'Rainfall'); 
    IPS_SetVariableCustomProfile($vid, '~HTMLBox'); 
    SetValue($vid, GetImageTag($states[0][4], $urls['RADAR'])); 
    // Niederschlagsradaraufnahme 
    $vid = CreateVariableByName($dummy_id, "Niederschlag Radarfilm", 3); 
    IPS_SetIcon($vid, 'Rainfall'); 
    IPS_SetVariableCustomProfile($vid, '~HTMLBox'); 
    SetValue($vid, GetImageTag($states[0][4], $urls['MOVIE'])); 
    // Unwettermeldungen 
    $vid = CreateVariableByName($dummy_id, "Unwettermeldungen", 3); 
    IPS_SetIcon($vid, 'WindSpeed'); 
    IPS_SetVariableCustomProfile($vid, '~HTMLBox'); 
    SetValue($vid, GetWeatherWarnings($regioCode, -1, $urls, $types, $levels, $dbID)); 
    // Unwetterkarte 
    $vid = CreateVariableByName($dummy_id, "Unwetterkarte", 3); 
    IPS_SetIcon($vid, 'Image'); 
    IPS_SetVariableCustomProfile($vid, '~HTMLBox'); 
    SetValue($vid, GetWeatherMap($urls['MAPS'], 0, $states[0][4], $types[0][4])); 
    // Script Timer 
    if(IPS_GetScriptTimer($_IPS['SELF']) == 0) { 
        IPS_SetScriptTimer($_IPS['SELF'], 60*15); 
    } 
} 
// AKTION VIA WEBFRONT 
else if($_IPS['SENDER'] == "WebFront") { 
    // Speichern 
      SetValue($_IPS['VARIABLE'], $_IPS['VALUE']); 

    // Karte 
    $vid = CreateVariableByName($dummy_id, "Karte", 1); 
    $map = GetValue($vid); 
    // Bundesland 
    $vid = CreateVariableByName($dummy_id, "Bundesland", 1); 
    $state = GetValue($vid); 
    // Kriterien 
    $vid = CreateVariableByName($dummy_id, "Kriterien", 1); 
    $type = GetValue($vid); 
    // Region Code 
    $vid = CreateVariableByName($dummy_id, "Region", 3); 
    $code = GetValue($vid); 

    // Aktuelle Temperaturen 
    $vid = CreateVariableByName($dummy_id, "Temperaturen aktuell", 3); 
    SetValue($vid, GetImageTag($states[$state][4], $urls['TEMP'])); 
    // Niederschlagsradar 
    $vid = CreateVariableByName($dummy_id, "Niederschlag Radarbild", 3); 
    SetValue($vid, GetImageTag($states[$state][4], $urls['RADAR'])); 
    // Niederschlagsradaraufnahme 
    $vid = CreateVariableByName($dummy_id, "Niederschlag Radarfilm", 3); 
    SetValue($vid, GetImageTag($states[$state][4], $urls['MOVIE'])); 
    // Unwettermeldungen 
    $vid = CreateVariableByName($dummy_id, "Unwettermeldungen", 3); 
    SetValue($vid, GetWeatherWarnings($code, $type, $urls, $types, $levels, $dbID)); 
    // Unwetterkarte 
    $vid = CreateVariableByName($dummy_id, "Unwetterkarte", 3); 
    SetValue($vid, GetWeatherMap($urls['MAPS'], $map, $states[$state][4], $types[$type+1][4])); 
} 
// TIMER EVENT 
else if($_IPS['SENDER'] == "TimerEvent") { 
    // Kriterien 
    $vid = CreateVariableByName($dummy_id, "Kriterien", 1); 
    $type = GetValue($vid); 
    // Unwettermeldungen 
    $vid = CreateVariableByName($dummy_id, "Unwettermeldungen", 3); 
    SetValue($vid, GetWeatherWarnings($regioCode, $type, $urls, $types, $levels, $dbID)); 
} 

# ------------------------------ Funktionen ------------------------------------ 

// Findet zum übergebenen DWD-RegioCode entsprechende Wetterwarnungen und Vorabinformationen 
// Übergabe: [STRING]$code = Regiocode, z.B. 106439000 für Rheingau-Taunus-Kreis 
// Rückgabe: [STRING] = Warnings als Html-Tabelle 
function GetWeatherWarnings($code, $type, $urls, $types, $levels, $db) 
{ 
    //Fehlerbehandlung 
    if(!isset($code)) die("Error in Function ".__FUNCTION__." - Missing argument for \$regioCode"); 
    if(!is_string($code)) die("Error in Function ".__FUNCTION__." - Value for parameter \$regioCode is not a string");   //API aufrufen und XML einlesen 

    # Meldungstext wenn keine Warnungen vorliegen 
    $check_txt     = '<b>Keine Unwetter-Meldungen vorhanden!</b><br />'; 
    $check_txt .= '<i><small>zuletzt aktualisiert am '.date("d.m.",time()).' um '.date("H:i",time()).' Uhr</i></small>'; 
     
    # Daten abholen 
    $json = file_get_contents($urls['JSON']); 

    //Warnungen extrahieren und in Array kodieren 
    $extract = ExtractUnit($json, 'warnWetter.loadWarnings(', ');');  
    $array = json_decode($extract,true); 
     
    //Übergabearray vorbereiten 
    $warnings = array(); 
     
    //Warnungen und Vorabinformationen durchgehen und wesentliche Felder in Array schreiben 
    if(isset($array["vorabInformation"][$code])) foreach($array["vorabInformation"][$code] as $row) array_push($warnings,array("headline" => ReplaceCaseSensitiveWords($row["headline"]), "description" => ReplaceCaseSensitiveWords($row["description"]), "start" => round($row["start"] / 1000,0), "end" => round($row["end"] / 1000,0), "region" => $row["regionName"], "state" => $row["state"], "type" => $row["type"], "level" => $row["level"], "time" => round($array["time"] / 1000,0))); 
    if(isset($array["warnings"][$code])) foreach($array["warnings"][$code] as $row) array_push($warnings,array("headline" => ReplaceCaseSensitiveWords($row["headline"]), "description" => ReplaceCaseSensitiveWords($row["description"]), "start" => round($row["start"] / 1000,0), "end" => round($row["end"] / 1000,0), "region" => $row["regionName"], "state" => $row["state"], "type" => $row["type"], "level" => $row["level"], "time" => round($array["time"] / 1000,0))); 

    // HTML zusammenbauen 
    $style = ""; 
    $style = $style.'<style type="text/css">'; 
    $style = $style.'table {width:100%;border-collapse: collapse;}'; 
    $style = $style.'td.img {width:50px;border:0px;vertical-align: top;text-align:left;padding:10px;border-left: 1px solid rgba(255, 255, 255, 0.2);border-top: 1px solid rgba(255, 255, 255, 0.2);border-bottom: 1px solid rgba(255, 255, 255, 0.2);}'; 
    $style = $style.'td.txt {vertical-align: top;text-align:left;padding:5px 10px 5px 10px;border-right: 1px solid rgba(255, 255, 255, 0.2);border-top: 1px solid rgba(255, 255, 255, 0.2);border-bottom: 1px solid rgba(255, 255, 255, 0.2);}'; 
    //$style = $style.'tr:nth-child(even) {background-color: rgba(0, 0, 0, 0.3);}'; 
    $style = $style.'.stitle { color: rgba(128, 128, 0, 1.0); }'; 
    $style = $style.'.fwarn { height: 50px; width: 50px;}'; 
    $style = $style.'.iwarn { margin-left: -50px; height: 50px; width: 50px; }'; 
    $style = $style.'</style>'; 
     
    $html  = $style.'<table>';  

    $count = 0;     
    foreach ($warnings as $key => $value) { 
        //print_r($value); 
        if(($type == -1) OR ($type == $value['type'])) {  
            $turl = str_replace('<TYPE>', $types[$value['type']+1][4], $urls['TYPE']); 
            $lurl = str_replace('<LEVEL>', $levels[$value['level']], $urls['LEVEL']); 
            $time = strftime("%a, %d.%b, %H:%M - ", $value['start']).strftime("%a, %d.%b, %H:%M Uhr", $value['end']); 
            $html .= '<tr>';  
            $html .= '<td class=\'img\'><div><img class=\'fwarn\' src=\''.$lurl.'\' alt=\'Level\' /><img class=\'iwarn\' src=\''.$turl.'\' alt=\'Typ\' /></div></td>';  
            $html .= '<td class=\'txt\'><b>'.$value['headline'].'</b><br / ><i><small>'.$time.'</small></i><br />'.$value['description'].'</td>';  
            $html .= '</tr>'; 
            $count++; 
        }  
    } 
    // Exist Warnings 
    if($count == 0) { 
        $html .= '<tr>';  
        $html .= '<td class=\'img\'><div><img class=\'fwarn\' src=\''.$urls['CHECK'].'\' alt=\'No warning\'></div></td>';  
        $html .= '<td class=\'txt\'>'.$check_txt.'</td>';  
        $html .= '</tr>';  
    } 
    // Warnungen an Dashboard melden 
    if($db != 0) { 
        IPS_RunScriptWaitEx($db, array('action' => 'add', 'text' => 'Es liegen Unwetterwarnungen vor!', 'type' => 1, 'expires' => time() + 3600,'image' => 'WindSpeed', 'page' => 'spUnwetter')); 
    } 
     
    $html .= '</table>';  
     
    //Rückgabe 
    return $html; 
} 

// Warnungen extrahieren 
function ExtractUnit($string, $start, $end) 
{ 
    $pos = stripos($string,$start); 
    $str = substr($string,$pos); 
    $strTwo = substr($str,strlen($start)); 
    $secondPos = stripos($strTwo,$end); 
    $strThree = substr($strTwo,0,$secondPos); 
    $unit = trim($strThree); 
    return $unit; 
} 

// Ersetzen von Großschreibung in normale Schreibweise 
function ReplaceCaseSensitiveWords($string) 
{ 
    $string = str_replace("VORABINFORMATION SCHWERES GEWITTER","Vorabinformation schweres Gewitter",$string); 
    $string = str_replace("VORABINFORMATION UNWETTER vor SCHWEREM GEWITTER","Vorabinformation Unwetter vor schwerem Gewitter",$string); 
    $string = str_replace("VORABINFORMATION UNWETTER vor ORKANBÖEN","Vorabinformation Unwetter vor Orkanböen",$string); 
    $string = str_replace("Amtliche UNWETTERWARNUNG vor SCHWEREM GEWITTER mit HEFTIGEM STARKREGEN und HAGEL","Unwetterwarnung vor schwerem Gewitter mit heftigem Starkregen und Hagel",$string); 
    $string = str_replace("Amtliche UNWETTERWARNUNG vor ORKANBÖEN","Unwetterwarnung vor Orkanböen",$string); 
    $string = str_replace("Amtliche WARNUNG vor GEWITTER","Warnung vor Gewitter",$string); 
    $string = str_replace("Amtliche WARNUNG vor STARKEM GEWITTER","Warnung vor starkem Gewitter",$string); 
    $string = str_replace("Amtliche WARNUNG vor SCHWEREM GEWITTER","Warnung vor schwerem Gewitter",$string); 
    $string = str_replace("Amtliche WARNUNG vor WINDBÖEN","Warnung vor Windböen",$string); 
    $string = str_replace("Amtliche WARNUNG vor STARKEN WINDBÖEN","Warnung vor starken Windböen",$string); 
    $string = str_replace("Amtliche WARNUNG vor SCHWEREN WINDBÖEN","Warnung vor schweren Windböen",$string); 
    $string = str_replace("Amtliche WARNUNG vor STURMBÖEN","Warnung vor Sturmböen",$string); 
    $string = str_replace("Amtliche WARNUNG vor ORKANBÖEN","Warnung vor Orkanböen",$string); 
    $string = str_replace("Amtliche WARNUNG vor STARKEN STURMBÖEN","Warnung vor starken Sturmböen",$string); 
    $string = str_replace("Amtliche WARNUNG vor SCHWEREN STURMBÖEN","Warnung vor schweren Sturmböen",$string); 
    $string = str_replace("Amtliche WARNUNG vor DAUERREGEN","Warnung vor Dauerregen",$string); 
    $string = str_replace("Amtliche WARNUNG vor NEBEL","Warnung vor Nebel",$string); 
    $string = str_replace("Amtliche WARNUNG vor GLÄTTE","Warnung vor Glätte",$string); 
    $string = str_replace("Amtliche WARNUNG vor GLATTEIS","Warnung vor Glatteis",$string); 
    $string = str_replace("Amtliche WARNUNG vor FROST","Warnung vor Frost",$string); 
    $string = str_replace("Amtliche WARNUNG vor LEICHTEM SCHNEEFALL","Warnung vor leichtem Schneefall",$string); 
    $string = str_replace("Amtliche WARNUNG vor SCHNEEFALL","Warnung vor Schneefall",$string); 
    $string = str_replace("Amtliche WARNUNG vor STARKEM SCHNEEFALL","Warnung vor starkem Schneefall",$string); 
    $string = str_replace("Amtliche WARNUNG vor HITZE","Warnung vor extremer Hitze",$string); 
    $string = str_replace("\n","",$string); 
    return $string; 
}     

// Erstellt für das übergebene Bundesland und Kriterium den Html-Image-Tag 
function GetWeatherMap($url, $map, $state, $type) 
{ 
    // unschön aber wirkungsvoll 
    if($map == 1) { 
        $state = 'de'; 
    }  
    if($type == 'all') { 
        $type = ''; 
    } 
    else { 
        $type = '_'.$type; 
    } 
    IPS_LogMessage('DWD', 'Map: '.$map.', State: '.$state.', Typ: '.$type); 
    $img = str_replace('<STATE>', $state, $url); 
    $img = str_replace('<TYPE>', $type, $img); 
    // An die persönlichen Vorlieben anpassen! 
    $html = "<img src='".$img."' style='height:100%;width:100%;'/>"; 
    return $html; 
} 

// Erstellt für das übergebene Bundesland den Html-Image-Tag 
function GetImageTag($state, $url) 
{ 
    $img = str_replace('<STATE>', $state, $url); 
    // An die persönlichen Vorlieben anpassen!   
    $html = "<img src='".$img."' style='height: 100%; width: 100%; object-fit: fill;' />"; 
    return $html; 
} 

// Erzeugt eine Variable unterhalb {id} mit dem Namen {name} vom Typ [type} 
// Existiert die Variable schon wird diese zurückgeliefert. 
function CreateVariableByName($id, $name, $type)  
{  
   $vid = @IPS_GetVariableIDByName($name, $id);  
   if($vid===false) {  
      $vid = IPS_CreateVariable($type);  
      IPS_SetParent($vid, $id);  
      IPS_SetName($vid, $name);  
   }  
   return $vid;  
}  

// Erzeugt ein Variablenprofil vom Typ {type} mit Name n{name}  
function CreateProfile($name, $type) 
{ 
    if(!IPS_VariableProfileExists($name)) { 
      IPS_CreateVariableProfile($name, $type); 
    }  
    else { 
      $profile = IPS_GetVariableProfile($name); 
      if($profile['ProfileType'] != $type) 
        throw new Exception("Variable profile type does not match for profile ".$name); 
    } 
} 

// Erzeugt ein Integer-Variablenprofil 
function CreateProfileInteger($name, $icon, $prefix, $suffix, $minvalue, $maxvalue, $step, $digits, $asso = NULL) 
{ 
    CreateProfile($name, 1); 

    IPS_SetVariableProfileIcon($name, $icon); 
    IPS_SetVariableProfileText($name, $prefix, $suffix); 
    IPS_SetVariableProfileDigits($name, $digits); 
     
    if(sizeof($asso) === 0){ 
      $minvalue = 0; 
      $maxvalue = 0; 
    }  
    IPS_SetVariableProfileValues($name, $minvalue, $maxvalue, $step); 
     
    if(sizeof($asso) !== 0){ 
      foreach($asso as $ass) { 
        IPS_SetVariableProfileAssociation($name, $ass[0], $ass[1], $ass[2], $ass[3]); 
      } 
    }          
} 

Die aller erste Zeile must Du anpassen an Deine Dummy Instanz die Du vorher angelegt hattest.

Sieht dann so aus:

Wie Du siehst sind die Variablen schon in einem Format, dass Du direkt in NEO nutzten kannst.
Jetzt startest Du einen Import im Gerätemanager von NEO und importierst das Gerät mit dem Namen der Dummy Instanz. In dem Gerät findest Du dann alle Ansichten die Du brauchst als einzelne Variablen die automatisch von IP-Symcon aktualisiert werden. In NEO ordnest Du das Gerät jetzt im Gerätemanager noch einem Raum (Kategorie) zu die für Dich passt.
Anschließend ziehst Du ein Element von Typ Webseite auf die NEO Remote Seite.
Als Status weist Du den gewünschten Status zu
neo_status

Bei HTML-Grundgerüst festlegen musst Du noch darauf achten das der Hintergrund auf transparent gesetzt ist

<!DOCTYPE html><html><head><meta charset="utf-8" /><style>html{background:transparent;color:#000;font-family:sans-serif;padding:10px;}</style></head><body>

Dann solltest Du das Bild bzw. die Werte schon in NEO sehen.
Im Einzelfall musst Du noch in NEO die Schriftfarbe anpassen, falls das nicht zum Layout passt.
Vielleicht verpackt @pitti das Skript ja auch mit ein paar Anpassungsmöglichkeiten in ein PHP Modul wenn er Lust und Laune hat. Pollenflug Modul ist auch von @pitti.

Das Skript ist von @pitti nicht von mir, da kannst Du Dich wenn bei ihm bedanken.

Erst ein Dummy Modul anlegen
https://www.symcon.de/service/dokumentation/modulreferenz/dummy-modul/
dann das Skript daraunter ausführen s.o.

Falls es noch Probleme geben sollte noch mal melden wo es hängt.

Wie Du siehst habe ich mich in meinem Objekt Baum verschrieben und Strom geschrieben :open_mouth:

Die Schriftfarbe müsstest Du wie gesagt abhängig von dem Hintergrund in NEO anpassen.
sieht dann in NEO mit jeweils einem Element vom Typ Webseite und Statuszuweisung so aus


Wie Du siehst würde man hier die Schriftart in der Farbe eher noch mal anpassen, das hängt vom Hintergrund ab, den Du nutzten willst.

Mensch @Fonzo, Du bist ja mein bester Promotor :innocent:

An Pollenflug und Unwetterwarnung bin ich gerade dran.
Bei Pollenflug wird man die Daten als aufbereitetes JSON direkt abrufen können und das Layout/Syles beeinflussen können. Direktabruf ist schon fertig, Layout solle am WE fertig werden, d.h. Mit einer Beta ist zeitnah zu rechnen.

Unwetterwarnung wird ein Modul. Man kann dann zwischen Landkreisebene und Gemeindeebene wählen, d.h. es sollte noch spezifischer werden. Mehr Features kann ich noch nicht ankündigen.

Gruß Heiko

Wenn Du das so siehst :wink:, ich nutzte nur Deine nützlichen Skripte, habe ich selber weniger Arbeit, vielen herzlichen Dank also nochmals dafür.

Super, dann wünsche ich mir noch ein Auswahlfeld um die Schriftfarbe im Konfigurationsformular auszuwählen bzw. anzupassen.

Da freue ich mich dann schon mal darauf. Ich weis nicht jeder will Skripte entrümpeln, aber mir sind Module, die einfach eine Instanz mit Variablen anlegen einfach inzwischen lieber.

Hallo Fonzo,
aller besten Dank für die super Erklärung. Mir ist auch sofort klar geworden, warum es bei nicht auf Anhieb funktionierte. Noch einmal: SUPER ERKLÄRUNG !

@pitti DANKE für Dein Script. Ich komme sehr gut damit zurecht !

Ich bin in einigen privaten und geschäftlichen Foren unterwegs. Diese Hilfsbereitschaft hier ist aber etwas ganz besonderes.

Schöne Grüße aus Franken

Stefan