NEWS
Ulanzi T001 / AWTRIX Light Weather Script.
-
Mir gefällt es sehr gut, vielen Dank!
-
@andy200877 sagte in Ulanzi T001 / AWTRIX Light Weather Script.:
if (wetter_url == 'https://openweathermap.org/img/w/01d.png') {
mach dich mal mit der switch case anweisung vertraut
https://www.w3schools.com/js/js_switch.asp
ist performaner
-
Gefällt mir auch. Das ganze mit switch müsste etwa so aussehen.
// AB HIER BITTE ANPASSEN // ********************** // IP-Adresse der Uhr var ipaddresse = "awtrix.iot"; // Openweathermap var obj_wetter_url = 'openweathermap.0.forecast.current.icon'; // Temperaturwert var obj_temperatur = 'openweathermap.0.forecast.current.temperature'; var temperatureinheit = '°C'; // Wettersymbole-ID Nummern von https://developer.lametric.com/icons // Jedes Symbol muss auch auf die Uhr hochgeladen werden ! var wettericon01 = '11201'; // klarer Himmel Tag var wettericon02 = '52163'; // klarer Himmel Nacht var wettericon03 = '22315'; // ein paar Wolken Tag (11-25% Wolken) var wettericon04 = '26088'; // ein paar Wolken Nacht (11-25% Wolken) var wettericon05 = '22378'; // aufgelockerte Bewölkung Tag (25-50% Wolken) var wettericon06 = '21907'; // aufgelockerte Bewölkung Nacht (25-50% Wolken) var wettericon07 = '13852'; // bewölkt Tag (51-100%) var wettericon08 = '52159'; // bewölkt Nacht (51-100%) var wettericon09 = '43706'; // Regenschauer Tag var wettericon10 = '43739'; // Regenschauer Nacht var wettericon11 = '22257'; // Regen Tag var wettericon12 = '72'; // Regen Nacht var wettericon13 = '43733'; // Gewitter Tag var wettericon14 = '43748'; // Gewitter Nacht var wettericon15 = '43732'; // Schnee Tag var wettericon16 = '26090'; // Schnee Nacht var wettericon17 = '43708'; // Nebel Tag var wettericon18 = '43741'; // Nebel Nacht var schriftfarbe = '#ffffff'; // Schriftfarbe für die Temperatur var hintergrundfarbe = '#000000'; // Hintergrundfarbe für die Temperatur var regenbogen = false; // Regenbogeneffekt true/false var zentriert = true; // Temperarurwert zentrieren // ***************************************** // AB HIER MUSS NICHTS MEHR ANGEPASST WERDEN // ***************************************** console.log('Ulanzi Wetterscript start...'); var wetter_url = getState(obj_wetter_url).val; var temperatur = getState(obj_temperatur).val; await update_wetter(); on({ id: [].concat([obj_wetter_url]).concat([obj_temperatur]), change: 'ne' }, async (obj) => { console.log('Updating...'); wetter_url = getState(obj_wetter_url).val; temperatur = getState(obj_temperatur).val; await update_wetter(); }); async function update_wetter() { var ulanzi_weather_icon = ""; // https://blueforcer.github.io/awtrix-light/#/api switch (wetter_url) { case 'https://openweathermap.org/img/w/01d.png': ulanzi_weather_icon = wettericon01; break; case 'https://openweathermap.org/img/w/01n.png': ulanzi_weather_icon = wettericon02; break; case 'https://openweathermap.org/img/w/02d.png': ulanzi_weather_icon = wettericon03; break; case 'https://openweathermap.org/img/w/02n.png': ulanzi_weather_icon = wettericon04; break; case 'https://openweathermap.org/img/w/03d.png': ulanzi_weather_icon = wettericon05; break; case 'https://openweathermap.org/img/w/03n.png': ulanzi_weather_icon = wettericon06; break; case 'https://openweathermap.org/img/w/04d.png': ulanzi_weather_icon = wettericon07; break; case 'https://openweathermap.org/img/w/04n.png': ulanzi_weather_icon = wettericon08; break; case 'https://openweathermap.org/img/w/09d.png': ulanzi_weather_icon = wettericon09; break; case 'https://openweathermap.org/img/w/09n.png': ulanzi_weather_icon = wettericon10; break; case 'https://openweathermap.org/img/w/10d.png': ulanzi_weather_icon = wettericon11; break; case 'https://openweathermap.org/img/w/10n.png': ulanzi_weather_icon = wettericon12; break; case 'https://openweathermap.org/img/w/11d.png': ulanzi_weather_icon = wettericon13; break; case 'https://openweathermap.org/img/w/11n.png': ulanzi_weather_icon = wettericon14; break; case 'https://openweathermap.org/img/w/13d.png': ulanzi_weather_icon = wettericon15; break; case 'https://openweathermap.org/img/w/13n.png': ulanzi_weather_icon = wettericon16; break; case 'https://openweathermap.org/img/w/50d.png': ulanzi_weather_icon = wettericon17; break; case 'https://openweathermap.org/img/w/50n.png': ulanzi_weather_icon = wettericon18; } temperatur = Math.round(temperatur * 10) / 10; let ipaddress = ipaddresse; let dataObj = {}; dataObj.text = '' + temperatur + temperatureinheit; dataObj.textCase = 2; // 2 so wie gesndet, 1= Uppercase, 0 = global settings dataObj.topText = false; // boolean Draw the text on top. dataObj.textOffset = 0; dataObj.center = zentriert; dataObj.color = schriftfarbe; dataObj.background = hintergrundfarbe; dataObj.rainbow = regenbogen; dataObj.icon = ulanzi_weather_icon; dataObj.pushIcon = 0; dataObj.duration = 5; dataObj.repeat = 1; //console.log((['curl -X POST ','-d \''+ JSON.stringify(dataObj)+'\' ','-H \'Content-Type: application/json\' ','\'http://'+ipaddress+'/api/custom?name=testapp\'',''].join(''))); exec((['curl -X POST ', '-d \'' + JSON.stringify(dataObj) + '\' ', '-H \'Content-Type: application/json\' ', '\'http://' + ipaddress + '/api/custom?name=wetter\'', ''].join(''))); }
Bin aber auch nur Hobbyprogrammierer.
-
Was mir auffällt ist, das die Animationen der Icons nicht gut laufen. Die sollten anders aussehen als sie dargestellt werden
-
Edit 11.11.2023 :
Das neuste Skript gibt es nun nur noch am Anfang des Threads. -
@andy200877 Leider wird bei mir nichts auf der Ulanzi angezeigt - Script läuft und Datenpunkte in userdata wurden angelegt, aber keine Anzeige am Display ... ?
-
@gartenrosenzuechter
Hast Du die IP-Adresse entsprechend angepasst ?
Taucht die App "Wetter" in der Uhr auf ? -
@andy200877 Ip Adresse ist korrekt eingestellt - Awtrix version 0.90 App ist am Gerät nicht ersichtlich
-
@gartenrosenzuechter Die AWTRIX Version wird beim Booten des Geräts angezeigt.
-
@rushmed ja, wie geschrieben 0.90
-
@gartenrosenzuechter wenn die erstellten Objekte im IObroker vorher wieder gelöscht werden, erzeugt das Script diesen log.
-
@gartenrosenzuechter wenn die erstellten Objekte im IObroker vorher wieder gelöscht werden, erzeugt das Script diesen log.
-
@gartenrosenzuechter ja weil die dann neu erzeugt werden..
immer bei erstellen und erstmaligen Script lauf...ist IMMER so .. egal welches script
-
Ich habe mein Skript nochmal angepasst, damit diese Warnungen beim ersten Start nicht mehr kommen.
In den Einstellungen vom Javascript Adapter muss der Haken bei Kommando "exec" erlauben gesetzt sein.
Ansonsten nochmal mein überarbeitetes Skript von heute ausprobieren und die Debug Ausgabe posten.
-
@Andy200877
Vielen Dank, dass Du dieses Script zur Verfügung stellst. Es wertet die Ulanzi T001 deutlich auf!!Frage am Rand: In den Awtrix Light Instanzeinstellungen kann ich ja eine benutzerdefinierte App erstellen. Ist es möglich, statt einer Symbol-Nummer (z.B. 43708) auch einen Datenpunkt oder eine Variable (mit einem entsprechenden Wert) anzugeben? Ich habe es nicht hingekriegt..
-
@otti-0
Das geht doch wunderbar mit dem ulanzi adapter über die "Experten Apps".
Einfach dort einen App Namen eintragen und die entsprechenden objekte für das icon und den den text über blockly/javascript,.. eintragen lassen. -
@andy200877 Exec erlauben ist im Javascript Adapter eingestellt - leider weiterhin keine Anzeige der "App" am Display. anbei der Log
-
@gartenrosenzuechter
Ändere mein Skript mal bitte um diesen Bereich und dann nochmal eine Debug Ausgabe dazu :temperatur = Math.round(temperatur * 10) / 10; let ipadress = ipadresse; let dataObj = {}; dataObj.text = '' + temperatur + temperatureinheit; dataObj.textCase = 2; // 2 so wie gesndet, 1= Uppercase, 0 = global settings dataObj.topText = false; // boolean Draw the text on top. dataObj.textOffset = 0; dataObj.center = zentriert; dataObj.color = schriftfarbe; dataObj.background = hintergrundfarbe; dataObj.rainbow = regenbogen; dataObj.icon = ulanzi_weather_icon; dataObj.pushIcon = 0; dataObj.duration = 5; dataObj.repeat = 1; var post = "curl -X POST -d '" + JSON.stringify(dataObj)+"\' -H \'Content-Type: application/json\' \'http://"+ipadress+"/api/custom?name=" + appname + "'"; exec(post, async (error, result, stderr) => { if (debug) { console.log(post); console.log(result); } }); } async function delete_wetter() {
-
@andy200877 ich hoffe ich habe es richtig verstanden - habe die Originalzeilen 175 - 198 durch den obigen Code (Zeile 1 - 25 ersetzt
--> keine Änderung
-
@gartenrosenzuechter
Normalerweise sollte es so aussehen :19:43:48.851 info javascript.0 (3934711) script.js.common.Visualisierung.Ulanzi_Wetter_#2: curl -X POST -d '{"text":"9.2°C","textCase":2,"topText":false,"textOffset":0,"center":true,"color":"#FFFFFF","background":"#000000","rainbow":false,"icon":"72","pushIcon":0,"duration":5,"repeat":1}' -H 'Content-Type: application/json' 'http://192.168.14.221/api/custom?name=Wetter' 19:43:48.851 info javascript.0 (3934711) script.js.common.Visualisierung.Ulanzi_Wetter_#2: OK
Und ein "Ok" als Antwort von der Ulanzi zurück kommen.
Ist die IP-Adresse wirklich richtig und AWTRIX Light auf der Uhr geflasht ?
Läuft der Test Adapter Awtrix-Light Adapter bei Dir einwandfrei ?