Wetterdaten Anzeige

Ja das hat jetzt schon einmal geholfen die ID des Wetterbedingungen Media muss hinterlegt werden

die Fehler sind weg, nur die aktuellen Bilder werden in der View nicht angezeigt. warte mal ab.

So sieht das bei mir aus …

… das mit den Bats kannst du weglassen, da fliegen ein paar Fledermäuse über die Anzeige wenn Vollmond ist … :wink:

Und bitte, dein Script als Code angeben und nicht immer als Bild …

<?php

//Wettersymbole in Medienobjekt schreiben
//IPS_Sleep(1000);                                                // Script verzögern damit alle OpenWeatherMap Daten geladen werden können

$MediaID = IPS_GetParent($_IPS['SELF']);                        // Image im MedienPool (übergeodnetes Objekt)
$Wetterbedingung = GetValue($_IPS['VARIABLE']);                 // Wetterbedingungssymbol von OpenWeatherMap (auslösende Variable)

//$Path = "C:\\IPSymcon\\Serverdaten\\media\\Wettersymbole\\";  // Windows
$Path = IPS_GetKernelDir()."/media/Wettersymbole/";             // Linux

$Image = "44.png";                                              // N/A Wettersymbol wenn Wetter Code nicht vorhanden

// ******************* Bedingungen vergleichen *************************
//day
if ($Wetterbedingung == "01d") $Image = "32.png";        
if ($Wetterbedingung == "02d") $Image = "30.png";        
if ($Wetterbedingung == "03d") $Image = "28.png";        
if ($Wetterbedingung == "04d") $Image = "26.png";        
if ($Wetterbedingung == "09d") $Image = "40.png";        
if ($Wetterbedingung == "10d") $Image = "39.png";        
if ($Wetterbedingung == "11d") $Image = "3.png";        
if ($Wetterbedingung == "13d") $Image = "13.png";        
if ($Wetterbedingung == "50d") $Image = "34.png";        

//night
if ($Wetterbedingung == "01n") $Image = "31.png";        
if ($Wetterbedingung == "02n") $Image = "29.png";        
if ($Wetterbedingung == "03n") $Image = "27.png";        
if ($Wetterbedingung == "04n") $Image = "26.png";        
if ($Wetterbedingung == "09n") $Image = "40.png";        
if ($Wetterbedingung == "10n") $Image = "45.png";        
if ($Wetterbedingung == "11n") $Image = "47.png";        
if ($Wetterbedingung == "13n") $Image = "46.png";        
if ($Wetterbedingung == "50n") $Image = "33.png";       


// *********************************************************************

$ImageFile = $Path.$Image;                                      // Image-Datei
IPS_SetMediaFile($MediaID, $ImageFile, true);                   // Image im MedienPool mit Image-Datei

// Bats aktivieren ...
$time = date("H:i");

if (($time >= date("18:00")) and ($time <= date("22:00"))) {
    if (($Image == "27.png") or ($Image == "29.png") or ($Image == "31.png") or ($Image == "33.png")) {
        SetValue(11002, true);
        } else {
        SetValue(11002, false);
    }
} else {
    SetValue(11002, false);
}    

1 „Gefällt mir“

Wow sieht sehr schön aus !!!

Danke für den zusätzlichen Hinweis.

Ich habe es mit deiner Hilfe → Pfad zur Datei unter Windows hinbekommen

1000 Dank an Dich Doctor_Snuggels

//Wettersymbole in Medienobjekt schreiben
//IPS_Sleep(1000);                                                // Script verzögern damit alle OpenWeatherMap Daten geladen werden können

$MediaID         = 17541;                                        // Image im MedienPool (übergeodnetes Objekt)
$Wetterbedingung = GetValue(16749);                     // Wetterbedingungssymbol von OpenWeatherMap (auslösende Variable)

$Path = "C:\\ProgramData\Symcon\\media\\Wettersymbole\\";


$Image = "44.png";                                              // N/A Wettersymbol wenn Wetter Code nicht vorhanden

// ******************* Bedingungen vergleichen *************************
//day
if ($Wetterbedingung == "01d") $Image = "32.png";        
if ($Wetterbedingung == "02d") $Image = "30.png";        
if ($Wetterbedingung == "03d") $Image = "28.png";        
if ($Wetterbedingung == "04d") $Image = "26.png";        
if ($Wetterbedingung == "09d") $Image = "40.png";        
if ($Wetterbedingung == "10d") $Image = "39.png";        
if ($Wetterbedingung == "11d") $Image = "3.png";        
if ($Wetterbedingung == "13d") $Image = "13.png";        
if ($Wetterbedingung == "50d") $Image = "34.png";        

//night
if ($Wetterbedingung == "01n") $Image = "31.png";        
if ($Wetterbedingung == "02n") $Image = "29.png";        
if ($Wetterbedingung == "03n") $Image = "27.png";        
if ($Wetterbedingung == "04n") $Image = "26.png";        
if ($Wetterbedingung == "09n") $Image = "40.png";        
if ($Wetterbedingung == "10n") $Image = "45.png";        
if ($Wetterbedingung == "11n") $Image = "47.png";        
if ($Wetterbedingung == "13n") $Image = "46.png";        
if ($Wetterbedingung == "50n") $Image = "33.png";       


// *********************************************************************

//$ImageFile = $Path.$Image;                                      // Image-Datei
//IPS_SetMediaContent($MediaID, IPS_GetMediaContent($MediaID));   // Image im MedienPool mit Image-Datei
//Echo $ImageFile;

$ImageFile = $Path.$Image;                                      // Image-Datei
IPS_SetMediaFile($MediaID, $ImageFile, true);                   // Image im MedienPool mit Image-Datei

Ja super …
IPS_GetKernelDir hättest du auch hier voranschreiben können, falls du mal auf ein anderes System umziehst für den Pfad.

Na dann ran an eine schöne Visu …

Hallo Doctor_Snuggles,

kannst du mir weiterhelfen und sagen, was ich an dem nachfolgenden Script (Kopie von hier)falsch mache. Die Fehlermeldung steht ganz unten.
Besten Dank schon mal.

<?php //Wettersymbole in Medienobjekt schreiben //IPS_Sleep(1000); // Script verzögern damit alle OpenWeatherMap Daten geladen werden können $MediaID = 57817; // Image im MedienPool (übergeodnetes Objekt) $Wetterbedingung = GetValue(28590); // Wetterbedingungssymbol von OpenWeatherMap (auslösende Variable) //$Path = "C:\\IPSymcon\\Serverdaten\\media\\Wettersymbole\\"; // Windows $Path = IPS_GetKernelDir()."/media/Wettersymbole/"; // Linux $Image = "44.png"; // N/A Wettersymbol wenn Wetter Code nicht vorhanden // ******************* Bedingungen vergleichen ************************* //day if ($Wetterbedingung == "01d") $Image = "32.png"; if ($Wetterbedingung == "02d") $Image = "30.png"; if ($Wetterbedingung == "03d") $Image = "28.png"; if ($Wetterbedingung == "04d") $Image = "26.png"; if ($Wetterbedingung == "09d") $Image = "40.png"; if ($Wetterbedingung == "10d") $Image = "39.png"; if ($Wetterbedingung == "11d") $Image = "3.png"; if ($Wetterbedingung == "13d") $Image = "13.png"; if ($Wetterbedingung == "50d") $Image = "34.png"; //night if ($Wetterbedingung == "01n") $Image = "31.png"; if ($Wetterbedingung == "02n") $Image = "29.png"; if ($Wetterbedingung == "03n") $Image = "27.png"; if ($Wetterbedingung == "04n") $Image = "26.png"; if ($Wetterbedingung == "09n") $Image = "40.png"; if ($Wetterbedingung == "10n") $Image = "45.png"; if ($Wetterbedingung == "11n") $Image = "47.png"; if ($Wetterbedingung == "13n") $Image = "46.png"; if ($Wetterbedingung == "50n") $Image = "33.png"; // ********************************************************************* //$ImageFile = $Path.$Image; // Image-Datei //IPS_SetMediaContent($MediaID, IPS_GetMediaContent($MediaID)); // Image im MedienPool mit Image-Datei //Echo $ImageFile; $ImageFile = $Path.$Image; // Image-Datei IPS_SetMediaFile($MediaID, $ImageFile, true); // Image im MedienPool mit Image-Datei Fehlermeldung: Warning: Datei #/media/Wettersymbole/26.png existiert nicht in /mnt/data/symcon/scripts/26819.ips.php on line 46

Da scheint der Pfad zu den Bildern nicht zu stimmen.
Aber bitte formatiere den php Code hier doch so, das man da auch was lesen kann.

Die Wettersymbole liegen bei mir im Objektbau unter: IP-Symcon\media\Wettersymbole.

Hi Klauss,

schau dir doch meinen Beitrag an, ich hatte das gleiche Problem.

Gruß Thimo

Hi tschmitt,

danke für deine Antwort, aber ich habe keinen Wondows-PC, sondern eine IPSYMBOX. Ein „media-Verzeichnis“ habe ich unter IP-Symcon (root) angelegt, passt aber vermutlich nicht. Weist du wo die Bilder richtig abgelegt werden müssen?
Beste Grüße Klaus

Hallo Klauss,

du kannst doch auf der IPSYMBOX sicher auch ein Verzeichnis nutzen und dann im Script den Pfad entsprechend hinterlegen/vorgeben.

Leider kenne ich mich mit der IPSYMBOX nicht aus, von daher nur die Mutmaßung.

Gruß Thimo

Hi Thimo,

hab ich schon versucht, leider erfolglos. Ich bin in PHP auch nicht so fit.

Beste Grüße Klaus

Hallo Klauss,

das Script hast du doch, weißt du wie deine Struktur auf der IPSYMBOX aussieht?

Ich kenne nur die Ordner-Struktur im Objektbaum. Unter dem Hauptverzeichnis „IP-Symcon“ liegen dann alle weitern Verzeichnisse, Intsanzen usw. Hier meine Befehlszeile.

Beste Grüße Klaus

Hallo Klaus,

bei mir war es notwendig das ich den Pfad so angeben musste, damit er die Logos gefunden hat.

von daher probiere bitte mal die 2mal „\“ vor und nach dem Media und dann auch nochmals am Ende.

Gruß Thimo

Hallo Thimo,

was soll ich sagen, einen Teilerfolg. Die Fehlermeldung in Zeile 12 ist wef, dafür erhielt ich diese:

Hallo Klaus,

das Problem hatte ich auch :wink: wie hast du die Symbole auf die Symbox kopiert. Notfall nochmals alle neu in das Verzeichnis reinladen. Ich kann mich erinnern, dass ich das auch mehrmals wiederholen musste.

Prüfe bitte mal im Script noch die Zeile 45 was darin steht. Die Bilder liegen bei mir alles wie folgt im Verzeichnis

Hallo Thimo,

ich habe diese einzeln im Objektbaum im entsprechenden Verzeichnis als Medien „Bild“ von meinem Mac reinkopiert. Die Bilder sind auch im Verzeichnis vorhanden.

Zeile 45 hat diesen Inhalt:

Ich vermute, dass der Pfad nicht passt.

Beste Grüße Klaus

Hi Thimo,.

habs hinbekommen, war wie gesagt der Pfad.

Dankeschön für deine Unterstützung.

Schöne Osterfeiertage

Beste Grüße Klaus

1 „Gefällt mir“

Hallo Klauss,

$Path = IPS_GetKernelDir()."/media/Wettersymbole/";

heißt der Pfad und unter Linux liegen die Dateien unterhalb von symcon in media/Wettersymbole/ Ordner.

2025-04-20_12h45_50

Ich bin mir aber nicht sicher, ob das ggf. Case sensitive ist unter Linux.

VG,
Doc

Hallo Doc,

danke nochmal für dein Hinweis. Ich hab alles soweit, dank euerer (deiner und tschmitt) Unterstützung hinbekommen.

Folgende Fragen habe ich dennoch:
Was besagt die Variable „Wetterbedingung-Id“ beim OpenWeatherMap - OneCall-Datenabruf (zum Beispiel: 500) und kann diese irgenwie verwendet werden?
Wie hast die (vorhergesagten) „Sonnenstunden“ Anzahl in deiner View generiert? OpenWeatherMap überträgt diese Infos nicht.

Beste Grüße
Klaus