Wetterwarnungen Österreich mit Geosphere Daten

Eigentlich hab ich die Frage hier gestellt, aber ich habs selber herausgefunden.
Aus aktuellem Anlass hier die Wetterwarnungen für den aktuellen Standort aus dem Location-Control

<?php
$location_id=46071;
$adressen=array("mailadresse1@gmail.com","mailadresse2@outlook.at");
$text="";
$text_wf="";
$lat=json_decode(json_decode(IPS_GetConfiguration($location_id),true)["Location"],true)["latitude"];
$long=json_decode(json_decode(IPS_GetConfiguration($location_id),true)["Location"],true)["longitude"];

$url="https://warnungen.zamg.at/wsapp/api/getWarningsForCoords?lon=".number_format($long,4,".",".")."&lat=".number_format($lat,4,".",".")."&lang=de";
$warnungen=json_decode(file_get_contents($url),true);
//$text=$text.$warnungen["properties"]["location"]["properties"]["name"].PHP_EOL;
foreach ($warnungen["properties"]["warnings"] as $warnung)
{
	$text="";
	switch ($warnung["properties"]["warntypid"])
	{
		case 1: $warntyp="Sturm";break;
		case 2: $warntyp="Regen";break;
		case 3: $warntyp="Schnee";break;
		case 4: $warntyp="Blitzeis";break;
		case 5: $warntyp="Unwetter";break;
		case 6: $warntyp="Hitze";break;
		case 7: $warntyp="Kälte";break;
	}
	switch ($warnung["properties"]["warnstufeid"])
	{
		case 1:$warnstufe="Gelb";break;
		case 2:$warnstufe="Orange";break;
		case 3:$warnstufe="Rot";break;
	}
	$text=$text."Warnung: ".$warntyp." - Stufe: ".$warnstufe.PHP_EOL;
	$text=$text.$warnung["properties"]["begin"]." - ".$warnung["properties"]["end"].PHP_EOL;
	$text=$text.$warnung["properties"]["text"].PHP_EOL;
	$text=$text.$warnung["properties"]["auswirkungen"].PHP_EOL;
	$text=$text.$warnung["properties"]["empfehlungen"].PHP_EOL;
	$text=$text.$warnung["properties"]["meteotext"].PHP_EOL;
	if ($warnstufe == "Orange" or $warnstufe == "Rot")
	{
		foreach ($adressen as $adresse) SMTP_SendMailEx(27953,$adresse,"Wetterwarnung - ".$warntyp." - Warnstufe: ".$warnstufe,$text);
	}
	$text_wf=$text_wf.$text;
}
setvalue(52228,$text_wf);

Mich interessiert im Moment erstmal nur der Text. Es ist sicher mit dem Json String noch ausbaufähig. Man könnte dann noch eine Warnung per Mail oder was weiß ich ab einer gewissen Stufe schicken. Vielleicht mach ich das noch.
Der Text kommt in eine Stringvariable mit dem Profil ~TextBlox.
Sieht dann so aus:

Falls es jamenden interessiert :wink:
Die API ist hier beschrieben
https://openapi.hub.geosphere.at/warnapi/v1/

Ich hab das ganze vorallem in der Optik noch einmal überarbeitet. Außerdem wollte ich bei Warnungen nicht jede Stunde ein Mail bekommen. Ich habe das mit einem CRC des Ergebnisstrings gemacht. Hoffe das funktioniert. Mails werden nur dann gesendet wenn sich der Originalstring ändert. Sollte jemand eine bessere Idee haben, her damit :wink: .

<?php
$location_id=46071; //ID der Locationinstanz
$html_id=52228; //HTML-Box Variable
$warnungvorhanden_id=14981; //Variable ob Warnungen (Orange, Rot) vorhanden sind
$crc_id=15986; //CRC Variable um eine Änderung in den Warnungen festzustellen
$smtp_id=27953; //ID der SMTP Instanz für den Mailversand
$adressen=array("adresse1@gmail.com","adresse2@outlook.at"); //Liste der Empfänger


$text="";
$html="";
SetValue($warnungvorhanden_id,false);
$lat=json_decode(json_decode(IPS_GetConfiguration($location_id),true)["Location"],true)["latitude"];
$long=json_decode(json_decode(IPS_GetConfiguration($location_id),true)["Location"],true)["longitude"];
$crcalt=getvalue($crc_id);


$url="https://warnungen.zamg.at/wsapp/api/getWarningsForCoords?lon=".number_format($long,4,".",".")."&lat=".number_format($lat,4,".",".")."&lang=de";
$warnungen_json=file_get_contents($url);
$crc_warnungen=crc32($warnungen_json);
$warnungen=json_decode($warnungen_json,true);
$html="<table class=\"wwx\" border=\"1\" style=\"width:100%;border-spacing: 0px;\">";
foreach ($warnungen["properties"]["warnings"] as $warnung)
{
	$html=$html."<tr>";
	$text="";
	switch ($warnung["properties"]["warntypid"])
	{
		case 1: $warntyp="Sturm";break;
		case 2: $warntyp="Regen";break;
		case 3: $warntyp="Schnee";break;
		case 4: $warntyp="Blitzeis";break;
		case 5: $warntyp="Unwetter";break;
		case 6: $warntyp="Hitze";break;
		case 7: $warntyp="Kälte";break;
	}
	switch ($warnung["properties"]["warnstufeid"])
	{
		case 1:$warnstufe="Gelb";$color="yellow";break;
		case 2:$warnstufe="Orange";$color="orange";break;
		case 3:$warnstufe="Rot";$color="red";break;
	}
	$text=$text."Warnung: ".$warntyp." - Stufe: ".$warnstufe.PHP_EOL;
	$text=$text.$warnung["properties"]["begin"]." - ".$warnung["properties"]["end"].PHP_EOL;
	$text=$text.$warnung["properties"]["text"].PHP_EOL;
	$text=$text."Auswirkungen".PHP_EOL.$warnung["properties"]["auswirkungen"].PHP_EOL.PHP_EOL;
	$text=$text."Empfehlungen".PHP_EOL.$warnung["properties"]["empfehlungen"].PHP_EOL.PHP_EOL;
	$text=$text.$warnung["properties"]["meteotext"].PHP_EOL;
	if (($warnstufe == "Orange" or $warnstufe == "Rot") and $crc_warnungen != $crcalt)
	{
		foreach ($adressen as $adresse) SMTP_SendMailEx($smtp_id,$adresse,"Wetterwarnung - ".$warntyp." - Warnstufe: ".$warnstufe,$text);
		SetValue($warnungvorhanden_id,true);
	}
	$html=$html.
	"<td style='padding:0px;background-color:".$color."; '>&nbsp;&nbsp;</td>";
	$html=$html.
	"<td style='padding:5px;'><center>".$warntyp."</center></td>";
	$html=$html.
	"<td style='padding:5px;'><center>".$warnung["properties"]["begin"]."<br>".$warnung["properties"]["end"]."</center></td>";
	$html=$html.
	"<td style='padding:5px;'><center>".$warnung["properties"]["text"]."</center></td>";
	$html=$html.
	"<td style='padding:0px;'><ul>".str_replace("*","<li>",str_replace("\n","<br>",$warnung["properties"]["auswirkungen"]))."</ul></td>";
	$html=$html.
	"<td style='padding:0px;'><ul>".str_replace("*","<li>",str_replace("\n","<br>",$warnung["properties"]["empfehlungen"]))."</ul></td>";
	$html=$html.
	"<td style='padding:5px;'><center>".$warnung["properties"]["meteotext"]."</center></td>";
	$html=$html."</tr>";
}
setvalue($crc_id,$crc_warnungen);
$html=$html."</table>";
setvalue($html_id,$html);

1 „Gefällt mir“

Vielen Dank fürs teilen. Hab die .de Kollegen schon lange um ihren DWD beneidet.
Werde es demnächst mal ausprobieren.

zzt. hab in schöpferischer Sommerpause.
Bernhard

Servus
Konnte nicht widerstehen und hab es trotz Sommerpause ausprobiert.
Thumbs Up, funktionierte auf Anhieb.

Sehr schöne Basis für individuelle Anpassungen oder Aufhübschungen.
Nochmals Vielen Dank
Bernhard

Bitte gerne. Ich hab noch eine Variable „Wetterwarnung vorhanden“ eingefügt. Die wird in dem IF-Zweig ob Orange oder Rot gesetzt. Wenn die true ist, dann zeigen meine Ulanzis einen Warnhinweis vor den Wetterdaten an.
So wie du sagst, man kann das sicher erweitern.
Ups, ich sehe eben, dass diese Variable oben schon drinnen ist :wink:
Was ich auch noch geändert habe, wenn keine Warnung vorhanden ist, eine entsprechende Zeile erstellt und den Link zur Karte eingefügt. Aber das ändert nichts an der Funktion

Hallo,
vielen Dank fürs teilen,
ich wollte gerade deinen Php code verwenden, aber bekomme keine Rückmeldung.
Natürlich habe ich die Variablen ID’s angepasst. Auch habe ich ein „Print_r“ hinzugefügt. Es kommt kein Fehler, aber auch kein Wert, weder in der Variable noch irgendwo anders, könnt Ihr mir bitte helfen, was mache ich falsch?
Vielen Dank im Voraus
Flo

Du könntest deinen Code posten, das würde es einfacher machen. Du musst auch korrekte Werte in der Location eingetragen haben. Und es geht nur für Österreich.

Danke für deine Antwort, habe die Location noch einmal angesehen, die ist in Ordnung. Auch passt das Zielland, ich bin aus Tirol.

Ich habe den oberen Code 1 zu 1 übernommen, eine String Variable erstellt, die ID der Location und der String adaptiert und die zeile „Print_r ($text_wf);“ angefügt um das Ergebnis im Array zu sehen

Nochmal die Bitte, poste deinen Code. So wie es aussieht, nimmst du den Code aus meinem ersten Post. Versuch mal die zweite Version. Wenn keine Warnungen vorhanden ist, kommt auch nichts.
Schau hier: WS2021.1
Es ist alles grün, es gibt keine Warnungen.

Hallo,
danke für deine Geduld, ich habe nun die Variablen angelegt und habe auch den 2. code verwendet.
Leider auch da ergebnislos, Warnungen können natürlich bei grün keine ausgegeben werden, aber in der String müsste dennoch die aktuelle Lage sein oder?

Mein code:

<?php
$location_id=12213; //ID der Locationinstanz
$html_id=14955; //HTML-Box Variable
$warnungvorhanden_id=24275; //Variable ob Warnungen (Orange, Rot) vorhanden sind
$crc_id=32307; //CRC Variable um eine Änderung in den Warnungen festzustellen
$smtp_id=47375; //ID der SMTP Instanz für den Mailversand
$adressen=array("fl.lanzinger@gmail.com"); //Liste der Empfänger


$text="";
$html="";
SetValue($warnungvorhanden_id,false);
$lat=json_decode(json_decode(IPS_GetConfiguration($location_id),true)["Location"],true)["latitude"];
$long=json_decode(json_decode(IPS_GetConfiguration($location_id),true)["Location"],true)["longitude"];
$crcalt=getvalue($crc_id);


$url="https://warnungen.zamg.at/wsapp/api/getWarningsForCoords?lon=".number_format($long,4,".",".")."&lat=".number_format($lat,4,".",".")."&lang=de";
$warnungen_json=file_get_contents($url);
$crc_warnungen=crc32($warnungen_json);
$warnungen=json_decode($warnungen_json,true);
$html="<table class=\"wwx\" border=\"1\" style=\"width:100%;border-spacing: 0px;\">";
foreach ($warnungen["properties"]["warnings"] as $warnung)
{
	$html=$html."<tr>";
	$text="";
	switch ($warnung["properties"]["warntypid"])
	{
		case 1: $warntyp="Sturm";break;
		case 2: $warntyp="Regen";break;
		case 3: $warntyp="Schnee";break;
		case 4: $warntyp="Blitzeis";break;
		case 5: $warntyp="Unwetter";break;
		case 6: $warntyp="Hitze";break;
		case 7: $warntyp="Kälte";break;
	}
	switch ($warnung["properties"]["warnstufeid"])
	{
		case 1:$warnstufe="Gelb";$color="yellow";break;
		case 2:$warnstufe="Orange";$color="orange";break;
		case 3:$warnstufe="Rot";$color="red";break;
	}
	$text=$text."Warnung: ".$warntyp." - Stufe: ".$warnstufe.PHP_EOL;
	$text=$text.$warnung["properties"]["begin"]." - ".$warnung["properties"]["end"].PHP_EOL;
	$text=$text.$warnung["properties"]["text"].PHP_EOL;
	$text=$text."Auswirkungen".PHP_EOL.$warnung["properties"]["auswirkungen"].PHP_EOL.PHP_EOL;
	$text=$text."Empfehlungen".PHP_EOL.$warnung["properties"]["empfehlungen"].PHP_EOL.PHP_EOL;
	$text=$text.$warnung["properties"]["meteotext"].PHP_EOL;
	if (($warnstufe == "Orange" or $warnstufe == "Rot") and $crc_warnungen != $crcalt)
	{
		foreach ($adressen as $adresse) SMTP_SendMailEx($smtp_id,$adresse,"Wetterwarnung - ".$warntyp." - Warnstufe: ".$warnstufe,$text);
		SetValue($warnungvorhanden_id,true);
	}
	$html=$html.
	"<td style='padding:0px;background-color:".$color."; '>&nbsp;&nbsp;</td>";
	$html=$html.
	"<td style='padding:5px;'><center>".$warntyp."</center></td>";
	$html=$html.
	"<td style='padding:5px;'><center>".$warnung["properties"]["begin"]."<br>".$warnung["properties"]["end"]."</center></td>";
	$html=$html.
	"<td style='padding:5px;'><center>".$warnung["properties"]["text"]."</center></td>";
	$html=$html.
	"<td style='padding:0px;'><ul>".str_replace("*","<li>",str_replace("\n","<br>",$warnung["properties"]["auswirkungen"]))."</ul></td>";
	$html=$html.
	"<td style='padding:0px;'><ul>".str_replace("*","<li>",str_replace("\n","<br>",$warnung["properties"]["empfehlungen"]))."</ul></td>";
	$html=$html.
	"<td style='padding:5px;'><center>".$warnung["properties"]["meteotext"]."</center></td>";
	$html=$html."</tr>";
}
setvalue($crc_id,$crc_warnungen);
$html=$html."</table>";
setvalue($html_id,$html);

Vielen dank für deine Bemühung und deine Hilfe

Füge einfach NACH $url=„https://warnungen…“ var_dump($warnungen_json); ein, dann siehst das Ergebnis. Bei „grün“ ist der Index $warnungen[„properties“][„warnings“] leer.

Mein var_dump() der Variable $warnungen_json

string(569) "{"type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[[[[568197,502836],[569657,503017],[570345,503116],[570560,502309],[570047,500584],[570781,500292],[569985,499414],[569252,498665],[569495,497817],[568725,497879],[567317,499042],[566709,498331],[566329,498427],[566837,498587],[566702,499285],[567091,499635],[567468,499717],[567473,501158],[567750,501822],[568151,501885],[568197,502836]]]]},"properties":{"location":{"type":"Municipal","properties":{"gemeindenr":31309,"name":"Furth bei G\u00f6ttweig","urlname":"furth_bei_goettweig"}},"warnings":[]}}"

Mein var_dump($warnungen[„properties“][„warnings“]);

array(0) { }

Was soviel bedeutet wie nix, leer.

Eventuell hilft dir diese Version eher

<?php
$location_id=12213; //ID der Locationinstanz
$html_id=14955; //HTML-Box Variable
$warnungvorhanden_id=24275; //Variable ob Warnungen (Orange, Rot) vorhanden sind
$crc_id=32307; //CRC Variable um eine Änderung in den Warnungen festzustellen
$smtp_id=47375; //ID der SMTP Instanz für den Mailversand
$adressen=array("fl.lanzinger@gmail.com"); //Liste der Empfänger

$immersenden=true;
//$immersenden=false;

$text="";
$html="";
SetValue($warnungvorhanden_id,false);
$lat=json_decode(json_decode(IPS_GetConfiguration($location_id),true)["Location"],true)["latitude"];
$long=json_decode(json_decode(IPS_GetConfiguration($location_id),true)["Location"],true)["longitude"];
$crcalt=getvalue($crc_id);


$url="https://warnungen.zamg.at/wsapp/api/getWarningsForCoords?lon=".number_format($long,4,".",".")."&lat=".number_format($lat,4,".",".")."&lang=de";
$warnungen_json=file_get_contents($url);
$crc_warnungen=crc32($warnungen_json);
$warnungen=json_decode($warnungen_json,true);
$heute_beginn=mktime(0,0,0,date("m",time()),date("d",time()),date("Y",time()));
$heute_ende=mktime(23,59,0,date("m",time()),date("d",time()),date("Y",time()));
$morgen_beginn=$heute_beginn+(3600*24);
$morgen_ende=$heute_ende+(3600*24);
$meldungen=0;
$warnstufenum=0;
$html=$html."<html><head><link rel=\"stylesheet\" href=\"../skins/WwXSkin/webfront.css\"></head>";
$html=$html."<table class=\"wwx\" border=\"1\" style=\"width:100%;border-spacing: 0px;\">";
foreach ($warnungen["properties"]["warnings"] as $warnung)
{
/*
	echo date("d.m.Y G:i:s",$warnung["properties"]["rawinfo"]["start"]).PHP_EOL;
	echo date("d.m.Y G:i:s",$warnung["properties"]["rawinfo"]["end"]).PHP_EOL;
	echo date("d.m.Y G:i:s",$heute_beginn).PHP_EOL;
	echo date("d.m.Y G:i:s",$heute_ende).PHP_EOL;
	echo date("d.m.Y G:i:s",$morgen_beginn).PHP_EOL;
	echo date("d.m.Y G:i:s",$morgen_ende).PHP_EOL;
	echo ($warnung["properties"]["rawinfo"]["start"]>=$heute_beginn and $warnung["properties"]["rawinfo"]["end"]<=$heute_ende).PHP_EOL;
	echo ($warnung["properties"]["rawinfo"]["start"]>=$morgen_beginn and $warnung["properties"]["rawinfo"]["end"]<=$morgen_ende).PHP_EOL;

	if (($warnung["properties"]["rawinfo"]["start"]>=$heute_beginn and $warnung["properties"]["rawinfo"]["end"]<=$heute_ende) or 
	    ($warnung["properties"]["rawinfo"]["start"]>=$morgen_beginn and $warnung["properties"]["rawinfo"]["end"]<=$morgen_ende))
*/
	if (true)
	{
		$meldungen++;
		$html=$html."<tr>";
		$text="";
		switch ($warnung["properties"]["warntypid"])
		{
			case 1: $warntyp="Sturm";break;
			case 2: $warntyp="Regen";break;
			case 3: $warntyp="Schnee";break;
			case 4: $warntyp="Glatteis";break;
			case 5: $warntyp="Unwetter";break;
			case 6: $warntyp="Hitze";break;
			case 7: $warntyp="Kälte";break;
		}
		switch ($warnung["properties"]["warnstufeid"])
		{
			case 1:$warnstufe="Gelb";$color="yellow"; break;
			case 2:$warnstufe="Orange";$color="orange"; break;
			case 3:$warnstufe="Rot";$color="red"; break;
		}
		$warnstufenum=max($warnstufenum,$warnung["properties"]["warnstufeid"]);
		$text=$text."Warnung: ".$warntyp." - Stufe: ".$warnstufe.PHP_EOL;
		$text=$text.$warnung["properties"]["begin"]." - ".$warnung["properties"]["end"].PHP_EOL;
		$text=$text.$warnung["properties"]["text"].PHP_EOL;
		$text=$text."Auswirkungen".PHP_EOL.$warnung["properties"]["auswirkungen"].PHP_EOL.PHP_EOL;
		$text=$text."Empfehlungen".PHP_EOL.$warnung["properties"]["empfehlungen"].PHP_EOL.PHP_EOL;
		$text=$text.$warnung["properties"]["meteotext"].PHP_EOL;
		$text=$text."https://a33048f121722d0a8a8f12051779cfe9.ipmagic.de/#19358".PHP_EOL;
		if ($warnstufe == "Orange" or $warnstufe == "Rot")
		{
			if (($crc_warnungen != $crcalt or $immersenden) and ($warnung["properties"]["warntypid"]==1 or $warnung["properties"]["warntypid"]==2 or $warnung["properties"]["warntypid"]==4 or $warnung["properties"]["warntypid"]==5))
			{
				foreach ($adressen as $adresse) SMTP_SendMailEx($smtp_id,$adresse,"Wetterwarnung - ".$warntyp." - Warnstufe: ".$warnstufe,$text);
			}
			SetValue($warnungvorhanden_id,true);
		}
		$html=$html.
		"<td style='padding:0px;background-color:".$color."; '>&nbsp;&nbsp;</td>";
		$html=$html.
		"<td style='padding:5px;'><center>".$warntyp."</center></td>";
		$html=$html.
		"<td style='padding:5px;'><center>".$warnung["properties"]["begin"]."<br>".$warnung["properties"]["end"]."</center></td>";
		$html=$html.
		"<td style='padding:5px;'><center>".$warnung["properties"]["text"]."</center></td>";
		$html=$html.
		"<td style='padding:0px;'><ul>".str_replace("*","<li>",str_replace("\n","<br>",$warnung["properties"]["auswirkungen"]))."</ul></td>";
		$html=$html.
		"<td style='padding:0px;'><ul>".str_replace("*","<li>",str_replace("\n","<br>",$warnung["properties"]["empfehlungen"]))."</ul></td>";
		$html=$html.
		"<td style='padding:5px;'><center>".$warnung["properties"]["meteotext"]."</center></td>";
		$html=$html."</tr>";
	}
}
if($meldungen == 0)
{
		$html=$html.
	"<tr><td style='padding:0px;background-color:green;width:20px;'>&nbsp;</td><td colspan=7 style='padding:5px;'><center>Keine Warnungen vorhanden!</center></td></tr>";

}
setvalue($crc_id,$crc_warnungen);
$html=$html."<tr><td colspan=7><center><a target=_blank href='https://warnungen.zamg.at/wsapp/de/alle/gesamterzeitraum/'>Wetterwarnungen</a></center></tr></td>";
$html=$html."</table>";
setvalue($html_id,$html);

Ich habe die ID’s an deine angepasst. Sollte (die Betonung liegt auf "sollte) sofort bei dir funktionieren

Vielen Vielen Dank, sieht schon mal nicht so schlecht aus, werde am Abend noch einmal darüber schauen aber sieht vielversprechend aus
Danke

Aktuell gibt es eine gelbe Wetterwarnung. Auch für Tirol. Solltest also was bekommen.

hallo, erstmal super Sache funktioniert bei mir einwandfrei. Gibt es eine Möglichkeit das in eine Variable geschrieben wird ob nun Warnstufe grün, gelb, orange oder rot ist?
Danke
gruß aus Kärnten
Stefan

Ja, hab ich bei mir eingebaut :slight_smile:
Für die neue Visiualsierung.
Es gibt im letzten Skript von mir eine Variable $warnstufenum

$warnstufenum=max($warnstufenum,$warnung["properties"]["warnstufeid"]);

Da wird die höchste Warnstufe reingeschrieben.
Nach der for-Schleife (hinter der letzten }) kommt dieser Code

switch ($warnstufenum)
{
	case 1:setvalue($warnunganzeige_id,1); break;
	case 2:setvalue($warnunganzeige_id,2); break;
	case 3:setvalue($warnunganzeige_id,3); break;
	default:setvalue($warnunganzeige_id,0);
}

$warnunganzeige_id ist eine Integervariable mit diesem Profil


Sieht dann so aus
image
Ich hoffe du kennst dich aus. Wenn nicht, dann poste ich noch mal den ganzen Code.

bitte den ganzen code :sweat_smile:

Gerne

<?php
$location_id=46071; //ID der Locationinstanz
$html_id=52228; //HTML-Box Variable
$warnungvorhanden_id=14981; //Variable ob Warnungen (Orange, Rot) vorhanden sind
$crc_id=15986; //CRC Variable um eine Änderung in den Warnungen festzustellen
$smtp_id=27953; //ID der SMTP Instanz für den Mailversand
$adressen=array("adresse1@gmail.com","adresse2@outlook.at"); //Liste der Empfänger
$warnunganzeige_id=16978;
//$adressen=array("adresse3@gmail.com");
//$immersenden=true;
$immersenden=false;

$text="";
$html="";
SetValue($warnungvorhanden_id,false);
$lat=json_decode(json_decode(IPS_GetConfiguration($location_id),true)["Location"],true)["latitude"];
$long=json_decode(json_decode(IPS_GetConfiguration($location_id),true)["Location"],true)["longitude"];
$crcalt=getvalue($crc_id);


$url="https://warnungen.zamg.at/wsapp/api/getWarningsForCoords?lon=".number_format($long,4,".",".")."&lat=".number_format($lat,4,".",".")."&lang=de";
$warnungen_json=file_get_contents($url);
$crc_warnungen=crc32($warnungen_json);
$warnungen=json_decode($warnungen_json,true);
$heute_beginn=mktime(0,0,0,date("m",time()),date("d",time()),date("Y",time()));
$heute_ende=mktime(23,59,0,date("m",time()),date("d",time()),date("Y",time()));
$morgen_beginn=$heute_beginn+(3600*24);
$morgen_ende=$heute_ende+(3600*24);
$meldungen=0;
$warnstufenum=0;
$html=$html."<html><head><link rel=\"stylesheet\" href=\"../skins/WwXSkin/webfront.css\"></head>";
$html=$html."<table class=\"wwx\" border=\"1\" style=\"width:100%;border-spacing: 0px;\">";
foreach ($warnungen["properties"]["warnings"] as $warnung)
{
/*
	echo date("d.m.Y G:i:s",$warnung["properties"]["rawinfo"]["start"]).PHP_EOL;
	echo date("d.m.Y G:i:s",$warnung["properties"]["rawinfo"]["end"]).PHP_EOL;
	echo date("d.m.Y G:i:s",$heute_beginn).PHP_EOL;
	echo date("d.m.Y G:i:s",$heute_ende).PHP_EOL;
	echo date("d.m.Y G:i:s",$morgen_beginn).PHP_EOL;
	echo date("d.m.Y G:i:s",$morgen_ende).PHP_EOL;
	echo ($warnung["properties"]["rawinfo"]["start"]>=$heute_beginn and $warnung["properties"]["rawinfo"]["end"]<=$heute_ende).PHP_EOL;
	echo ($warnung["properties"]["rawinfo"]["start"]>=$morgen_beginn and $warnung["properties"]["rawinfo"]["end"]<=$morgen_ende).PHP_EOL;

	if (($warnung["properties"]["rawinfo"]["start"]>=$heute_beginn and $warnung["properties"]["rawinfo"]["end"]<=$heute_ende) or 
	    ($warnung["properties"]["rawinfo"]["start"]>=$morgen_beginn and $warnung["properties"]["rawinfo"]["end"]<=$morgen_ende))
*/
	$meldungen++;
	$html=$html."<tr>";
	$text="";
	switch ($warnung["properties"]["warntypid"])
	{
		case 1: $warntyp="Sturm";break;
		case 2: $warntyp="Regen";break;
		case 3: $warntyp="Schnee";break;
		case 4: $warntyp="Glatteis";break;
		case 5: $warntyp="Unwetter";break;
		case 6: $warntyp="Hitze";break;
		case 7: $warntyp="Kälte";break;
	}
	switch ($warnung["properties"]["warnstufeid"])
	{
		case 1:$warnstufe="Gelb";$color="yellow"; break;
		case 2:$warnstufe="Orange";$color="orange"; break;
		case 3:$warnstufe="Rot";$color="red"; break;
	}
	$warnstufenum=max($warnstufenum,$warnung["properties"]["warnstufeid"]);
	$text=$text."Warnung: ".$warntyp." - Stufe: ".$warnstufe.PHP_EOL;
	$text=$text.$warnung["properties"]["begin"]." - ".$warnung["properties"]["end"].PHP_EOL;
	$text=$text.$warnung["properties"]["text"].PHP_EOL;
	$text=$text."Auswirkungen".PHP_EOL.$warnung["properties"]["auswirkungen"].PHP_EOL.PHP_EOL;
	$text=$text."Empfehlungen".PHP_EOL.$warnung["properties"]["empfehlungen"].PHP_EOL.PHP_EOL;
	$text=$text.$warnung["properties"]["meteotext"].PHP_EOL;
	$text=$text."https://a33048f121722d0a8a8f12051779cfe9.ipmagic.de/#19358".PHP_EOL;
	if ($warnstufe == "Orange" or $warnstufe == "Rot")
	{
		if (($crc_warnungen != $crcalt or $immersenden) and ($warnung["properties"]["warntypid"]==1 or $warnung["properties"]["warntypid"]==2 or $warnung["properties"]["warntypid"]==4 or $warnung["properties"]["warntypid"]==5))
		{
			foreach ($adressen as $adresse) SMTP_SendMailEx($smtp_id,$adresse,"Wetterwarnung - ".$warntyp." - Warnstufe: ".$warnstufe,$text);
		}
		SetValue($warnungvorhanden_id,true);
	}
	$html=$html.
	"<td style='padding:0px;background-color:".$color."; '>&nbsp;&nbsp;</td>";
	$html=$html.
	"<td style='padding:5px;'><center>".$warntyp."</center></td>";
	$html=$html.
	"<td style='padding:5px;'><center>".$warnung["properties"]["begin"]."<br>".$warnung["properties"]["end"]."</center></td>";
	$html=$html.
	"<td style='padding:5px;'><center>".$warnung["properties"]["text"]."</center></td>";
	$html=$html.
	"<td style='padding:0px;'><ul>".str_replace("*","<li>",str_replace("\n","<br>",$warnung["properties"]["auswirkungen"]))."</ul></td>";
	$html=$html.
	"<td style='padding:0px;'><ul>".str_replace("*","<li>",str_replace("\n","<br>",$warnung["properties"]["empfehlungen"]))."</ul></td>";
	$html=$html.
	"<td style='padding:5px;'><center>".$warnung["properties"]["meteotext"]."</center></td>";
	$html=$html."</tr>";
}
switch ($warnstufenum)
{
	case 1:setvalue($warnunganzeige_id,1); break;
	case 2:setvalue($warnunganzeige_id,2); break;
	case 3:setvalue($warnunganzeige_id,3); break;
	default:setvalue($warnunganzeige_id,0);
}
if($meldungen == 0)
{
		$html=$html.
	"<tr><td style='padding:0px;background-color:green;width:20px;'>&nbsp;</td><td colspan=7 style='padding:5px;'><center>Keine Warnungen vorhanden!</center></td></tr>";

}
setvalue($crc_id,$crc_warnungen);
$html=$html."<tr><td colspan=7><center><a target=_blank href='https://warnungen.zamg.at/wsapp/de/alle/gesamterzeitraum/'>Wetterwarnungen</a></center></tr></td>";
$html=$html."</table>";
setvalue($html_id,$html);

danke dafür
gruß Stefan

Ich hab eben den Code noch mal geändert. Habe gesehen, dass ich da noch „Altlasten“ drinnen gehabt habe. War aber nur unschön bzw. unnötig.

sehr cool, vielen dank