Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Praktische Anwendungen (Showcase)
    4. ESP Matrix Anzeige fully IoBroker steuerbar

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    ESP Matrix Anzeige fully IoBroker steuerbar

    This topic has been deleted. Only users with topic management privileges can see it.
    • Mr. Burns
      Mr. Burns @liv-in-sky last edited by

      @liv-in-sky ich hab das Projekt von jörgli verwendet auf welches du im ersten post verweist. Dachte das wäre das neueste...

      Ich probiere ich mal deins aus...mit den modi wäre genau was ich suche.

      Danke

      liv-in-sky 1 Reply Last reply Reply Quote 0
      • liv-in-sky
        liv-in-sky @Mr. Burns last edited by liv-in-sky

        @Mr-Burns

        dann mußt du mit @joergeli diskutieren

        seine mqtt sache hat halt den vorteil, dass die daten sofort ausgetauscht werden - bei mir muss man mitangeben, wann der wemos (zeitspanne - z.b. alle 20 sek) die daten holt - ist def. ein besserer weg von ihm

        ich wollte halt nicht, dass in der küche die matrix oft aus und eingeschalten wird - manche wemos reagieren darauf mit speicher verlust/reset - wie z.b meiner 😞

        1 Reply Last reply Reply Quote 0
        • JB_Sullivan
          JB_Sullivan last edited by JB_Sullivan

          Einen guten Morgen zusammen, speziell @joergeli und @liv-in-sky .

          Ich habe mir die Hardware nun zusammengebaut und mich mit Arduino soweit beschäftigt, das ich es hin bekommen habe das Sketch von joergeli fehlerfrei kompiliert und übertagen zu bekommen. Hatte davor noch nichts mit Arduiono zu tun und muss sagen das dass ein ganz schöner Zirkus ist, bis man alle Bibliotheken zusammen gesammelt hat.

          Wie dem auch sei, das Sketch wurde um meine persönlichen Netzwerkeinstellungen geändert und auf den WEMOS D1 mini übertragen. Das scheint soweit auch geklappt zu haben, denn ich bekomme eine Laufschrift mit dem Hinweis "Warte auf Daten von ioBroker" Der WEMOS ist im Netzwerk sichtbar und anPingbar.

          Als nächstes habe ich dann das JavaSkript von joergeli genommen und ebenfalls um meine Einstellungen im Bereich der IP Adressen verändert.

          Und hier beginnt das "Drama". In den selbst angelegten Datenpunkt unter javaskript.0 wird nichts hinein geschrieben. Auch wartet der WEMOS immer noch auf Daten vom Broker, es wird von ioB nichts gesendet.

          Den simple RESTful API Adapter habe ich installiert - muss da irgend etwas eingetragen werden? Ich habe die Instanz jetzt einfach so am laufen wie sie angelegt wurde - ohne weitere Änderungen oder Eintragungen.

          Ich habe die Datenpunkte in dem Skript entsprechen meinen Datenpunkten angepasst, aber auch durch das Skript hagelt es Fehlermeldungen, weil ich z.B. Post ist da und DutyCyle nicht habe - ich weiß aber nicht wie ich diese Fehler weg bekomme.

          Hauptproblem ist aber erstmal die nicht zustande kommende Verbindung vom ioB zum WEMOS. Könnt ihr mir da ggf. ein bisschen unter die Arme greifen?

          Hier der Fehler Log vom geändert Skript.

          javascript.0	2020-09-05 06:35:30.013	error	(1652) at Timer.processTimers (timers.js:223:10)
          javascript.0	2020-09-05 06:35:30.013	error	(1652) at listOnTimeout (timers.js:263:5)
          javascript.0	2020-09-05 06:35:30.013	error	(1652) at tryOnTimeout (timers.js:300:5)
          javascript.0	2020-09-05 06:35:30.012	error	(1652) at ontimeout (timers.js:436:11)
          javascript.0	2020-09-05 06:35:30.010	error	(1652) at Timeout._onTimeout (C:\iobroker\GLT\node_modules\node-schedule\lib\schedule.js:510:7)
          javascript.0	2020-09-05 06:35:30.010	error	(1652) at C:\iobroker\GLT\node_modules\node-schedule\lib\schedule.js:552:11
          javascript.0	2020-09-05 06:35:30.010	error	(1652) at Job.invoke (C:\iobroker\GLT\node_modules\node-schedule\lib\schedule.js:173:10)
          javascript.0	2020-09-05 06:35:30.010	error	(1652) at Job.nodeSchedule.scheduleJob [as job] (C:\iobroker\GLT\node_modules\iobroker.javascript\lib\sandbox.js:1260:34)
          javascript.0	2020-09-05 06:35:30.010	error	(1652) at Object.Laufschrift_Aktualisieren (script.js.Aktiv.Matrix-Laufschrift:87:28)
          javascript.0	2020-09-05 06:35:30.009	error	(1652) Error in callback: ReferenceError: PostIstDa is not defined
          
          joergeli 1 Reply Last reply Reply Quote 0
          • JB_Sullivan
            JB_Sullivan last edited by

            @liv-in-sky Sorry das ich dein Sketch (noch) nicht benutze, aber beim komplieren kommt immer die folgende Fehlermeldung und als "seit einem Tag Arduino Nutzer" bin ich nicht in der Lage das zu beheben.

            Arduino: 1.8.13 (Windows Store 1.8.42.0) (Windows 10), Board: "LOLIN(WEMOS) D1 R2 & mini, 80 MHz, Flash, Legacy (new can return nullptr), All SSL ciphers (most compatible), 4MB (FS:1MB OTA:~1019KB), v2 Lower Memory, Disabled, None, All Flash Contents, 115200"
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            ConfigFileHandling:17:11: error: DynamicJsonBuffer is a class from ArduinoJson 5. Please see arduinojson.org/upgrade to learn how to upgrade your program to ArduinoJson version 6
            
               DynamicJsonBuffer jsonBuffer;
            
                       ^
            
            ConfigFileHandling:45:11: error: DynamicJsonBuffer is a class from ArduinoJson 5. Please see arduinojson.org/upgrade to learn how to upgrade your program to ArduinoJson version 6
            
               DynamicJsonBuffer jsonBuffer;
            
                       ^
            
            Mehrere Bibliotheken wurden für "WiFiUdp.h" gefunden
            
             Benutzt: C:\Users\blank\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.7.4\libraries\ESP8266WiFi
            
             Nicht benutzt: C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.42.0_x86__mdqgnx93n4wtt\libraries\WiFi
            
            Mehrere Bibliotheken wurden für "ArduinoJson.h" gefunden
            
             Benutzt: C:\Users\blank\Documents\Arduino\libraries\ArduinoJson
            
             Nicht benutzt: C:\Users\blank\Documents\Arduino\libraries\ArduinoJson-5.11.2
            
            exit status 1
            
            DynamicJsonBuffer is a class from ArduinoJson 5. Please see arduinojson.org/upgrade to learn how to upgrade your program to ArduinoJson version 6
            
            
            liv-in-sky 1 Reply Last reply Reply Quote 0
            • liv-in-sky
              liv-in-sky @JB_Sullivan last edited by

              @JB_Sullivan sorry - da ist @joergeli zuständig

              JB_Sullivan 1 Reply Last reply Reply Quote 0
              • JB_Sullivan
                JB_Sullivan @liv-in-sky last edited by JB_Sullivan

                @liv-in-sky ich habe joergeli seine Version runter geworfen, nachdem auch ich es endlich geschaft habe, deine Version fehlerfrei zu komplilieren. Jetzt sitze ich aber schon eine ganze Zeit daran eine Verbindung zu Stande zu bekommen. Im Display wird mir immer htp Failure angezeigt.

                Habe alles so gemacht wie bei deiner GIT Anleitung, außer das ich eine statische IP (die vom WEMOS) vergeben habe.

                Also die Vergebene IP finde ich im Netzwerk. Mein Problem ist, das ich nicht weiß was ich bei dem simple API Adapter einstellen muss.

                liv-in-sky 1 Reply Last reply Reply Quote 0
                • liv-in-sky
                  liv-in-sky @JB_Sullivan last edited by

                  @JB_Sullivan

                  lust auf anydesk oder teamviewer

                  JB_Sullivan 1 Reply Last reply Reply Quote 0
                  • JB_Sullivan
                    JB_Sullivan @liv-in-sky last edited by

                    @liv-in-sky Sorry - war einkaufen - heute Abend vielleicht über Discord? Habe leider kein Teamviewer und jetzt auch keine Zeit mehr.

                    liv-in-sky 1 Reply Last reply Reply Quote 0
                    • liv-in-sky
                      liv-in-sky @JB_Sullivan last edited by

                      @JB_Sullivan

                      bis 19:00 wäre ok - meld dich nochmal

                      JB_Sullivan 1 Reply Last reply Reply Quote 0
                      • JB_Sullivan
                        JB_Sullivan @liv-in-sky last edited by JB_Sullivan

                        @liv-in-sky bist du auch bei Discord - ich meine da in dem neuen ioB Channel?

                        https://discord.com/channels/743167951875604501/743167952303554620

                        liv-in-sky 1 Reply Last reply Reply Quote 0
                        • liv-in-sky
                          liv-in-sky @JB_Sullivan last edited by

                          @JB_Sullivan ja -habe aber nur mal reingeschaut - was ich machen muss um screen zu teilen bzw du - keine ahnung

                          anydesk wäre aber backup lösung - kann man direkt ausführen und muss nicht installiert werden - ist echt gutes tool

                          JB_Sullivan 1 Reply Last reply Reply Quote 0
                          • JB_Sullivan
                            JB_Sullivan @liv-in-sky last edited by JB_Sullivan

                            @liv-in-sky OK -anydesk geht wie? - habs gerade installiert und jetzt?

                            liv-in-sky 2 Replies Last reply Reply Quote 0
                            • liv-in-sky
                              liv-in-sky @JB_Sullivan last edited by

                              @JB_Sullivan

                              downloaden und aufrufen - dann rufen wir uns zusammen ( ich habe kein micro am gerät)

                              https://anydesk.com/de/downloads/windows

                              1 Reply Last reply Reply Quote 0
                              • liv-in-sky
                                liv-in-sky @JB_Sullivan last edited by

                                @JB_Sullivan aufrufen und da gibt es eine nummer die ich brauche um mich zu verbinden - dann bestätigst du, dass die verbindung ok ist - das war's

                                JB_Sullivan 2 Replies Last reply Reply Quote 0
                                • JB_Sullivan
                                  JB_Sullivan @liv-in-sky last edited by

                                  @liv-in-sky Nummer habe ich - bekommst du per PN

                                  1 Reply Last reply Reply Quote 0
                                  • JB_Sullivan
                                    JB_Sullivan @liv-in-sky last edited by

                                    @liv-in-sky vielen Dank nochmal für das nette Gespräch und vor allen Dingen die erfolgreiche Lösung der vielen kleinen Problemchen 😉

                                    1 Reply Last reply Reply Quote 1
                                    • joergeli
                                      joergeli @JB_Sullivan last edited by

                                      @JB_Sullivan
                                      Sorry für die späte Antwort, ich war unterwegs.

                                      Ich vermute, dass der Wemos korrekt geflasht wurde, da die Anzeige "... warte auf Daten von ioBroker" angezeigt wird.
                                      Wahrscheinlich liegt das Problem im JS-Script.

                                      Ich habe Dir deshalb mal ein Test-Script angehängt, mit dem nur 4 Strings in den Ausgabe-Datenpunkt geschrieben werden.
                                      Es werden also keine realen Meßwerte, bzw. Datenpunkte benötigt.

                                      
                                      //##########################################
                                      // Beispiel ioBroker Matrix-Laufschrift Test
                                      //##########################################
                                      
                                      
                                      //________________________________________________________________
                                      //Script jede 47te Sekunde ausfuehren
                                      schedule('47 * * * * *', Laufschrift_Aktualisieren);
                                      //________________________________________________________________
                                      
                                      function Laufschrift_Aktualisieren() {
                                      
                                      //______________________________________________________________________________________  
                                      
                                          //Wemos IP-Adresse
                                          var udpIP = '192.168.192.19'                            // lokale IP-Adresse des Wemos
                                      
                                          //Ausgabe-Datenpunkt
                                          var ausgabe_datenpunkt  = 'javascript.0.Laufschrift';   // Ausgabe-DP muss mit der URL im Wemos übereinstimmen!
                                      
                                      //______________________________________________________________________________________
                                      
                                          //Test-Datenpunkte
                                          var test1           = "Das ist Teststring 1;" ; 
                                          var test2           = "Jetzt kommt Nr. 2;" ; 
                                          var test3           = "Aller guten Dinge sind 3;" ;
                                      
                                          var test4           = "... und noch Nr. 4;" ;    
                                      
                                      
                                      // z.B. Teststrings 1-3 zusammenfassen_______________________________
                                          var test    = test1 + test2 + test3
                                      
                                      //______________________________________________________________________________________
                                      
                                          // Ausgabestring aus den EinzelStrings zusammensetzen:
                                          var ausgabe     =  test + test4 + "Test-Ende;"
                                      
                                      //______________________________________________________________________________________
                                      
                                          // kpl. Ausgabestring in Datenpunkt schreiben
                                          var pfad = ausgabe_datenpunkt
                                          setState(pfad , ausgabe, true);
                                          //log('----' + ausgabe + '----');
                                                    
                                      
                                      //______________________________________________________________________________________
                                      
                                          // "update" an WEMOS senden (pushen), damit dort die Laufschrift sofort aktualisiert wird
                                          const dgram = require('dgram');
                                          var udpPort = 6610
                                          var udpMessage = "update"
                                      
                                          var client = dgram.createSocket('udp4');
                                          client.send(udpMessage, 0, udpMessage.length, udpPort, udpIP, function(err, bytes) {
                                              if (err) throw err;
                                              client.close();
                                          })
                                      
                                      //______________________________________________________________________________________
                                      
                                      
                                      }  //Ende function Laufschrift_Aktualisieren
                                      
                                      

                                      Damit werden nur 4 Teststrings auf der Laufschrift ausgegeben.
                                      Es muss natürlich sichergestellt sein, dass die IP-Adresse im WEMOS mit dieser hier im Script übereinstimmt.

                                      var udpIP = '192.168.192.19' 
                                      

                                      Musst Du natürlich auf Deine Netzwerkumgebung anpassen!

                                      Gruß
                                      Jörg

                                      P.S.
                                      Ich sehe gerade, daß Du den Wemos jetzt mit @liv-in-sky - Sketch geflashed hast und ihr eine Lösung gefunden habt.
                                      Rein interessehalber: Lag das Problem an JS-Script, oder woanders?

                                      JB_Sullivan 2 Replies Last reply Reply Quote 0
                                      • JB_Sullivan
                                        JB_Sullivan @joergeli last edited by JB_Sullivan

                                        @joergeli - ja wir hatten das Problem lösen können - ich bin immer noch am fummeln, denn jetzt geht es darum den "Master" Datenpunkt mit Inhalten zu füllen. Dafür müsste doch auch dein javascript geeignet sein - oder? Wenn die Daten alle zusammen gesammelt sind, werden die ja auch in einen Datenpunkt geschrieben, den liv-in-sky ja auch abholt.

                                        Das Problem bei liv-insky, war, das dass Sketch einen Zeitserver im Internet abfragen wollte. Da keine Freigabe ins Web besteht, ist das Programm dann einfach stecken geblieben. Knackpunkt war das, die Fritzbox als Zeitserver eintragen werden musste.

                                        Ich habe dein Skript schon etwas zusammen gestrichen, aber ich bekomme immer eine Fehlermeldung wegen POST IST DA.

                                        //
                                        //##################################
                                        // ioBroker Matrix-Laufschrift
                                        //##################################
                                        
                                        
                                        //________________________________________________________________
                                        //Script jede 30te Sekunde ausfuehren
                                        schedule('30 * * * * *', Laufschrift_Aktualisieren);
                                        //________________________________________________________________
                                        
                                         //Laufschrift_Aktualisieren();  // nur! wenn manuell getestet werden soll
                                        
                                        
                                        function Laufschrift_Aktualisieren() {
                                        
                                        //______________________________________________________________________________________  
                                        
                                            //Wemos IP-Adresse
                                            var udpIP = '10.122.60.99'                            // IP-Adresse des Wemos, bzw. der DOT Matrix Laufschrift
                                        
                                            //Ausgabe-Datenpunkt
                                            var ausgabe_datenpunkt  = 'javascript.0.MATRIX.Matrix';   // Ausgabe-Datenpunkt muss mit der URL im Arduino-Sketch des Wemos übereinstimmen!
                                        
                                        //______________________________________________________________________________________
                                        
                                            //Einlese-Datenpunkte - müssen natürlich an die eigene Konstellation angepasst werden!
                                            var temp_basic          = getState('sonoff.0.Pool Basic.DS18B20_Temperature').val ;           // Aussen Temp am Pool
                                            var wind_speed          = getState('rflink.0.channels.LaCrosseV3_1.WINSP').val ;             // Windgeschwindigkeit
                                            var ludru               = getState('rflink.0.channels.LaCrosseV3_4.BARO').val ;               // Luftdruck
                                            var post_ist_da         = getState('innogy-smarthome.0.Garten.Bodenfeuchte.IsOpen').val ;         // Post ist da
                                        //______________________________________________________________________________________
                                        
                                            //Windgeschwindigkeit (km/h) in Windstärke (Bft) umrechnen
                                                 if(wind_speed <= 1)                         {   var bft = 0 }
                                            else if(wind_speed >  1   && wind_speed <= 5)    {   var bft = 1 }
                                            else if(wind_speed >  5   && wind_speed <= 11)   {   var bft = 2 }
                                            else if(wind_speed >  11  && wind_speed <= 19)   {   var bft = 3 }
                                            else if(wind_speed >  19  && wind_speed <= 28)   {   var bft = 4 }
                                            else if(wind_speed >  28  && wind_speed <= 38)   {   var bft = 5 }
                                            else if(wind_speed >  38  && wind_speed <= 49)   {   var bft = 6 }    
                                            else if(wind_speed >  49  && wind_speed <= 61)   {   var bft = 7 }    
                                            else if(wind_speed >  61  && wind_speed <= 74)   {   var bft = 8 }   
                                            else if(wind_speed >  74  && wind_speed <= 88)   {   var bft = 9 }  
                                            else if(wind_speed >  88  && wind_speed <= 102)  {   var bft = 10 } 
                                            else if(wind_speed >  102  && wind_speed <= 117) {   var bft = 11 } 
                                            else if(wind_speed >  117   ) {   var bft = 12 } 
                                        
                                        //______________________________________________________________________________________
                                        //Luftdruck runden
                                        var luftdr = round (ludru,0)
                                        
                                        //Windgeschwindigkeit runden
                                        var windgeschw = round (wind_speed,0)
                                        
                                        //Wohnzimmer Feuchte runden
                                        //var wohnzfeuchte = round (feuchte_wohnz,0)
                                        //______________________________________________________________________________________
                                        
                                        
                                        /*
                                        // Nur zur Info Sonderzeichen:
                                        
                                        $ = degC
                                        - = line
                                            = plus
                                        _ = rechteck-block
                                        ! = ü
                                        ? = ö
                                        ^ = ä
                                        ` = ß
                                        */
                                        
                                        //______________________________________________________________________________________
                                        
                                        
                                        //______________________________________________________________________________________
                                        
                                        
                                            // Ausgabestring aus den EinzelStrings zusammensetzen:
                                            //_____________________________________________________
                                            // Wenn RaspberryMatic DutyCycle >= 49%, nur! den DutyCycle ausgeben.
                                            // Wenn Post da ist, nur! den "Post ist da-String" ausgeben, ggf. zusaetzlich den DutyCycle,
                                            // ansonsten komplette Ausgabe aller Variablen
                                        
                                            if (post_ist_da == true) {
                                                var ausgabe     =  PostIstDa
                                            }
                                            else{
                                            var ausgabe     = PostIstDa + temp_basic + wind_speed + ludru
                                           }
                                        
                                        //______________________________________________________________________________________
                                        
                                            // Ausgabestring in Datenpunkt schreiben
                                            var pfad = ausgabe_datenpunkt
                                            setState(pfad , ausgabe, true);
                                            log('----' +   ausgabe      +'  ----');
                                                      
                                        
                                        //______________________________________________________________________________________
                                        
                                            // "update" an WEMOS senden (pushen), damit dort die Laufschrift sofort aktualisiert wird
                                            const dgram = require('dgram');
                                            var udpPort = 6610
                                            var udpMessage = "update"
                                            var client = dgram.createSocket('udp4');
                                            client.send(udpMessage, 0, udpMessage.length, udpPort, udpIP, function(err, bytes) {
                                                if (err) throw err;
                                                client.close();
                                            })
                                        //______________________________________________________________________________________
                                        
                                        
                                        }  //Ende function Laufschrift_Aktualisieren
                                        
                                        
                                        
                                        
                                        
                                        
                                        // Funktion zum Runden von Zahlen
                                        function round(wert, dez) {
                                                wert = parseFloat(wert);
                                                if (!wert) return 0;
                                                dez = parseInt(dez);
                                                if (!dez) dez=0;
                                                var umrechnungsfaktor = Math.pow(10,dez);
                                                return Math.round(wert * umrechnungsfaktor) / umrechnungsfaktor;
                                        }  //Ende function round
                                        
                                        
                                        
                                        
                                        JB_Sullivan 1 Reply Last reply Reply Quote 0
                                        • JB_Sullivan
                                          JB_Sullivan @JB_Sullivan last edited by

                                          Ich habe jetzt immer noch das Sketch von liv-in-sky drauf. Unabhängig davon müsste doch auch dein Testscript etwas in den Datenpunkt hinein schreiben - das macht es aber nicht.

                                          Wenn sich der Inhalt des Datenpunktes ändert, würde in diesem Fall nicht dein Skript etwas an den WEMOS senden, sonder liv-in-sky würde den Inhalt des Datenpunktes abholen.

                                          Wie gesagt, der Pferdefuss ist, das dein Skript den Datenpunkt nicht beschreibt.

                                          joergeli 1 Reply Last reply Reply Quote 0
                                          • JB_Sullivan
                                            JB_Sullivan @joergeli last edited by

                                            @joergeli Weil du dir soviel Arbeit gemacht hast, habe ich jetzt dein Arduino Sketch nochmal geflasht - allerdings auch hier mit der Änderung, das der Zeitserver auf die IP Adresse der FritzBox verweist.

                                            Was soll ich sagen, Das Test Skript funktioniert !!!! Allerdings dein Ursprungs Skript geht leider nicht 😞

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            954
                                            Online

                                            31.6k
                                            Users

                                            79.6k
                                            Topics

                                            1.3m
                                            Posts

                                            esp8266 matrix display max 7219
                                            31
                                            460
                                            80903
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo