Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Praktische Anwendungen (Showcase)
    4. Funk-Display zur Anzeige von Werten

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Funk-Display zur Anzeige von Werten

    This topic has been deleted. Only users with topic management privileges can see it.
    • I
      Ingo last edited by

      Hallo Jürgen,

      nun fehlt dir nur noch das Script.

      Da ich vom scripten eigentlich keine Ahnung habe, habe ich mit Blockly was gebastelt.

      Der Einfachheit halber spreche ich das Display mit Http-Requests an.

      Aus Blockly dann Javascript gemacht, übriggeblieben ist:

      // Heizung Keller
      on({id: new RegExp('mqtt\\.0\\.NodeMCU_Keller\\.Vorlauf\\.Temperature' + "|" + 'mqtt\\.0\\.NodeMCU_Keller\\.Ruecklauf\\.Temperature'), change: "ne"}, function (obj) {
          require("request")('http://192.168.2.170/control?cmd=lcdcmd,clear');
          require("request")('http://192.168.2.170/control?cmd=lcd,1,1,Heizung Keller');
          require("request")(['http://192.168.2.170/control?cmd=lcd,2,1,Vorlauf      ',getState("mqtt.0.NodeMCU_Keller.Vorlauf.Temperature").val,' C'].join(''));
          require("request")(['http://192.168.2.170/control?cmd=lcd,3,1,Ruecklauf    ',getState("mqtt.0.NodeMCU_Keller.Ruecklauf.Temperature").val,' C'].join(''));
          require("request")(['http://192.168.2.170/control?cmd=lcd,4,1,Aussen Temp  ',getState("rflink.0.channels.Baldr_1.TEMP").val,' C'].join(''));
      });
      
      

      Ein Bild vom ursprünglichen Blockly anbei.

      Es kommen jetzt einige Sachen zum Vorschein, die ich auf Grund mangelnder Ahnung nicht in den Griff bekommen habe.

      Siehe Bilder.

      So, jetzt gibt es Kaffee + Kuchen, nachher geht's weiter.

      Grüße Ingo
      1519_blockly.png
      1519_20171008_080330_k.jpg
      1519_20171009_091636_k.jpg

      1 Reply Last reply Reply Quote 0
      • I
        Ingo last edited by

        Hi,

        was ich nicht hinbekommen habe, ist, ein ° vor dem C einzufügen und das Verrutschen der Anzeige bei einstelligen Temperaturen.

        Da fehlt mir eine Gehirnwindung.

        Ich hatte hier im Forum schon mal um Hilfe gebeten, habe auch eine Antwort mit einer Lösung aufgezeigt bekommen, wußte aber nicht,

        wie ich das anwenden sollte.

        Gestern habe ich auf Yuotube folgendes entdeckt:

        http://www.instructables.com/id/SOLAR-P … R-STATION/

        Mal den Quelltext vom Empfänger:

        `/*.............................................................
         Sending Multiple Variables Using VirtualWire. Receiver
         Author:Rodrigo Mompo Redoli http://controlrobotics.rodrigomompo.com
         modified by deba168 from INDIA on 06/09/2014
         ..............................................................*/
        
        #include <wire.h>// use Wire library for protocol i2c (A4 = SDA & A5 = SCL)
        #include <liquidcrystal_i2c.h>// use LiquidCrystal_I2C library for control LCD on i2c protocol
        #include <virtualwire.h>// use Virtual library for decode signal from Rx module
        
        byte thermometer[8] = //icon for thermometer
        {
          B00100,
          B01010,
          B01010,
          B01110,
          B01110,
          B11111,
          B11111,
          B01110
        };
        
        byte droplet[8] = //icon for droplet
        {
          B00100,
          B00100,
          B01010,
          B01010,
          B10001,
          B10001,
          B10001,
          B01110,
        };
        byte hi[8]=    //icon for heat index
        {
          0B00000,
          0B00000,
          0B10101,
          0B01110,
          0B11111,
          0B01110,
          0B10101,
          0B00000,
        };                 //(addr, EN,RW,RS,D4,D5,D6,D7,BL,BLpol)
        LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); //change the address as per your I2C module
        // Sensors 
        int humidity=0;
        int temp=0;
        int heat_index=0;
        char MsgReceived[21]; 
        int led = 13; //pin for LED
        
        void setup() 
        {
          lcd.begin(20,4); // set up the LCD's number of columns and rows: 
          lcd.backlight(); //backlight is now ON
          pinMode(led, OUTPUT); 
        
          // VirtualWire 
          // Bits per sec
          vw_setup(2000);
          // set pin for connect receiver module 
          vw_set_rx_pin(11);  
          // Start the receiver PLL running
          vw_rx_start();       
        
          lcd.begin(20,4);   // initialize the lcd for 20 chars 4 lines, turn on backlight
          lcd.backlight(); // finish with backlight on  
          lcd.createChar(1, thermometer);
          lcd.createChar(2, droplet);
          lcd.createChar(3,hi);
          lcd.clear(); // clear the screen
        
        } // END void setup
        
        void loop()
        {
          uint8_t buf[VW_MAX_MESSAGE_LEN];
          uint8_t buflen = VW_MAX_MESSAGE_LEN;
          //Taking the data from the control base
          if (vw_get_message(buf, &buflen)) 
          {
            digitalWrite(led, HIGH);
            delay(100);
            int i;
            // Message with a good checksum received, dump it. 
            for (i = 0; i < buflen; i++)
            {            
              // Fill Msg Char array with corresponding 
              // chars from buffer.   
              MsgReceived[i] = char(buf[i]);
              //Serial.print(MsgReceived[i]);
            }
        
            sscanf(MsgReceived, "%d,%d,%d",&humidity, &temp,&heat_index); // Converts a string to an array
            digitalWrite(led, LOW); 
            lcd_display();
            memset( MsgReceived, 0, sizeof(MsgReceived));// This line is for reset the StringReceived
          }
        }
        void lcd_display()
        { lcd.setCursor(1,0);
          lcd.print(" WEATHER STATION ");
          lcd.setCursor(4,1);
          lcd.print("TEMP");
          lcd.setCursor(9, 1);
          lcd.write(1);
          lcd.setCursor(11, 1);
          lcd.print(temp);
          lcd.write(0b11011111);
          lcd.print("C");
          lcd.setCursor(4,2);
          lcd.print("HUM");
          lcd.setCursor(9, 2);
          lcd.write(2);
          lcd.setCursor(11, 2);
          lcd.print(humidity);
          lcd.print("%");
          lcd.setCursor(4,3);
          lcd.print("HI");
          lcd.setCursor(9, 3);
          lcd.write(3);
          lcd.setCursor(11, 3);
          lcd.print(heat_index);
          lcd.write(0b11011111);
          lcd.print("C");
        }</virtualwire.h></liquidcrystal_i2c.h></wire.h>` 
        
        Sieht dann wie auf dem Bild aus.
        
        Aber wie fügt man sowas in ein Script ein ?????
        
        Falls hier noch jemand mitliest und sich dazu in der Lage fühlt, es würde mich freuen !
        
        Grüße Ingo
          [1519_fis4e1aip2ufmbh.large.jpg](/assets/uploads/files/1519_fis4e1aip2ufmbh.large.jpg)  [/i][/i][/i]
        
        1 Reply Last reply Reply Quote 0
        • J
          jgoller last edited by

          Hallo Ingo,

          nach einigem Probieren (manchmal lässt sich das Display nicht ansprechen, I2C-Bus nicht vorhanden), hab ich nun mein eigenes Script mit Blockly gebaut (auch absolutes Neuland). Läuft !!! DANKE für deine Unterstützung. Erfolgserlebnis macht Lust auf mehr, da kann ich jetzt drauf aufbauen, denke ich.

          Mein Script sieht nun erstmal so aus:

          schedule("*/10 * * * * *", function () {
            try {
              require("request")((['http://192.168.1.78/control?cmd=lcd,1,1,PV-Anlage: ',getState("javascript.0.Photovoltaik.WR3.Leistung_aktuell").val,' W'].join(''))).on("error", function () {console.error(e);});
            } catch (e) { console.error(e); }
            try {
              require("request")((['http://192.168.1.78/control?cmd=lcd,2,1,BHKW:      ',getState("javascript.0.BHKW.aktLeistung").val,' W'].join(''))).on("error", function () {console.error(e);});
            } catch (e) { console.error(e); }
          });
          
          

          Das Display und Blockly hab ich als Bild angehängt:
          3447_blockly-script_f_r_display.jpg
          3447_2017-12-01_19-14-06_img_20171201_191406.jpg

          1 Reply Last reply Reply Quote 0
          • I
            Ingo last edited by

            Guten Morgen,

            war gestern bis spät im Modellbahn-Club, die morgige Adventsausstellung vorbereiten…..

            Das du manchmal das Display nicht ansprechen kannst, liegt (lag bei mir) an einer fehlerhaften Verbindung zwischen ESP-Modul

            und Display. Erst nachdem ich von diesen Steckstrippen auf eine gelötete Verbindung umgestiegen bin, war alles ok.

            Ansonsten schön, wenn es dir was gebracht hat.

            Grüße Ingo

            1 Reply Last reply Reply Quote 0
            • J
              jgoller last edited by

              Hallo Ingo,

              das Ansteuern der Display mit den ESP8266 D1 mini funktioniert nun problemlos dank deiner Hilfe. Ich hab nun auch die Sache mit dem Sonderzeichen (z.B. ° vor dem C) gelöst. In Blockly musst du für das °-Zeichen dein %DF setzen. Das sieht dann bei mir so aus: %DFC . Ich hab es mal als Bild angehängt!

              Bei google mal nach sonderzeichen javascript suchen (und ein bisschen probieren)!

              Gruß

              jgoller
              3447_blockly_sonderzeichen.jpg

              1 Reply Last reply Reply Quote 0
              • I
                Ingo last edited by

                Hallo Jürgen,

                Funktioniert !!

                Damit hast du mir echt eine Freude bereitet.

                Jetzt muß ich nur noch das Verrutschen der angezeigten Werte bei geringen Temperaturen in den Griff kriegen.

                Wenn ich nur nicht so viel mit dem Modellbahn-Club zu tun hätte.

                Danke und Grüße

                Ingo

                1 Reply Last reply Reply Quote 0
                • H
                  hilei last edited by

                  Hallo Ingo,

                  ich dank deiner tollen Anleitung das display so weit zum laufen gebraucht, das ESP-Easy im Display steht und der MQTT Adapter grün ist.

                  leider verstehe ich (auch nach mehrmaligen durchlesen und vergleichen weder das script von dir noch das von Jürgen weil die sich doch sehr unterscheiden so dass ich nicht draufkomme wie ich zb an einen text oder auch variable an das display senden könnte und was technisch dahinter steckt.

                  scheint ja irgendwie über

                  require("request")((['http://192.168.1.78/control?cmd=lcd,1,1,PV-Anlage: ',getState("javascript.0.Photovoltaik.WR3.Leistung_aktuell").val,' W'].join(''))).on("error", function () {console.error(e);});  } catch (e) { console.error(e);…..

                  zu gehen.

                  mir ist auch noch nicht klar wie das technisch funktioniert. setze ich im mqtt Adapter eine variable die dieser dann an das display sendet oder wird ein Befehl via http://192.168.1.78/control?cmd=lcd,1,1,PV-Anlagexxxx.... direkt an den wemos geschickt?

                  wenn ja wozu braucht man dann den mqtt Adapter?

                  vielleicht hast du ja mal eine wenig zeit das zu kurz erläutern.

                  für ein lametric display setze ich mir per script im io-broker texte aus systemvariablen zusammen - sprich ein wenig mit variablen und Basis schippten kenne ich mich ja aus aber da fehlen mir noch die zusammenhänge.

                  danke & LG

                  Andi

                  1 Reply Last reply Reply Quote 0
                  • I
                    Ingo last edited by

                    Hallo Andi,

                    eins vorneweg, ich bin kein Programmier-Spezi.

                    Die Request-Befehle waren daher für mich die einfachste Lösung, es gibt sicher elegantere Lösungen.

                    Schaue dir mal meinen Beitrag vom 30.11.17 an. Hier das Blockly.

                    Wenn Vor- oder Rücklauftemperatur sich ändern, wird mit dem ersten Request das Display gecleart.

                    Dann wird in die oberste Zeile "Heizung Keller" geschrieben, danach in die nächsten Zeilen Vorlauf, Rücklauf und Außentemperatur.

                    Diese einzelnen Befehle, z.B. :

                    http://192.168.2.170/control?cmd=lcd,1,1,Heizung Keller

                    kannst du auch in deinen Browser eingeben, sollte dann ebenfalls im Display erscheinen.

                    Der MQTT-Adapter dient nur der Kommunikation zwischen ioBroker und dem Display, wenn der läuft und grün ist, nicht mehr anfassen.

                    Die Ausgaben für das Display aus Variablen zusammensetzen - tut mir leid - keine Ahnung, wie so was geht.

                    Ich denke, dafür brauchst du ein komplexeres Script.

                    Bei Fragen, einfach fragen

                    Grüße Ingo

                    1 Reply Last reply Reply Quote 0
                    • H
                      hilei last edited by

                      Hi Ingo,

                      danke für die schnelle Info. dann schau ich mir mal den request befehl an und versuch darüber die variablen auszugeben. über einen einfachen html-link habe ich es schon geschaft text aufs display zu posten 😉

                      LG

                      Andi

                      1 Reply Last reply Reply Quote 0
                      • I
                        Ingo last edited by

                        Hallo Andi,

                        du kannst ja mal berichten.

                        Grüße Ingo

                        1 Reply Last reply Reply Quote 0
                        • H
                          hilei last edited by

                          Hallo Ingo,

                          funzt schon 😉

                          ging schneller als erwartet. hab einiges vom code meiner lametric anzeige verwenden können.

                          ich glaube den mqtt-adapter braucht man für unsere Lösung über http-requests nicht. hab ihn pausiert und das display refreshed nach wie vor. lasse ihn aber trotzdem installiert - never change a running system 😉

                          anbei das javascript für den io-broker:

                          var displayurlzeile1;
                          var displayurlzeile2;
                          var displayurlzeile3;
                          var displayurlzeile4;
                          var Aussentemperatur;
                          var Aussenfeuchte;
                          var Leistung;
                          var Wasser;
                          
                          function main() {
                          
                          Aussentemperatur=getState('hm-rpc.0.MEQxxxxx.1.TEMPERATURE').val;
                          Aussenfeuchte=getState('hm-rpc.0.MEQxxxxx.1.HUMIDITY').val;
                          Leistung=getState('hm-rpc.0.MEQxxxxx.1.POWER').val;
                          Wasser=String(getState('hm-rega.0.xxxx').val);
                          
                          var displayurlzeile1='http://192.168.xxx.xxx/control?cmd=lcd,1,1,Temperatur: '+Aussentemperatur+'%DFC'; // Setzt String für Zeile 1 zusammen %DFC Grad Celsius
                          var displayurlzeile2='http://192.168.xxx.xxx/control?cmd=lcd,2,1,Luftfeuchte: '+Aussenfeuchte+'%'; // Setzt String für Zeile 2 zusammen
                          var displayurlzeile3='http://192.168.xxx.xxx/control?cmd=lcd,3,1,Leistung: '+Leistung+'W'; // Setzt String für Zeile 3 zusammen
                          var displayurlzeile4='http://192.168.xxx.xxx/control?cmd=lcd,4,1,Wasser: '+Wasser+'L'; // Setzt String für Zeile 4 zusammen
                          
                          request('http://192.168.xxx.xxx/control?cmd=lcdcmd,clear'); // Löscht das Display
                          
                          request(displayurlzeile1); // pusht Zeile 1 zum Display
                          request(displayurlzeile2); // pusht Zeile 2 zum Display
                          request(displayurlzeile3); // pusht Zeile 3 zum Display
                          request(displayurlzeile4); // pusht Zeile 4 zum Display
                          
                          console.log(displayurlzeile1); // Anzeige zur Kontrolle im Log
                          
                          }
                          
                          // refreshed das Display minütlich
                          
                          schedule("15 * * * * *", function () {
                          main();
                          });
                          
                          

                          192.168.xxx.xxx: IP des displays

                          %DCF macht am Display das °C Zeichen.

                          vielen dank nochmals für die Anleitung. damit kann man wirklich schnell und günstig (<10EUR wenn über Ebay in China bestellt) ein funkt display bauen.

                          LG

                          Andi

                          1 Reply Last reply Reply Quote 0
                          • I
                            Ingo last edited by

                            Moin Andy,

                            klasse gemacht !

                            Grüße Ingo

                            1 Reply Last reply Reply Quote 0
                            • N
                              NightWatcher last edited by

                              Was würde denn z.b. gegen ein Arduino/ESP mit z.b. einem SSD1306/SSD1309 sprechen?

                              Ich überlege auch bereits seit längerer Zeit, wie ich in den einzelnen Räumen Temperatur und evtl. einen Statusflag darstellen kann. Ich denke, dass ich es mit den OLEDs umsetzen werde.

                              1 Reply Last reply Reply Quote 0
                              • B
                                blackplanet333 last edited by

                                Hallo,

                                vielleicht kann mir jemand helfen.

                                Ich habe ESP Easy auf einem D1 Mini und das SSD1306 Display angeschlossen.

                                Anzeige funktioniert soweit und wenn ich unter Devices beim OLED was eintrage erscheint dies auch im Display.

                                Soweit so gut, aber nun zum Problem:

                                Wenn ich z.B.das oben genannte Kommando eingebe erscheint nichts (natürlich mit meiner IP) auch kein Fehler, also als ob er das angenommen hätte.

                                http://192.168.0.235/control?cmd=lcd,1,1,Heizung Keller

                                (in meinem Fall statt lcd -> oled)

                                Ich bin aber mit dem Kommando

                                http://192.168.0.235/control?cmd=oledframedcmd,on

                                oder eben off

                                schon erfolgreich gewesen.

                                Leider funktioniert das nicht mit einem Text, habe schon zig Varianten aus Forums durchprobiert, leider ohne erfolg.

                                Jemand eine Lösung?

                                Viele Grüße

                                1 Reply Last reply Reply Quote 0
                                • H
                                  hilei last edited by

                                  hi,

                                  ich glaube nicht dass du das matrixdisplay mit den gleichen html-befehlen ansprechen kannst wie das nach 4 zeilen und 20 buchstaben aufgebaute display. bis auf die commands on/off/clear weil die ws. generisch für diese displays sind.

                                  weil 1,1 zb heisst beginne mit dem text in zeile 1 bei buchstabe 1. das SSD1306 ist ws. anders aufgebaut.

                                  Lg

                                  Andi

                                  1 Reply Last reply Reply Quote 0
                                  • B
                                    blackplanet333 last edited by

                                    hmm, laut dieser Seite sollte es doch passen oder?

                                    https://www.letscontrolit.com/wiki/inde … LEDDisplay
                                    6001_ohne_titel.jpeg

                                    1 Reply Last reply Reply Quote 0
                                    • H
                                      hilei last edited by

                                      da hast du allerdings recht. lt. der Syntax auf der Seite sollte das passen.

                                      ich habe zu beginn auch verschiedenste Probleme gehabt mit dem wemos und hab ihn dann neu geflashed - dann hats einwandfrei funktioniert.

                                      wäre mal einen versuch wert der nicht zuviel zeit in Anspruch nimmt…

                                      1 Reply Last reply Reply Quote 0
                                      • B
                                        blackplanet333 last edited by

                                        leider schon probiert, von einer uralten auf eine ganz neue und was dazwischen.

                                        Das OLED ist sehr störrisch und will keinen text annehmen.

                                        Wenn das funktionieren würde, könnte ich endlich mit einigen Projekten weitermachen…

                                        aber danke für die rasche Antwort!

                                        1 Reply Last reply Reply Quote 0
                                        • I
                                          Ingo last edited by

                                          Moin,

                                          ein undefinierbares Problem ähnlicher Natur hatte ich anfangs auch.

                                          Ursache war dann eine steckbare Verbindung zwischen Wemos und Display.

                                          Erst nachdem die Verbindung gelötet habe, war alles schick.

                                          Vielleicht hilft es.

                                          Grüße Ingo

                                          1 Reply Last reply Reply Quote 0
                                          • B
                                            blackplanet333 last edited by

                                            Hallo,

                                            danke für den Hinweis, hab das display und den Wemos bereits von Anfang an auf eine Platine aufgelötet…

                                            Somit scheidet das auch aus, vielleicht find ich das noch irgendwann heraus.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            752
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            20
                                            70
                                            22122
                                            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