Hier noch das Script von der "Wetter-App":
// v0.2
const displayTemp = true;
const appName = 'weather';
const objIdIcon = 'openweathermap.0.forecast.current.icon';
const objIdText = 'openweathermap.0.forecast.current.state';
const objIdTemp = 'hm-rpc.1.00281D898A7B6B.1.ACTUAL_TEMPERATURE';
const iconMapping = {
'01d': '11201', // clear sky day
'01n': '52163', // clear sky night
'02d': '22315', // few clouds day
'02n': '26088', // few clouds night
'03d': '22378', // scattered clouds day
'03n': '21907', // scattered clouds night
'04d': '13852', // broken clouds day
'04n': '52159', // broken clouds night
'09d': '43706', // shower rain day
'09n': '43739', // shower rain night
'10d': '22257', // rain day
'10n': '72', // rain night
'11d': '43733', // thunderstorm day
'11n': '43748', // thunderstorm night
'13d': '43732', // snow day
'13n': '26090', // snow night
'50d': '43708', // mist day
'50n': '43741', // mist night
};
async function refreshExpertApp() {
try {
const iconState = await getStateAsync(objIdIcon);
if (iconState && iconState.ack && iconState.val) {
const icon = /([0-9]{2}[d|n]{1})/.exec(iconState.val)[0];
if (iconMapping[icon]) {
await setStateAsync(`awtrix-light.0.apps.${appName}.icon`, { val: iconMapping[icon] });
}
}
let temp = 0;
const tempState = await getStateAsync(objIdTemp);
if (tempState && tempState.ack && tempState.val) {
temp = tempState.val;
}
if (temp > 30) {
await setStateAsync(`awtrix-light.0.apps.${appName}.textColor`, { val: '#bd2020' });
} else if (temp < 0) {
await setStateAsync(`awtrix-light.0.apps.${appName}.textColor`, { val: '#236fd9' });
} else {
await setStateAsync(`awtrix-light.0.apps.${appName}.textColor`, { val: '#ffffff' });
}
const textState = await getStateAsync(objIdText);
if (textState && textState.ack && textState.val) {
if (displayTemp) {
await setStateAsync(`awtrix-light.0.apps.${appName}.text`, { val: `${textState.val} ${formatValue(temp, 1)} °C` });
} else {
await setStateAsync(`awtrix-light.0.apps.${appName}.text`, { val: textState.val });
}
}
} catch (err) {
console.error(err);
}
}
on({ id: [objIdIcon, objIdText, objIdTemp], change: 'ne' }, refreshExpertApp);
// Init on startup
refreshExpertApp();