Hallo ich interessiere mich zu deinem Wettericon oben rechts. Schaut gut aus.
Dazu wüsste ich gern wo die Daten her kommen und wie du das mit den Icons verbindest. Bzw. wo ich die passenden Icons bekomme?
Moderator: Co-Administratoren
Hallo ich interessiere mich zu deinem Wettericon oben rechts. Schaut gut aus.
Ich kann nicht für andere sprechen, ich persönlich nutze einfach Open Weather Map als Datenquelle für die Wetter Vorhersage in NEO. Als Wetter Icons nutzte ich persönlich seit Jahren das VClouds Icon Set. Verknüpfung der Grafiken nach Import erfolgt bei mir in AIO CREATOR NEO wie üblich über Statusregeln.
Für was suchst Du denn genau ein Skript? Ich persönlich rufe die Daten mit IP-Symcon ab, das nutzt PHP.
Code: Alles auswählen
const http = require('http');
// OpenWeatherMap API-Schlüssel und URL
// hier persönlichen API Key ergänzen
const apiKey = '123456789abcdefg';
const apiUrl = 'http://api.openweathermap.org/data/2.5/weather';
// Die gewünschte Stadt und das Land , Beispiel Berlin
const city = 'Berlin';
const country = 'DE';
// URL für die API-Anfrage
const url = `${apiUrl}?q=${city},${country}&appid=${apiKey}`;
// Funktion, um Daten von der API abzurufen
const request = http.get(url, (response) => {
let data = '';
response.on('data', (chunk) => {
data += chunk;
});
response.on('end', () => {
const weatherData = JSON.parse(data);
console.log(weatherData);
// Temperatur in Kelvin von API erhalten
const temperatureKelvin = weatherData.main.temp;
// Temperatur in Celsius umwandeln
const temperatureCelsius = temperatureKelvin - 273.15;
// Wetterbeschreibung und Icon
const weatherDescription = weatherData.weather[0].description;
const weatherIcon = weatherData.weather[0].icon;
console.log('Temperatur (Celsius):', temperatureCelsius.toFixed(2));
console.log('Wetterbeschreibung:', weatherDescription);
console.log('Wetter-Icon:', weatherIcon);
});
});
request.on('error', (error) => {
console.error('Fehler beim Abrufen der Wetterdaten:', error);
});
Die Zuordnung von Open Weather Map bzw. die Bezeichnungen der Icons und Wetterbedingungen findest Du in der Dokumentation der Icons von Open Weather Map beschrieben. Du musst dann eben nur jeder Icon Bezeichnung, das ist ja der Wert den Du bei der Abfrage als Antwort erhältst, mit einer Statusregel eine Grafik Deiner Wahl zuordnen.
Ich bins nochmal. Das Skript läuft in der CCU nicht direkt.Fonzo hat geschrieben: ↑12.05.2024, 20:17Für was suchst Du denn genau ein Skript? Ich persönlich rufe die Daten mit IP-Symcon ab, das nutzt PHP.
Wenn Du das lieber ein Javascript auf der CCU3 ausführen willst, hier ein Javascript zur Ausführung im NEO Server, Variablen zum absichern müsstest Du noch nach Bedarf anlegen und ergänzen.
Ausgelesen werden mit dem Skript die aktuelle Temperatur, die Beschreibung des Wetters und die Bezeichnung des Wetter Icons.
Code: Alles auswählen
const http = require('http'); // OpenWeatherMap API-Schlüssel und URL // hier persönlichen API Key ergänzen const apiKey = '123456789abcdefg'; const apiUrl = 'http://api.openweathermap.org/data/2.5/weather'; // Die gewünschte Stadt und das Land , Beispiel Berlin const city = 'Berlin'; const country = 'DE'; // URL für die API-Anfrage const url = `${apiUrl}?q=${city},${country}&appid=${apiKey}`; // Funktion, um Daten von der API abzurufen const request = http.get(url, (response) => { let data = ''; response.on('data', (chunk) => { data += chunk; }); response.on('end', () => { const weatherData = JSON.parse(data); console.log(weatherData); // Temperatur in Kelvin von API erhalten const temperatureKelvin = weatherData.main.temp; // Temperatur in Celsius umwandeln const temperatureCelsius = temperatureKelvin - 273.15; // Wetterbeschreibung und Icon const weatherDescription = weatherData.weather[0].description; const weatherIcon = weatherData.weather[0].icon; console.log('Temperatur (Celsius):', temperatureCelsius.toFixed(2)); console.log('Wetterbeschreibung:', weatherDescription); console.log('Wetter-Icon:', weatherIcon); }); }); request.on('error', (error) => { console.error('Fehler beim Abrufen der Wetterdaten:', error); });
Dem Wetter Icon z.B. 01d und der Beschreibung z.B. clear sky musst Du dann eben eine Statusregel für Text bzw. eine Statusregel für eine Grafik zuweisen. Als Grafik wählst Du eben das aus, was Dir persönlich gefällt.
Code: Alles auswählen
<current>
<city id="2803588" name="Zwenkau">
<coord lon="12.3167" lat="51.2167"/>
<country>DE</country>
<timezone>7200</timezone>
<sun rise="2024-05-19T03:14:11" set="2024-05-19T19:00:31"/>
</city>
<temperature value="19.09" min="17.01" max="21.52" unit="celsius"/>
<feels_like value="18.8" unit="celsius"/>
<humidity value="67" unit="%"/>
<pressure value="1010" unit="hPa"/>
<wind>
<speed value="1.79" unit="m/s" name="Light breeze"/>
<gusts value="3.58"/>
<direction value="178" code="S" name="South"/>
</wind>
<clouds value="100" name="overcast clouds"/>
<visibility value="7333"/>
<precipitation mode="no"/>
<weather number="804" value="overcast clouds" icon="04d"/>
<lastupdate value="2024-05-19T11:32:05"/>
</current>
Wenn Du Dir den Testmodus im AIO CREATOR NEO aktivierst, den NEO Server auf der CCU3 aktivierst, läuft das Skript auch direkt auf der CCU3 im NEO Server. Wenn Du das Skript so weit angepasst hast, das alle Werte, die Du brauchst, in Variablen auf der CCU3 abgespeichert werden, musst Du nur einen Task erstellen, dass das Skript zyklisch ausführt. Danach kannst Du den Testmodus wieder deaktivieren, der Task wird dann automatisch im Hintergrund ausgeführt und die Variablen aktualisiert.
Kann ich leider nichts zu sagen, ich persönlich nutzte kein rudimentäres Homematic Skript, ist mir persönlich zu umständlich und zu schlecht vom Hersteller dokumentiert. In dem Skript scheint auch irgendwie XML ausgewertet zu werden.Chemieka hat geschrieben: ↑19.05.2024, 13:05Zum Vergleich ich habe dieses Skript am laufen:
viewtopic.php?f=18&t=35702&hilit=OpenWeather+CCU+Script
Was für Daten suchst Du denn genau, bzw. was willst Du denn auslesen? Hast Du persönlich auch Zugriff auf die One Call API 3.0?