Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Ulanzi T001 / AWTRIX Light Weather Script.

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    12
    1
    260

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.9k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.3k

Ulanzi T001 / AWTRIX Light Weather Script.

Scheduled Pinned Locked Moved Skripten / Logik
67 Posts 19 Posters 13.3k Views 18 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • B bouster

    @steffe-s Ich habe es in Zeile 192 angepasst. Ob das der "schöne" Weg ist weiß ich nicht, da ich mich selbst nicht so gut auskenne.

    @Andy200877 Ich habe noch einen Vorschlag. Wenn die Uhr ausgeschaltet ist und wieder eingeschaltet wird muss ich das Skript manuell neustarten. Es wäre doch schön, wenn das automatisch passiert.

    Steffe.S.S Offline
    Steffe.S.S Offline
    Steffe.S.
    wrote on last edited by Steffe.S.
    #61

    @bouster sagte in Ulanzi T001 / AWTRIX Light Weather Script.:

    @steffe-s Ich habe es in Zeile 192 angepasst. Ob das der "schöne" Weg ist weiß ich nicht, da ich mich selbst nicht so gut auskenne.

    vielen danke für Deine Antwort, hat super funktioniert.

    ich habe noch eine Frage zu den Icons, bei mir flackern mache Icons, bzw. werden nicht richtig angezeigt (hier die Wolke unter der Sonne). Mir scheint es so, als würde das Bild immer wieder neu gestartet werden und kommt garnicht zum Ende. Kann ich das irgendwie fixen?

    awtrix (1).gif

    edit: es liegt an diesem einzigen Icon (13852). Ich habe mir das Icon etwas verändert und dann flackert es auch nicht mehr (60742).

    awtrix (2).gif

    Vielleicht kann mir jemand auch eine andere Lösung nennen.

    Gruss S.

    T 1 Reply Last reply
    1
    • Steffe.S.S Offline
      Steffe.S.S Offline
      Steffe.S.
      wrote on last edited by Steffe.S.
      #62

      falscher Beitrag, sorry

      1 Reply Last reply
      0
      • B Offline
        B Offline
        bouster
        wrote on last edited by
        #63

        Hallo zusammen,
        hat jemand eine Idee was geändert werden muss, damit das Wetter von "morgen" angezeigt wird?

        arteckA 1 Reply Last reply
        0
        • B bouster

          Hallo zusammen,
          hat jemand eine Idee was geändert werden muss, damit das Wetter von "morgen" angezeigt wird?

          arteckA Offline
          arteckA Offline
          arteck
          Developer Most Active
          wrote on last edited by
          #64

          @bouster

          var obj_wetter_url = "openweathermap.0.forecast.current.icon";      // Quelle für Wettersymbol
          var obj_temperatur = "openweathermap.0.forecast.current.temperature"; // Quelle für Temperaturwert
          

          tauche gegen

          var obj_wetter_url = "openweathermap.0.forecast.day1.icon";      // Quelle für Wettersymbol
          var obj_temperatur = "openweathermap.0.forecast.day1.temperatureMax"; // Quelle für Temperaturwert
          

          zigbee hab ich, zwave auch, nuc's genauso und HA auch

          1 Reply Last reply
          0
          • A Andy200877

            Ich habe seit gestern auch eine Ulanzi T001 Pixeluhr.

            Das Skript erzeugt nach dem Start eine neue App auf der Uhr.
            Sollten sich nun die Datenpunkte für das Wettersymbol oder der Temperaturwert ändern, werden die geänderten Daten erneut zur Uhr gesendet.

            Im Skript lässt sich der Pfad zu den Skripteigenen Objekten anpassen.

            var bezeichnung_uhr = "Ulanzi_#1"; 
            var appname = "Wetter"; 
            var objektpfad = "0_userdata.0.Visualisierung.Ulanzi"; 
            

            Es werden in diesem Fall ein paar Objekte unter : "objektpfad.bezeichnung_uhr.appname " erstellt.
            In diesem Beispiel werden also unter : "0_userdata.0.Visualisierung.Ulanzi.Ulanzi_#1.Wetter."
            folgende Objekte erstellt :

            • Text_center
            • backgroundcolor
            • fontcolor
            • rainbow
            • visible

            Über das Objekt visible lässt sich meine Wetter App auf der Uhr ein.-/ausschalten.
            Der Rest ist denke ich mal selbsterklärend.

            Als Wetterdienst habe ich mich für "openweathermap" entschieden, weil es dort auch unterschiedliche Symbole für Tag und Nacht gibt und das aktuelle Wetter als Symbol vorliegt.
            Für Openweathermap wird jedoch ein API-Key benötigt. Dieser ist aber kostenlos und schnell erstellt. Am besten dazu mal in den Openweathermap-Adapter schauen.
            Falls jemand einen anderen guten Wetterdienst kennt, immer raus mit der Sprache, dann passe ich mein Skript dafür an....

            Anpassen / Einrichtung des Skripts
            Eigentlich müsst Ihr nur die Zeilen 6-16 nach Euren Bedürfnissen anpassen.
            Ihr müsst natürlich die IP-Adresse und Eure Zugangsdaten, falls Ihr welche auf der Uhr habt im Skript anpassen.
            In Zeile 15 muss der "Link" zum Openweathermap Icon angegeben werden. Evtl. muss bei Euch die Instanz Nummer geändert werden.
            In Zeile 16 wird der Link zum Temperaturwert eingetragen, bei mir ist dort z.B. meine Wetterstation eingetragen. Somit bekomme ich Livewerte. (Die Temperaturwerte werden auf 1 Nachkommastelle gerundet)

            Zum Schluss müssen natürlich noch die Wettersymbole auf Eure Uhr geladen werden. Die entsprechenden ID's sind Zeile 22-39 im Skript angegeben. (var wettericon1-18)

            Einige Symbole finde ich nicht besonders schön und sie "springen" bei der Anzeige, aber das liegt wohl an den Icons. Wenn jemand andere schönere / fehlerfreie Icons hat, immer her damit.... ;-)

            Und zum Schluss nochmal vielen Dank, für die User welche mich unterstützt und Verbesserungen zum Skript haben. Ich bin nur ein "Hobbyprogrammierer".

            Hier mein Code / JavaScript :

            //  **********************
            //  AB HIER BITTE ANPASSEN 
            //  **********************
            
            // IP-Adresse der Uhr
            var ipadresse = "192.168.14.220";                       // IP-Adrersse der Uhr
            var username = "user";                                  // Benutzername, falls unter AwTrix unter Auth eins eingerichtet ist.
            var password = "awtrix";                                // Passwort, falls unter Awtrix unter Auth eins eingerichtet ist.
            var bezeichnung_uhr = "Ulanzi_#1";                      // Bezeichnung der Uhr, falls man mehrere besitzt.
            var appname = "Wetter";                                 // Bezeichnung der App auf der Uhr
            var objektpfad = "0_userdata.0.Visualisierung.Ulanzi";  // Dort werden die Objekte zum steuern erstellt. z.B. 0_userdata.0.Visualisierung.Ulanzi.Ulanzi_#1.Wetter
            var debug = false;                                       // (true/false) Debug Modus mehr Logausgaben beim Betrieb
            
            // Openweathermap
            var obj_wetter_url = 'openweathermap.0.forecast.current.icon';      // Quelle für Wettersymbol
            var obj_temperatur = 'wiffi-wz.0.root.192_168_14_117.w_temperatur'; // Quelle für Temperaturwert
            
            
            
            // 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
            
            // *****************************************
            // AB HIER MUSS NICHTS MEHR ANGEPASST WERDEN
            // *****************************************
            
            
            console.log('Ulanzi Wetterscript start für Uhr ' + bezeichnung_uhr + "(" + ipadresse + ")");
            
            var objekte = objektpfad + '.' + bezeichnung_uhr + '.' + appname
            createState(objekte + '.visible', true, {read: true, write: true,  type: "boolean", name: "App visible"});
            createState(objekte + '.fontcolor', '#FFFFFF', {read: true, write: true,  type: "string", name: "Fontcolor"});
            createState(objekte + '.backgroundcolor', '#000000', {read: true, write: true,  type: "string", name: "Backgroundcolor"});
            createState(objekte + '.rainbow', false, {read: true, write: true,  type: "boolean", name: "Rainbow Font"});
            createState(objekte + '.Text_center', true, {read: true, write: true,  type: "boolean", name: "Center text"});
            
            
            
            await wait(2000);
            
            
            
            var wetter_url = getState(obj_wetter_url).val;
            var temperatur = getState(obj_temperatur).val;
            var schriftfarbe = getState(objekte + '.fontcolor').val;
            var hintergrundfarbe = getState(objekte + '.backgroundcolor').val;
            var regenbogen = getState(objekte + '.rainbow').val;
            var zentriert = getState(objekte + '.Text_center').val;
            var temperatureinheit = (await getObjectAsync(obj_temperatur)).common.unit;
            
            
            if (getState(objekte + '.visible').val == true) {
                await update_wetter();
            }
            
            
            on({ id: [].concat([obj_wetter_url]).concat([obj_temperatur]), change: 'ne' }, async (obj) => {
                wetter_url = getState(obj_wetter_url).val;
                temperatur = getState(obj_temperatur).val;
                temperatureinheit = (await getObjectAsync(obj_temperatur)).common.unit;
                if (getState(objekte + '.visible').val == true) {
                    await update_wetter();
                }
            });
            
            
            on({ id: [].concat([objekte + '.visible']), change: 'ne' }, async (obj) => {
                setState(obj.id, obj.state.val, true);
              if ((obj.state ? obj.state.val : "") == true) {
                await update_wetter();
              } else {
                await delete_wetter();
              }
            });
            
            on({ id: [].concat([objekte + '.fontcolor']), change: 'ne' }, async (obj) => {
                setState(obj.id, obj.state.val, true);
                schriftfarbe = (obj.state ? obj.state.val : "");
                await update_wetter();
            });
            
            on({ id: [].concat([objekte + '.backgroundcolor']), change: 'ne' }, async (obj) => {
                setState(obj.id, obj.state.val, true);
                hintergrundfarbe = (obj.state ? obj.state.val : "");
                await update_wetter();
            });
            
            on({ id: [].concat([objekte + '.rainbow']), change: 'ne' }, async (obj) => {
                setState(obj.id, obj.state.val, true);
                regenbogen = (obj.state ? obj.state.val : "");
                await update_wetter();
            });
            
            on({ id: [].concat([objekte + '.Text_center']), change: 'ne' }, async (obj) => {
                setState(obj.id, obj.state.val, true);
                zentriert = (obj.state ? obj.state.val : "");
                await update_wetter();
            });
            
            
            async function update_wetter() {
                var ulanzi_weather_icon = "";
                var result ="";
            // 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 ipadress = ipadresse;
              let dataObj = {};
              dataObj.text = '' + temperatur + temperatureinheit;
              dataObj.textCase = 2; // 2 so wie gesendet, 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 -u " + username + ":" + password + " -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() {
                let ipadress = ipadresse;
                var post = "curl -X POST -u " + username + ":" + password + " -d  '' -H \'Content-Type: application/json\' \'http://"+ipadress+"/api/custom?name=" + appname + "'";
                exec(post, async (error, result, stderr) => {
                  if (debug) {
                      console.log("Deaktiviere " + appname);
                      console.log(post);
                      console.log(result);
                  }
                });
            }
            
            

            Changelog
            11.11.2023 : Benutzername / Kennwort eingefügt, bessere Debug Informationen, mehr Kommentare im Skript.

            S Offline
            S Offline
            srutster
            wrote on last edited by srutster
            #65

            @andy200877 Hi,

            ich versuche gerade das Skript einzurichten, den Openweathermap Adapter habe ich bereits mit der API eingerichtet. Allerdings verstehe ich nicht ganz was bei Zeile 15 und 16 eingetragen werden muss. Könntest du das bitte nochmal etwas genauer erklären. Was ist "der "Link" zum Openweathermap Icon", bzw wo bekomme ich den her? Und der Link zum Temperaturwert sollte ja auch von Openweathermap kommen oder verstehe ich das falsch?

            Danke
            LG

            EDIT: jetzt funktioniert es, das Problem war das der richtige code bez. der beiden Punkte in den kommentaren war und nicht ganz oben im startpost

            1 Reply Last reply
            0
            • S Offline
              S Offline
              Spiecky
              wrote on last edited by
              #66

              Hallo zusammen,

              habe mir auch die Instanz Awtrix-light installiert und über eine Experten App mit dem Java-Script alles zum laufen bekommen. Hier schon mal vielen Dank für den genialen Adapter und das Script. Habe leider quasi keine Java Programmierkenntnisse. Kopiere/klaue mir immer alles zusammen und dann try and error.....

              Damit komme ich jetzt aber leider nicht weiter. Deshalb hier meine bescheidene Frage bzw. Wunsch:

              Ich habe einen Datenpunkt True/False vom Regensensor und würde damit gerne z.B. den Hintergundeffekt Matrix in Blau bei der Wetter-App einbauen. Also das beim Anzeigen der App und Regen, der Effekt Matrix (in blau) eingeschaltet wird.
              Die Option gibt es leider nur bei den "normalen" Apps. Ich habe leider nicht mal den Java Befehl gefunden um einen Effect zu aktivieren.

              Vielleicht ist es ja ganz einfach.....falls nicht....muss ja nicht sein ;-)

              Vielen Dank schon mal im Voraus für Eure immer wieder grandiose Arbeit hier......

              1 Reply Last reply
              0
              • Steffe.S.S Steffe.S.

                @bouster sagte in Ulanzi T001 / AWTRIX Light Weather Script.:

                @steffe-s Ich habe es in Zeile 192 angepasst. Ob das der "schöne" Weg ist weiß ich nicht, da ich mich selbst nicht so gut auskenne.

                vielen danke für Deine Antwort, hat super funktioniert.

                ich habe noch eine Frage zu den Icons, bei mir flackern mache Icons, bzw. werden nicht richtig angezeigt (hier die Wolke unter der Sonne). Mir scheint es so, als würde das Bild immer wieder neu gestartet werden und kommt garnicht zum Ende. Kann ich das irgendwie fixen?

                awtrix (1).gif

                edit: es liegt an diesem einzigen Icon (13852). Ich habe mir das Icon etwas verändert und dann flackert es auch nicht mehr (60742).

                awtrix (2).gif

                Vielleicht kann mir jemand auch eine andere Lösung nennen.

                Gruss S.

                T Offline
                T Offline
                tom_33
                wrote on last edited by
                #67

                @steffe-s vielen dank!!

                1 Reply Last reply
                1
                Reply
                • Reply as topic
                Log in to reply
                • Oldest to Newest
                • Newest to Oldest
                • Most Votes


                Support us

                ioBroker
                Community Adapters
                Donate

                790

                Online

                32.5k

                Users

                81.6k

                Topics

                1.3m

                Posts
                Community
                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                ioBroker Community 2014-2025
                logo
                • Login

                • Don't have an account? Register

                • Login or register to search.
                • First post
                  Last post
                0
                • Home
                • Recent
                • Tags
                • Unread 0
                • Categories
                • Unreplied
                • Popular
                • GitHub
                • Docu
                • Hilfe