Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Praktische Anwendungen (Showcase)
    4. Thermometer mit WS2811 oder WS 2812

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    Thermometer mit WS2811 oder WS 2812

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

      @liv-in-sky
      Ok, Block 2 läuft mit dem Datenpunkt beschreiben.
      Block 1 muss ich mir dann mal antun wenn die passende Hardware da ist. (irgendwo liegt noch ein Wemos. ich finde den bloß nicht)
      Ich habe mir das alles viel komlizierter aufgebaut und wollte das ursprünglich über Rules steuern. Aber da war dann meine Vorlage deutlich zu lang:
      Thermometer.txt

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

        @Chaot das wäre mir zu kompliziert über rules

        was auch gut aussieht ist die batterie anzeige meines handys - die läuft von unten nach oben in verschiedenen farben (auch in bereiche aufgeteilt) bis zu dem punkt des akkustandes - der rest soll dann schwarz sein

        habe das auch mit der temp gemacht - aber noch nicht ausgereift - also die temp läuft bei der anzeige von unten nach oben und bleibt bei der momentanen temp stehen

        aber eine andere frage - ich würde gerne eine doppelte led anzeige machen - also 2 strings nebeneinander - weißt du ob das schalttechnisch geht, die beiden led stripes einfach parallel an den wemos zu hängen ? - die leds sollen ja auch das gleiche anzeigen - halt nur doppelt

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

          @liv-in-sky
          Zwei Streifen parallel geht vermutlich nicht. Der Wemos hat zu tun die benötigte Spannung für die erste LED aufzubringen. Bei zwei LEDs am Ausgang bricht dem vermutlich die Spannung zusammen.

          Solange der Wemos noch nicht da ist werde ich mir das Script mal vorknöpfen.
          Die Basis schaut wirklich gut aus. Aber ich will mirdas estwas umfangreicher anbauen.
          Auch den Temperaturbereich werde ich weiter ausdehnen. Ich will das ehrlich gesagt nicht im Sommer anpassen sondern schlicht als Run and forget einbauen.
          Das ist ja auch nicht für mich so ganz alleine.
          Das Fenster in dem Schuppen ist von fast allen Nachbarn aus zu sehen. Und die haben schon gefragt ob ich ein Temperaturdisplay dort setzen kann.
          Klar, eine große Digitalanzeige könnte ich auch problemlos. Aber das kann ja jeder und bekommt man an jeder Ecke. Sowas gefällt mir nicht.

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

            @Chaot

            wieso muss der wemos strom für die led aufbringen, dafür ist doch die externe stromversorgung da - die ist ja auch direkt mit dem stripe verbunden - es wird ja nur das datenkabel am pin doppelt angebracht - aber natürlich könnte das auch zu viel ziehen

            das mit dem sommer könnte man auch leicht ändern - man kann ja im bereiche script mit variablen arbeiten, die je nach datum anders gesetzt werden

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

              @liv-in-sky Da der Wemos immer noch nicht hier ist habe ich mich etwas näher mit dem WLED beschäftigt und eine interessante Lösung gefunden:

              Der Effekt wird auf "Percent(98)" eingestellt
              Über den Wert ix (Effect intensity) wird die Höhe des Balkens (in %) bestimmt.
              Dann noch bei ...col.0 die Primary Color per script ändern und das sollte recht akzeptabel aussehen.
              Jetzt werde ich mal versuchen mir da ein passendes Script zurechtzuzimmern.

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

                @Chaot ich finde Percent(98) nicht - hast du eine andere software - meine 0.9.0.b1

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

                  @liv-in-sky Firmware WLED 0.9.1 (build 2002222)

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

                    @Chaot das könnte es sein

                    das bedeutet: die leds laufen von led 0 bis "eine prozentzahl" , was dann die temp darstellen würde

                    wäre mir zu wenig - ich brauche definitiv einzelne led's zum steuern - so kann ich mehrere anzeigen mit einander verbinden. z.b die temp außen plus weiter oben die leds für die temp innen und den ist- und soll-zustand der heizung und ob sie eingeschaltet ist

                    aber du hast ja auch ein anderes ziel wie ich

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

                      @liv-in-sky Das hängt jetzt von der Länge deines Streifens ab. Das lässt sich ja realisieren über die Segmente. In dem Fall reichen dann ja 10 Stück locker aus.

                      Seg1: 1 bis 58 Temp Außen (als Prozent)
                      Seg2: 59 (static)
                      Seg3: 60 bis 68 Temp innen (als Prozent)
                      Seg4: 69 (static)
                      Seg5: 70 bis 72 Heizung an/aus (als Static)

                      Und als Bonus noch jeweils ein Segment dazwischen mit 1 LED in einer anderen Farbe als Trenner.

                      Leider spinnt der Adapter bei mir rum und schreibt mir das Log voller Fehler. Da muss ich erst mal suchen. Aber ich denke das sollte so umsetzbar sein.

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

                        @Chaot aber nur theoretisch - die segmente werden manchmal "vergessen" - war alles sehr instabil - mit webseite konfiguriert - daher bleib ich auf tasmota

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

                          @liv-in-sky Ich halte mir aktuell mal beide Optionen offen. Mein Vorteil ist das bei mir der Stripe noch nicht verbaut ist und ich mir in Ruhe raussuchen kann was besser läuft 😊

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

                            @Chaot ist ne gute idee

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

                              @Chaot
                              Moin,
                              Angeregt von Eurer Diskussion, hier mal meine meine RGB-Thermometer-Variante:
                              (die Farben werden von meiner Tablet-Cam nicht so gut dargestellt, wie in natura)

                              prototyp1.jpg
                              prototyp2.jpg
                              Thermometer1.jpg
                              Thermometer2.jpg

                              Das läuft nicht mit WLED, sondern auf einer selbst geflashten NodeMCU (WEMOS D1 mini sollte auch funktionieren)
                              über MQTT, d.h. es muss WLAN am Aufstellungsort vorhanden sein.
                              Das Übertragungs-Prinzip ist das gleiche, wie bei meinem LED-Status-Display .
                              Es können 2 Temperaturen (Innen/Aussen) angezeigt werden.

                              Was kann es?:
                              1.) Hinterleuchtete Skala (Helligkeit vom Umgebungslicht abhängig) von -15°C bis +45°C, Skalenlänge ca. 45 cm.
                              Für die Beleuchtung habe ich einen "normalen" LED-Stripe 12V, warmweiß verwendet.
                              2.) WS2812 RGB-Stripe mit 144 Leds/m, wovon aber nur 61 LEDs genutzt werden.
                              3.) auf dem RGB-Stripe wird alle 5°C eine schwach blau leuchtende LED zur besseren Ablesbarkeit eingeschaltet.
                              4.) Innentemperatur wird an entspr. Stelle mit hell leuchtender LED in gelb angezeigt.
                              5.) Aussentemperatur wird an entspr. Stelle mit je nach Temperatur unterschiedlichen Farben angezeigt (violett, blau, weiß, türkis, hellgrün, grün, orange, rot, violett)
                              6.) Kurze Farb-Animation der entspr. LED, wenn sich ein Temperaturwert ändert.

                              Verbaut habe ich das Ganze in einem Bilderrahmen ( s. Fotos), der an einem 12V-Seilsystem befestigt ist und von der Decke hängt.
                              Das Seilsystem dient dabei zum Einen als Aufhängung für den Bilderrahmen und zum Anderen als Spannungsversorgung für die Elektronik.
                              Ist natürlich Geschmackssache, was man für ein Gehäuse wählt/bastelt, bei mir hat es halt ganz gut zu den anderen, bereits vorhandenen Bilderrahmen gepasst.

                              Anbei der Schaltplan:
                              Schaltplan_Big_Thermometer.jpg
                              Anmerkung: Die Helligkeits-Steuerung für die Hinterleuchtung der Skala musste ich (leider) analog mit einem Transistor bauen. Theoretisch könnte das auch die NodeMCU übernehmen, aber dann hat mein Sketch zur MQTT-Auswerung nicht mehr funktioniert.
                              Hinweis: Der 4,7KΩ-Widerstand parallel zum LDR dient dazu, daß bei Dunkelheit der LED-Stripe noch schwach leuchtet und nicht ganz ausgeschaltet wird.

                              Bei Interesse kann ich gerne noch den Arduino-Sketch, sowie die ioBroker JavaScript Steuerdatei nachreichen.

                              Gruß
                              Jörg

                              P.S.
                              Ganz fertig ist der mechanische Aufbau noch nicht, es sind im Bilderrahmen noch die 12V Spannungsversorgungs-Strippen zu sehen, muß ich noch innen im Rahmen festkleben.

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

                                @joergeli hast du nicht auch eine matrix anzeige gemacht ? oder verwechsle ich da was ?

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

                                  @liv-in-sky
                                  Jepp, die scrollt brav die ioBroker-Meldungen in meinem Bastelzimmer 😊

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

                                    @joergeli wir haben wohl den selben led geschmack 🙂

                                    das mit den alle 5 punkten als ablesehilfe werde ich auch noch integrieren

                                    ich nutze es auch als handy akku anzeige ( abwechselnd) - fällt dir noch was ein, was man da noch daraus machen könnte bzw anzeigen ?

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

                                      @joergeli Schaut genial aus.
                                      Und das hast du dann über den ioBroker mit einem Script gelöst?

                                      Könntest du mir das eventuell mal zeigen?

                                      @liv-in-sky Ich habe mal ganz schnell dein Blockly anders zusammengeklebt:

                                      Thermometer1.jpg

                                      Mal als Export:
                                      Thermometer1.txt

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

                                        @liv-in-sky
                                        Das mit den 5er Markierungen hat mich am meisten beschäftigt.
                                        Es ist ja nicht damit getan, die 5 Punkte-Markierungen nach dem Boot einmalig zu setzen,
                                        denn es kommt ja doch recht häufig vor, das ein Temperaturwert genau auf eine dieser Markierung fällt (-5°C, 0°C, 5°C, 10°C, etc.).
                                        Das heißt, an dieser Stelle muss die Markierung dann mit der Farbe des Temperaturwertes übeschrieben werden.
                                        Ergo muss ich bei jeder Temperaturänderung prüfen, ob die Temperatur auf eine 5er-Markierung fällt.
                                        Dazu schalte ich bei Temperaturänderung zunächst alle LEDs dunkel.
                                        Dann setze ich zuerst die 5er-Markierungen neu, danach den Temperaturwert an entspr. Position in entspr. Farbe.
                                        Hinzu kommt jedoch zusätzlich, das ich die bisherigen LED-Positionen von Innen- und Aussentemperatur zwischenspeichern muss, da ich die LED an der alten Position ja ausschalten muss, weil sie an anderer Position neu gesetzt wird.
                                        Das ist bei der Darstellung von nur einer Temperatur nicht so wild, etwas komplizierter wird es, wenn zwei Temperaturen (Innen/Aussen) angezeigt werden sollen, denn dann muss ja auch die Position/Farbe der jeweils anderen Temperatur wieder neu (an alter/bisheriger Position) gesetzt werden.
                                        Das heißt, wenn sich z.B. die Aussentemperatur ändert, muss auch die LED an der Position der Innentemperatur neu gesetzt werden.
                                        Im Arduino-Sketch ist das dann mit einen Wust aus if-Abfragen realisiert.
                                        Ich hänge den Sketch morgen mal an.

                                        Was könnte man noch anzeigen?:
                                        Nun, im Prinzip alles, was man sonst auch mit einer linearen Skala, oder Rundinstrument anzeigen könnte, wie z.B. Luftdruck, Luftfeuchte, Füllstand (Zisterne, Öltank), etc.
                                        Allerdings wird es dann IMHO problematisch mit einer entspr. Skala, bzw. Markierungen ( Luftdruck z.B. 900 - 1200 hPa, Luftfeuchte 0-100%, Öltank 0-4000 Liter). Evtl. könnte man je nach Situation auch zwischen linearen und logarithmischen Skalen umschalten, was dann aber ein immensen Aufwand bedeuten würde.
                                        Es könnte bei Verwendung von mehreren LED-Stripes funktionieren, aber das wäre dann m.E. overkill, bzw. da nutze ich dann doch lieber die Darstellung mittels vis auf meinem Tablet.

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

                                          @Chaot
                                          Ja, das ist nur ein einfaches JavaScript, welches getriggert wird, wenn sich die Aussen-/ oder Innentemperatur ändert.
                                          Dann wird dieser Temp-Wert auf volle Grad gerundet und in einen anderen Datenpunkt geschrieben.
                                          Auf diesen Datenpunkt(e) subscribed sich dann die NodeMCU via MQTT, d.h. in ioBroker muss dazu auch der MQTT-Adapter installiert sein.
                                          Wenn die NodeMCU dann bei Temperaturänderung eine neue Message (Datenpunkt-Name und Temperaturwert) erhält,
                                          verwurstelt sie es dann in eine entspr. LED-Farbe und LED-Position.

                                          Ich stelle im Lauf des Tages das JavaScript und den Arduino-Sketch hier ein ( jetzt ist es 1:20 Uhr und ich bin zu müde 😔 )

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

                                            @Chaot
                                            Hallo,
                                            anbei - wie versprochen - das JavaScript und der Arduino-Sketch für die NodeMCU.

                                            JavaScript:

                                            //##########################################################################
                                            // Aussen-/Innentemperatur für WS2812 BigThermometer
                                            //##########################################################################
                                            
                                            // Bitte die folgenden 2 Datenpunkte nicht! umbenennen
                                            createState('javascript.0.BigTemp.1', { name: 'BigTemp-Aussen', desc: 'Aussen-Temp', type: 'number', def: 0 });
                                            createState('javascript.0.BigTemp.2', { name: 'BigTemp-Innen' , desc: 'Innen-Temp',  type: 'number', def: 0 });
                                            
                                            // Hier die eigenen! Datenpunkte für Aussen-/Innentemperatur eintragen
                                            const aussentemp = 'hm-rpc.2.CUX0100001.1.TEMPERATURE'          // bei mir Aussentemp via CUX 
                                            const innentemp  = 'sonoff.0.Kodi-Stecker.AM2301_Temperature'   // bei mir InnenTemp via Sonoff DHT22
                                            
                                            on({id: aussentemp, change: "any"},function(obj) {
                                                let aussen_temperatur  = getState(aussentemp).val;
                                                let around = Math.round(aussen_temperatur);
                                                //console.log("around: " + around);
                                                setState ('javascript.0.BigTemp.1', around);  
                                            });
                                            
                                            on({id: innentemp, change: "any"},function(obj) {
                                                let innen_temperatur  = getState(innentemp).val;
                                                let iround = Math.round(innen_temperatur);
                                                //console.log("iround: " + iround);
                                                setState ('javascript.0.BigTemp.2', iround);   
                                            });
                                            
                                            

                                            Zum Testen kann man in den ioBroker-Objekten javascript.0.BigTemp.1 und javascript.0.BigTemp.2 die dortigen Temperaturwerte manuell überschreiben (im Bereich von -15 bis 45 Grad), dann sollten sich die LEDs im RGB_Stripe entspr. ändern.
                                            __

                                            Arduino-Sketch:

                                            
                                            /*
                                            ########################################################################################
                                            Innen-/Aussentemperatur aus ioBroker via MQTT auf LED-Thermometer (WS2812) anzeigen
                                            
                                            Hardware: NodeMCU
                                            
                                            Compiled with Arduino IDE V1.8.10
                                            26.02.2020
                                            
                                            Made by joergeli
                                            
                                            ########################################################################################
                                            */
                                            
                                            #include <ESP8266WiFi.h>
                                            #include <PubSubClient.h>
                                            #include <ArduinoOTA.h>   // fuer Flashen ueber WLAN ( OTA = Over The Air)
                                            #define FASTLED_ALLOW_INTERRUPTS 0  // gegen Flackern/Flickering
                                            #include <FastLED.h>
                                            
                                            #define LED_PIN 6   // = D6
                                            #define LED_TYPE NEOPIXEL
                                            #define NUM_LEDS    61
                                            #define COLOR_ORDER RGB
                                            CRGB leds[NUM_LEDS];
                                            int start_helligkeit = 30;
                                            int helligkeit_temp = 10;
                                            
                                            // für WiFi Regenbogen-Intro
                                            #define TEMPERATURE_1 Tungsten100W
                                            #define TEMPERATURE_2 OvercastSky
                                            #define DISPLAYTIME 1
                                            #define BLACKTIME   0
                                            
                                            int intLED = D4; // interne, blaue LED (wird spaeter ausgeschaltet, da nicht benoetigt)
                                            
                                            int Aussen_LED_Nr;
                                            int Innen_LED_Nr;
                                            
                                            int a0 = 0;
                                            int i0 = 0;
                                            
                                            uint8_t gHue = 0;
                                            
                                            //########################################################################################
                                            // Hier die eigenen Netzwerk-Parameter eintragen !!!
                                            
                                            IPAddress ip(xxx.xxx.xxx.xxx);      //### statische ip-addresse
                                            IPAddress gateway(xxx.xxx.xxx.xxx); //### router
                                            IPAddress subnet(255, 255, 255, 0); //### subnet-mask
                                            IPAddress dns(xxx.xxx.xxx.xxx);     //### dns-server meist identisch mit router
                                            const char* ssid  = "yyyyyyyy";     //### WLAN SSID (Gänsefüsschen müssen erhalten bleiben)
                                            const char* pwd   = "yyyyyyyy";     //### WLAN Password (Gänsefüsschen müssen erhalten bleiben)
                                            
                                            const char* mqtt_server = "xxx.xxx.xxx.xxx"; //### MQTT-Adapter IP-Adresse, bzw. ioBroker IP-Adresse(Gänsefüsschen müssen erhalten bleiben)
                                            int mqtt_port = 1883;                        //### MQTT-Port in ioBroker (normalerweise 1883)
                                            
                                            const char* OTA_host = "Big Thermometer";    // Name unter welchem der virtuelle Port in der Arduino-IDE auftaucht(Gänsefüsschen müssen erhalten bleiben)
                                            
                                            //########################################################################################
                                            
                                            WiFiClient espClient;
                                            PubSubClient client(espClient);
                                            
                                            //_________________________________________________________________________________________
                                            
                                            // Farb-Animation, wenn AussenTemp empfangen wurde
                                            void anima() {
                                              FastLED.setBrightness(helligkeit_temp);
                                              for(int n=0; n<=3; n++){
                                              delay(100);
                                              leds[Aussen_LED_Nr] = CRGB( 255, 255, 0); FastLED.show();
                                              delay(100);
                                              leds[Aussen_LED_Nr] = CRGB( 255, 0, 255); FastLED.show();
                                              delay(100);
                                              leds[Aussen_LED_Nr] = CRGB( 0, 255, 0); FastLED.show();
                                              delay(100);
                                              leds[Aussen_LED_Nr] = CRGB( 0, 255, 255); FastLED.show();
                                              delay(100);
                                              leds[Aussen_LED_Nr] = CRGB( 255, 0, 0); FastLED.show();
                                              }
                                            }
                                            //_________________________________________________________________________________________
                                            
                                            // Farb-Animation, wenn InnenTemp empfangen wurde
                                            void animi() {
                                              FastLED.setBrightness(helligkeit_temp);
                                              for(int n=0; n<=3; n++){
                                              delay(100);
                                              leds[Innen_LED_Nr] = CRGB( 255, 255, 0); FastLED.show();
                                              delay(100);
                                              leds[Innen_LED_Nr] = CRGB( 255, 0, 255); FastLED.show();
                                              delay(100);
                                              leds[Innen_LED_Nr] = CRGB( 0, 255, 0); FastLED.show();
                                              delay(100);
                                              leds[Innen_LED_Nr] = CRGB( 0, 255, 255); FastLED.show();
                                              delay(100);
                                              leds[Innen_LED_Nr] = CRGB( 255, 0, 0); FastLED.show();
                                              }  
                                            }
                                            //_________________________________________________________________________________________
                                            
                                            
                                            // blaue Skalen-Markierungen in 5er-Schritten setzen
                                            void markierungen_setzen(){
                                              for( int i=0; i<= NUM_LEDS ; i+=5) {leds[i] = CRGB( 0, 0, 40); }    // 5er Skalen-Markierungen erzeugen und setzen
                                              FastLED.show();
                                            }
                                            //_________________________________________________________________________________________
                                            
                                            void regenbogen(){
                                            // Farb-Animation, so lange bis WLAN connected ist
                                                  static uint8_t starthue = 0;
                                                  fill_rainbow( leds , NUM_LEDS , --starthue, 20);
                                                  uint8_t secs = (millis() / 1000) % (DISPLAYTIME * 2);
                                                  if( secs < DISPLAYTIME) {
                                                      FastLED.setTemperature( TEMPERATURE_1 ); // first temperature
                                                      leds[0] = TEMPERATURE_1; // show indicator pixel
                                                  } else {
                                                      FastLED.setTemperature( TEMPERATURE_2 ); // second temperature
                                                      leds[0] = TEMPERATURE_2; // show indicator pixel
                                                  }
                                                  if( (secs % DISPLAYTIME) < BLACKTIME) {
                                                  memset8( leds, 0, NUM_LEDS * sizeof(CRGB));
                                                  }
                                                  FastLED.show();
                                                  FastLED.delay(1);
                                            }
                                            //_________________________________________________________________________________________
                                            // Subroutine fuer WLAN-Verbindung
                                            void setup_wifi(){
                                              WiFi.config(ip, gateway, subnet, dns);
                                              delay(100);
                                              WiFi.mode(WIFI_STA);
                                              WiFi.begin(ssid, pwd);
                                              Serial.println("");
                                              Serial.println("___________________________________________________");
                                              Serial.print("Connecting to "); Serial.println(ssid);
                                              while (WiFi.status() != WL_CONNECTED) {
                                              regenbogen(); // Regenbogen-Effekt anzeigen, solange bis WLAN verbunden ist
                                              } // end of while
                                              Serial.println("");
                                              Serial.print("   OK  ---> ");
                                              Serial.print("IP: ");
                                              Serial.println(WiFi.localIP()); 
                                            
                                              FastLED.clear();  // alle LEDs aus
                                              FastLED.show();
                                            
                                            } // end of void connectWIFI
                                            
                                            //_________________________________________________________________________________________
                                            
                                            void MQTTCallback(char* topic, byte* payload, unsigned int length) {
                                              Serial.print("Message arrived [" );
                                              Serial.print(topic);
                                              Serial.print("] ");
                                              String Temp = "";
                                              for (int i = 0; i < length; i++) {
                                                Temp = Temp + (char)payload[i];
                                              }
                                              Serial.print(" Temp: " + Temp + "\t" );
                                            
                                              String TopicName = topic;
                                              TopicName.replace("javascript/0/BigTemp/","");
                                            
                                              int LedIndex = TopicName.toInt();
                                              LedIndex = LedIndex - 1;
                                              Serial.print("  LedIndex: " );
                                              Serial.print(LedIndex);
                                              Serial.print("\t");
                                            
                                              //AussenTemp LED-Nr
                                              String AussenTemp;
                                              if(LedIndex == 0){ 
                                                for (int i = 0; i < length; i++) { AussenTemp = AussenTemp + (char)payload[i]; }
                                                Aussen_LED_Nr = AussenTemp.toInt() +15;
                                                Serial.print(" Aussen_LED_Nr: ");
                                                Serial.println(Aussen_LED_Nr);
                                              }
                                            
                                             //InnenTemp LED-Nr
                                             String InnenTemp;
                                              if(LedIndex == 1){ 
                                                for (int i = 0; i < length; i++) { InnenTemp = InnenTemp + (char)payload[i]; }
                                                Innen_LED_Nr = InnenTemp.toInt() +15 ;
                                                Serial.print(" Innen_LED_Nr: ");
                                                Serial.println(Innen_LED_Nr);
                                              }
                                            
                                            // für 5er Skala
                                            int modulo_a = Aussen_LED_Nr % 5; // ist 0, wenn durch 5 teilbar
                                            int modulo_i = Innen_LED_Nr % 5;  // ist 0, wenn durch 5 teilbar
                                            
                                            ////////////////////////////////////////////////////////////////////////////////////////////////
                                            
                                             //#####################
                                             //Aussen-Temp anzeigen
                                             //#####################
                                             
                                             if(LedIndex == 0){
                                              leds[a0] = CRGB( 0, 0, 0);  // Aussen-LEDs zuruecksetzen
                                              markierungen_setzen();
                                             
                                              //### InnenTemp mit altem, bisherigem Wert ueberschreiben ###//
                                              if(Innen_LED_Nr == 60) { leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+45
                                              if(Innen_LED_Nr == 59) { leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+44
                                              if(Innen_LED_Nr == 58) { leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+43
                                              if(Innen_LED_Nr == 57) { leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+42
                                              if(Innen_LED_Nr == 56) { leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+41
                                              if(Innen_LED_Nr == 55) { leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+40
                                              if(Innen_LED_Nr == 54) { leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+39
                                              if(Innen_LED_Nr == 53) { leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+38
                                              if(Innen_LED_Nr == 52) { leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+37
                                              if(Innen_LED_Nr == 51) { leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+36
                                              if(Innen_LED_Nr == 50) { leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+35
                                              if(Innen_LED_Nr == 49) { leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+34
                                              if(Innen_LED_Nr == 48) { leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+33
                                              if(Innen_LED_Nr == 47) { leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+32
                                              if(Innen_LED_Nr == 46) { leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+31
                                              if(Innen_LED_Nr == 45) { leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+30
                                              if(Innen_LED_Nr == 44) { leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+29
                                              if(Innen_LED_Nr == 43) { leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+28
                                              if(Innen_LED_Nr == 42) { leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+27
                                              if(Innen_LED_Nr == 41) { leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+26
                                              if(Innen_LED_Nr == 40) { leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+25
                                              if(Innen_LED_Nr == 39) { leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+24
                                              if(Innen_LED_Nr == 38) { leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+23
                                              if(Innen_LED_Nr == 37) { leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+22  
                                              if(Innen_LED_Nr == 36) { leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+21
                                              if(Innen_LED_Nr == 35) { leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+20
                                              if(Innen_LED_Nr == 34) { leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+19
                                              if(Innen_LED_Nr == 33) { leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+18
                                              if(Innen_LED_Nr == 32) { leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+17
                                              if(Innen_LED_Nr == 31) { leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+16
                                              if(Innen_LED_Nr == 30) { leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+15
                                              if(Innen_LED_Nr == 29) { leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+14
                                              if(Innen_LED_Nr == 28) { leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+13
                                              if(Innen_LED_Nr == 27) { leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+12
                                              if(Innen_LED_Nr == 26) { leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+11
                                              if(Innen_LED_Nr == 25) { leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+10
                                              if(Innen_LED_Nr == 24) { leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+9
                                              if(Innen_LED_Nr == 23) { leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+8
                                              if(Innen_LED_Nr == 22) { leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+7
                                              if(Innen_LED_Nr == 21) { leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+6
                                              if(Innen_LED_Nr == 20) { leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+5
                                              if(Innen_LED_Nr == 19) { leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+4
                                              if(Innen_LED_Nr == 18) { leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+3
                                              if(Innen_LED_Nr == 17) { leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+2
                                              if(Innen_LED_Nr == 16) { leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+1
                                              if(Innen_LED_Nr == 15) { leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //0  
                                              if(Innen_LED_Nr == 14) { leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //-1
                                              if(Innen_LED_Nr == 13) { leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //-2
                                              if(Innen_LED_Nr == 12) { leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //-3
                                              if(Innen_LED_Nr == 11) { leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //-4
                                              if(Innen_LED_Nr == 10) { leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //-5
                                              if(Innen_LED_Nr ==  9) { leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //-6
                                              if(Innen_LED_Nr ==  8) { leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //-7
                                              if(Innen_LED_Nr ==  7) { leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //-8
                                              if(Innen_LED_Nr ==  6) { leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //-9
                                              if(Innen_LED_Nr ==  5) { leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //-10
                                              if(Innen_LED_Nr ==  4) { leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //-11
                                              if(Innen_LED_Nr ==  3) { leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //-12
                                              if(Innen_LED_Nr ==  2) { leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //-13
                                              if(Innen_LED_Nr ==  1) { leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //-14
                                              if(Innen_LED_Nr ==  0) { leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //-15
                                             
                                             ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                                             
                                              if(Aussen_LED_Nr == 60){ anima(); leds[Aussen_LED_Nr] = CRGB( 255, 0, 255);  a0 = Aussen_LED_Nr;  } //+45
                                              if(Aussen_LED_Nr == 59){ anima(); leds[Aussen_LED_Nr] = CRGB( 255, 0, 255);  a0 = Aussen_LED_Nr;  } //+44
                                              if(Aussen_LED_Nr == 58){ anima(); leds[Aussen_LED_Nr] = CRGB( 255, 0, 255);  a0 = Aussen_LED_Nr;  } //+43
                                              if(Aussen_LED_Nr == 57){ anima(); leds[Aussen_LED_Nr] = CRGB( 255, 0, 255);  a0 = Aussen_LED_Nr;  } //+42
                                              if(Aussen_LED_Nr == 56){ anima(); leds[Aussen_LED_Nr] = CRGB( 255, 0, 255);  a0 = Aussen_LED_Nr;  } //+41  
                                              if(Aussen_LED_Nr == 55){ anima(); leds[Aussen_LED_Nr] = CRGB( 255, 0, 255);  a0 = Aussen_LED_Nr;  } //+40
                                              if(Aussen_LED_Nr == 54){ anima(); leds[Aussen_LED_Nr] = CRGB( 255, 0, 255);  a0 = Aussen_LED_Nr;  } //+39
                                              if(Aussen_LED_Nr == 53){ anima(); leds[Aussen_LED_Nr] = CRGB( 255, 0, 255);  a0 = Aussen_LED_Nr;  } //+38
                                              if(Aussen_LED_Nr == 52){ anima(); leds[Aussen_LED_Nr] = CRGB( 255, 0, 255);  a0 = Aussen_LED_Nr;  } //+37
                                              if(Aussen_LED_Nr == 51){ anima(); leds[Aussen_LED_Nr] = CRGB( 255, 0, 255);  a0 = Aussen_LED_Nr;  } //+36
                                            
                                              if(Aussen_LED_Nr == 50){ anima(); leds[Aussen_LED_Nr] = CRGB( 255, 0, 0);  a0 = Aussen_LED_Nr;  } //+35
                                              if(Aussen_LED_Nr == 49){ anima(); leds[Aussen_LED_Nr] = CRGB( 255, 0, 0);  a0 = Aussen_LED_Nr;  } //+34
                                              if(Aussen_LED_Nr == 48){ anima(); leds[Aussen_LED_Nr] = CRGB( 255, 0, 0);  a0 = Aussen_LED_Nr;  } //+33
                                              if(Aussen_LED_Nr == 47){ anima(); leds[Aussen_LED_Nr] = CRGB( 255, 0, 0);  a0 = Aussen_LED_Nr;  } //+32
                                              if(Aussen_LED_Nr == 46){ anima(); leds[Aussen_LED_Nr] = CRGB( 255, 0, 0);  a0 = Aussen_LED_Nr;  } //+31
                                              if(Aussen_LED_Nr == 45){ anima(); leds[Aussen_LED_Nr] = CRGB( 255, 0, 0);  a0 = Aussen_LED_Nr;  } //+30
                                              if(Aussen_LED_Nr == 44){ anima(); leds[Aussen_LED_Nr] = CRGB( 255, 0, 0);  a0 = Aussen_LED_Nr;  } //+29
                                              if(Aussen_LED_Nr == 43){ anima(); leds[Aussen_LED_Nr] = CRGB( 255, 0, 0);  a0 = Aussen_LED_Nr;  } //+28
                                              if(Aussen_LED_Nr == 42){ anima(); leds[Aussen_LED_Nr] = CRGB( 255, 0, 0);  a0 = Aussen_LED_Nr;  } //+27
                                              if(Aussen_LED_Nr == 41){ anima(); leds[Aussen_LED_Nr] = CRGB( 255, 0, 0);  a0 = Aussen_LED_Nr;  } //+26
                                            
                                              if(Aussen_LED_Nr == 40){ anima(); leds[Aussen_LED_Nr] = CRGB( 255, 60, 0);  a0 = Aussen_LED_Nr;  } //+25
                                              if(Aussen_LED_Nr == 39){ anima(); leds[Aussen_LED_Nr] = CRGB( 255, 60, 0);  a0 = Aussen_LED_Nr;  } //+24
                                              if(Aussen_LED_Nr == 38){ anima(); leds[Aussen_LED_Nr] = CRGB( 255, 60, 0);  a0 = Aussen_LED_Nr;  } //+23
                                              if(Aussen_LED_Nr == 37){ anima(); leds[Aussen_LED_Nr] = CRGB( 255, 60, 0);  a0 = Aussen_LED_Nr;  } //+22
                                              if(Aussen_LED_Nr == 36){ anima(); leds[Aussen_LED_Nr] = CRGB( 255, 60, 0);  a0 = Aussen_LED_Nr;  } //+21
                                              if(Aussen_LED_Nr == 35){ anima(); leds[Aussen_LED_Nr] = CRGB( 255, 60, 0);  a0 = Aussen_LED_Nr;  } //+20
                                              
                                              if(Aussen_LED_Nr == 34){ anima(); leds[Aussen_LED_Nr] = CRGB( 0, 255, 0);  a0 = Aussen_LED_Nr;  } //+19
                                              if(Aussen_LED_Nr == 33){ anima(); leds[Aussen_LED_Nr] = CRGB( 0, 255, 0);  a0 = Aussen_LED_Nr;  } //+18
                                              if(Aussen_LED_Nr == 32){ anima(); leds[Aussen_LED_Nr] = CRGB( 0, 255, 0);  a0 = Aussen_LED_Nr;  } //+17
                                              if(Aussen_LED_Nr == 31){ anima(); leds[Aussen_LED_Nr] = CRGB( 0, 255, 0);  a0 = Aussen_LED_Nr;  } //+16
                                              
                                              if(Aussen_LED_Nr == 30){ anima(); leds[Aussen_LED_Nr] = CRGB( 0, 50, 0);  a0 = Aussen_LED_Nr;  } //+15
                                              if(Aussen_LED_Nr == 29){ anima(); leds[Aussen_LED_Nr] = CRGB( 0, 50, 0);  a0 = Aussen_LED_Nr;  } //+14
                                              if(Aussen_LED_Nr == 28){ anima(); leds[Aussen_LED_Nr] = CRGB( 0, 50, 0);  a0 = Aussen_LED_Nr;  } //+13
                                              if(Aussen_LED_Nr == 27){ anima(); leds[Aussen_LED_Nr] = CRGB( 0, 50, 0);  a0 = Aussen_LED_Nr;  } //+12
                                              if(Aussen_LED_Nr == 26){ anima(); leds[Aussen_LED_Nr] = CRGB( 0, 50, 0);  a0 = Aussen_LED_Nr;  } //+11
                                              
                                              if(Aussen_LED_Nr == 25){ anima(); leds[Aussen_LED_Nr] = CRGB( 70, 255, 70);  a0 = Aussen_LED_Nr;  } //+10
                                              if(Aussen_LED_Nr == 24){ anima(); leds[Aussen_LED_Nr] = CRGB( 70, 255, 70);  a0 = Aussen_LED_Nr;  } //+9
                                              if(Aussen_LED_Nr == 23){ anima(); leds[Aussen_LED_Nr] = CRGB( 70, 255, 70);  a0 = Aussen_LED_Nr;  } //+8
                                              if(Aussen_LED_Nr == 22){ anima(); leds[Aussen_LED_Nr] = CRGB( 70, 255, 70);  a0 = Aussen_LED_Nr;  } //+7
                                              if(Aussen_LED_Nr == 21){ anima(); leds[Aussen_LED_Nr] = CRGB( 70, 255, 70);  a0 = Aussen_LED_Nr;  } //+6
                                              
                                              if(Aussen_LED_Nr == 20){ anima(); leds[Aussen_LED_Nr] = CRGB( 160, 160, 160);  a0 = Aussen_LED_Nr;  } //+5
                                              if(Aussen_LED_Nr == 19){ anima(); leds[Aussen_LED_Nr] = CRGB( 160, 160, 160);  a0 = Aussen_LED_Nr;  } //+4
                                              if(Aussen_LED_Nr == 18){ anima(); leds[Aussen_LED_Nr] = CRGB( 160, 160, 160);  a0 = Aussen_LED_Nr;  } //+3
                                              if(Aussen_LED_Nr == 17){ anima(); leds[Aussen_LED_Nr] = CRGB( 160, 160, 160);  a0 = Aussen_LED_Nr;  } //+2
                                              if(Aussen_LED_Nr == 16){ anima(); leds[Aussen_LED_Nr] = CRGB( 160, 160, 160);  a0 = Aussen_LED_Nr;  } //+1
                                              if(Aussen_LED_Nr == 15){ anima(); leds[Aussen_LED_Nr] = CRGB( 160, 160, 160);  a0 = Aussen_LED_Nr;  } //0
                                              
                                              if(Aussen_LED_Nr == 14){ anima(); leds[Aussen_LED_Nr] = CRGB( 255, 0, 255);  a0 = Aussen_LED_Nr;  } //-1
                                              if(Aussen_LED_Nr == 13){ anima(); leds[Aussen_LED_Nr] = CRGB( 255, 0, 255);  a0 = Aussen_LED_Nr;  } //-2
                                              if(Aussen_LED_Nr == 12){ anima(); leds[Aussen_LED_Nr] = CRGB( 255, 0, 255);  a0 = Aussen_LED_Nr;  } //-3
                                              if(Aussen_LED_Nr == 11){ anima(); leds[Aussen_LED_Nr] = CRGB( 255, 0, 255);  a0 = Aussen_LED_Nr;  } //-4
                                              if(Aussen_LED_Nr == 10){ anima(); leds[Aussen_LED_Nr] = CRGB( 255, 0, 255);  a0 = Aussen_LED_Nr;  } //-5
                                              
                                              if(Aussen_LED_Nr ==  9){ anima(); leds[Aussen_LED_Nr] = CRGB( 255, 0, 70);  a0 = Aussen_LED_Nr;  } //-6
                                              if(Aussen_LED_Nr ==  8){ anima(); leds[Aussen_LED_Nr] = CRGB( 255, 0, 70);  a0 = Aussen_LED_Nr;  } //-7
                                              if(Aussen_LED_Nr ==  7){ anima(); leds[Aussen_LED_Nr] = CRGB( 255, 0, 70);  a0 = Aussen_LED_Nr;  } //-8
                                              if(Aussen_LED_Nr ==  6){ anima(); leds[Aussen_LED_Nr] = CRGB( 255, 0, 70);  a0 = Aussen_LED_Nr;  } //-9
                                              if(Aussen_LED_Nr ==  5){ anima(); leds[Aussen_LED_Nr] = CRGB( 255, 0, 70);  a0 = Aussen_LED_Nr;  } //-10
                                              if(Aussen_LED_Nr ==  4){ anima(); leds[Aussen_LED_Nr] = CRGB( 255, 0, 70);  a0 = Aussen_LED_Nr;  } //-11
                                              if(Aussen_LED_Nr ==  3){ anima(); leds[Aussen_LED_Nr] = CRGB( 255, 0, 70);  a0 = Aussen_LED_Nr;  } //-12
                                              if(Aussen_LED_Nr ==  2){ anima(); leds[Aussen_LED_Nr] = CRGB( 255, 0, 70);  a0 = Aussen_LED_Nr;  } //-13
                                              if(Aussen_LED_Nr ==  1){ anima(); leds[Aussen_LED_Nr] = CRGB( 255, 0, 70);  a0 = Aussen_LED_Nr;  } //-14
                                              if(Aussen_LED_Nr ==  0){ anima(); leds[Aussen_LED_Nr] = CRGB( 255, 0, 70);  a0 = Aussen_LED_Nr;  } //-15
                                             FastLED.show();  
                                             } // end of ifLedIndex == 0
                                            ////////////////////////////////////////////////////////////////////////////////////////////////
                                            
                                             //####################
                                             //Innen-Temp anzeigen
                                             //####################
                                             
                                             if(LedIndex == 1){
                                               leds[i0] = CRGB( 0, 0, 0);  // Innen-LEDs zuruecksetzen 
                                               markierungen_setzen();
                                             
                                              //###  AuusenTemp mit altem Wert, bisherigem ueberschreiben ###//
                                              if(Aussen_LED_Nr == 60){ leds[Aussen_LED_Nr] = CRGB( 255, 0, 255);  a0 = Aussen_LED_Nr;  } //+45
                                              if(Aussen_LED_Nr == 59){ leds[Aussen_LED_Nr] = CRGB( 255, 0, 255);  a0 = Aussen_LED_Nr;  } //+44
                                              if(Aussen_LED_Nr == 58){ leds[Aussen_LED_Nr] = CRGB( 255, 0, 255);  a0 = Aussen_LED_Nr;  } //+43
                                              if(Aussen_LED_Nr == 57){ leds[Aussen_LED_Nr] = CRGB( 255, 0, 255);  a0 = Aussen_LED_Nr;  } //+42
                                              if(Aussen_LED_Nr == 56){ leds[Aussen_LED_Nr] = CRGB( 255, 0, 255);  a0 = Aussen_LED_Nr;  } //+41  
                                              if(Aussen_LED_Nr == 55){ leds[Aussen_LED_Nr] = CRGB( 255, 0, 255);  a0 = Aussen_LED_Nr;  } //+40
                                              if(Aussen_LED_Nr == 54){ leds[Aussen_LED_Nr] = CRGB( 255, 0, 255);  a0 = Aussen_LED_Nr;  } //+39
                                              if(Aussen_LED_Nr == 53){ leds[Aussen_LED_Nr] = CRGB( 255, 0, 255);  a0 = Aussen_LED_Nr;  } //+38
                                              if(Aussen_LED_Nr == 52){ leds[Aussen_LED_Nr] = CRGB( 255, 0, 255);  a0 = Aussen_LED_Nr;  } //+37
                                              if(Aussen_LED_Nr == 51){ leds[Aussen_LED_Nr] = CRGB( 255, 0, 255);  a0 = Aussen_LED_Nr;  } //+36
                                            
                                              if(Aussen_LED_Nr == 50){ leds[Aussen_LED_Nr] = CRGB( 255, 0, 0);  a0 = Aussen_LED_Nr;  } //+35
                                              if(Aussen_LED_Nr == 49){ leds[Aussen_LED_Nr] = CRGB( 255, 0, 0);  a0 = Aussen_LED_Nr;  } //+34
                                              if(Aussen_LED_Nr == 48){ leds[Aussen_LED_Nr] = CRGB( 255, 0, 0);  a0 = Aussen_LED_Nr;  } //+33
                                              if(Aussen_LED_Nr == 47){ leds[Aussen_LED_Nr] = CRGB( 255, 0, 0);  a0 = Aussen_LED_Nr;  } //+32
                                              if(Aussen_LED_Nr == 46){ leds[Aussen_LED_Nr] = CRGB( 255, 0, 0);  a0 = Aussen_LED_Nr;  } //+31
                                              if(Aussen_LED_Nr == 45){ leds[Aussen_LED_Nr] = CRGB( 255, 0, 0);  a0 = Aussen_LED_Nr;  } //+30
                                              if(Aussen_LED_Nr == 44){ leds[Aussen_LED_Nr] = CRGB( 255, 0, 0);  a0 = Aussen_LED_Nr;  } //+29
                                              if(Aussen_LED_Nr == 43){ leds[Aussen_LED_Nr] = CRGB( 255, 0, 0);  a0 = Aussen_LED_Nr;  } //+28
                                              if(Aussen_LED_Nr == 42){ leds[Aussen_LED_Nr] = CRGB( 255, 0, 0);  a0 = Aussen_LED_Nr;  } //+27
                                              if(Aussen_LED_Nr == 41){ leds[Aussen_LED_Nr] = CRGB( 255, 0, 0);  a0 = Aussen_LED_Nr;  } //+26
                                            
                                              if(Aussen_LED_Nr == 40){ leds[Aussen_LED_Nr] = CRGB( 255, 60, 0);  a0 = Aussen_LED_Nr;  } //+25
                                              if(Aussen_LED_Nr == 39){ leds[Aussen_LED_Nr] = CRGB( 255, 60, 0);  a0 = Aussen_LED_Nr;  } //+24
                                              if(Aussen_LED_Nr == 38){ leds[Aussen_LED_Nr] = CRGB( 255, 60, 0);  a0 = Aussen_LED_Nr;  } //+23
                                              if(Aussen_LED_Nr == 37){ leds[Aussen_LED_Nr] = CRGB( 255, 60, 0);  a0 = Aussen_LED_Nr;  } //+22
                                              if(Aussen_LED_Nr == 36){ leds[Aussen_LED_Nr] = CRGB( 255, 60, 0);  a0 = Aussen_LED_Nr;  } //+21
                                              if(Aussen_LED_Nr == 35){ leds[Aussen_LED_Nr] = CRGB( 255, 60, 0);  a0 = Aussen_LED_Nr;  } //+20
                                              
                                              if(Aussen_LED_Nr == 34){ leds[Aussen_LED_Nr] = CRGB( 0, 255, 0);  a0 = Aussen_LED_Nr;  } //+19
                                              if(Aussen_LED_Nr == 33){ leds[Aussen_LED_Nr] = CRGB( 0, 255, 0);  a0 = Aussen_LED_Nr;  } //+18
                                              if(Aussen_LED_Nr == 32){ leds[Aussen_LED_Nr] = CRGB( 0, 255, 0);  a0 = Aussen_LED_Nr;  } //+17
                                              if(Aussen_LED_Nr == 31){ leds[Aussen_LED_Nr] = CRGB( 0, 255, 0);  a0 = Aussen_LED_Nr;  } //+16
                                              
                                              if(Aussen_LED_Nr == 30){ leds[Aussen_LED_Nr] = CRGB( 0, 50, 0);  a0 = Aussen_LED_Nr;  } //+15
                                              if(Aussen_LED_Nr == 29){ leds[Aussen_LED_Nr] = CRGB( 0, 50, 0);  a0 = Aussen_LED_Nr;  } //+14
                                              if(Aussen_LED_Nr == 28){ leds[Aussen_LED_Nr] = CRGB( 0, 50, 0);  a0 = Aussen_LED_Nr;  } //+13
                                              if(Aussen_LED_Nr == 27){ leds[Aussen_LED_Nr] = CRGB( 0, 50, 0);  a0 = Aussen_LED_Nr;  } //+12
                                              if(Aussen_LED_Nr == 26){ leds[Aussen_LED_Nr] = CRGB( 0, 50, 0);  a0 = Aussen_LED_Nr;  } //+11
                                              
                                              if(Aussen_LED_Nr == 25){ leds[Aussen_LED_Nr] = CRGB( 70, 255, 70); a0 = Aussen_LED_Nr;  } //+10
                                              if(Aussen_LED_Nr == 24){ leds[Aussen_LED_Nr] = CRGB( 70, 255, 70); a0 = Aussen_LED_Nr;  } //+9
                                              if(Aussen_LED_Nr == 23){ leds[Aussen_LED_Nr] = CRGB( 70, 255, 70); a0 = Aussen_LED_Nr;  } //+8
                                              if(Aussen_LED_Nr == 22){ leds[Aussen_LED_Nr] = CRGB( 70, 255, 70); a0 = Aussen_LED_Nr;  } //+7
                                              if(Aussen_LED_Nr == 21){ leds[Aussen_LED_Nr] = CRGB( 70, 255, 70); a0 = Aussen_LED_Nr;  } //+6
                                              
                                              if(Aussen_LED_Nr == 20){ leds[Aussen_LED_Nr] = CRGB( 160, 160, 160);  a0 = Aussen_LED_Nr;  } //+5
                                              if(Aussen_LED_Nr == 19){ leds[Aussen_LED_Nr] = CRGB( 160, 160, 160);  a0 = Aussen_LED_Nr;  } //+4
                                              if(Aussen_LED_Nr == 18){ leds[Aussen_LED_Nr] = CRGB( 160, 160, 160);  a0 = Aussen_LED_Nr;  } //+3
                                              if(Aussen_LED_Nr == 17){ leds[Aussen_LED_Nr] = CRGB( 160, 160, 160);  a0 = Aussen_LED_Nr;  } //+2
                                              if(Aussen_LED_Nr == 16){ leds[Aussen_LED_Nr] = CRGB( 160, 160, 160);  a0 = Aussen_LED_Nr;  } //+1
                                              if(Aussen_LED_Nr == 15){ leds[Aussen_LED_Nr] = CRGB( 160, 160, 160);  a0 = Aussen_LED_Nr;  } //0
                                              
                                              if(Aussen_LED_Nr == 14){ leds[Aussen_LED_Nr] = CRGB( 255, 0, 255);  a0 = Aussen_LED_Nr;  } //-1
                                              if(Aussen_LED_Nr == 13){ leds[Aussen_LED_Nr] = CRGB( 255, 0, 255);  a0 = Aussen_LED_Nr;  } //-2
                                              if(Aussen_LED_Nr == 12){ leds[Aussen_LED_Nr] = CRGB( 255, 0, 255);  a0 = Aussen_LED_Nr;  } //-3
                                              if(Aussen_LED_Nr == 11){ leds[Aussen_LED_Nr] = CRGB( 255, 0, 255);  a0 = Aussen_LED_Nr;  } //-4
                                              if(Aussen_LED_Nr == 10){ leds[Aussen_LED_Nr] = CRGB( 255, 0, 255);  a0 = Aussen_LED_Nr;  } //-5
                                              
                                              if(Aussen_LED_Nr ==  9){ leds[Aussen_LED_Nr] = CRGB( 255, 0, 70);  a0 = Aussen_LED_Nr;  } //-6
                                              if(Aussen_LED_Nr ==  8){ leds[Aussen_LED_Nr] = CRGB( 255, 0, 70);  a0 = Aussen_LED_Nr;  } //-7
                                              if(Aussen_LED_Nr ==  7){ leds[Aussen_LED_Nr] = CRGB( 255, 0, 70);  a0 = Aussen_LED_Nr;  } //-8
                                              if(Aussen_LED_Nr ==  6){ leds[Aussen_LED_Nr] = CRGB( 255, 0, 70);  a0 = Aussen_LED_Nr;  } //-9
                                              if(Aussen_LED_Nr ==  5){ leds[Aussen_LED_Nr] = CRGB( 255, 0, 70);  a0 = Aussen_LED_Nr;  } //-10
                                              if(Aussen_LED_Nr ==  4){ leds[Aussen_LED_Nr] = CRGB( 255, 0, 70);  a0 = Aussen_LED_Nr;  } //-11
                                              if(Aussen_LED_Nr ==  3){ leds[Aussen_LED_Nr] = CRGB( 255, 0, 70);  a0 = Aussen_LED_Nr;  } //-12
                                              if(Aussen_LED_Nr ==  2){ leds[Aussen_LED_Nr] = CRGB( 255, 0, 70);  a0 = Aussen_LED_Nr;  } //-13
                                              if(Aussen_LED_Nr ==  1){ leds[Aussen_LED_Nr] = CRGB( 255, 0, 70);  a0 = Aussen_LED_Nr;  } //-14
                                              if(Aussen_LED_Nr ==  0){ leds[Aussen_LED_Nr] = CRGB( 255, 0, 70);  a0 = Aussen_LED_Nr;  } //-15
                                             
                                            ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                                            
                                              if(Innen_LED_Nr == 60) { animi(); leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+45
                                              if(Innen_LED_Nr == 59) { animi(); leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+44
                                              if(Innen_LED_Nr == 58) { animi(); leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+43
                                              if(Innen_LED_Nr == 57) { animi(); leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+42
                                              if(Innen_LED_Nr == 56) { animi(); leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+41
                                              if(Innen_LED_Nr == 55) { animi(); leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+40
                                              if(Innen_LED_Nr == 54) { animi(); leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+39
                                              if(Innen_LED_Nr == 53) { animi(); leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+38
                                              if(Innen_LED_Nr == 52) { animi(); leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+37
                                              if(Innen_LED_Nr == 51) { animi(); leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+36
                                              if(Innen_LED_Nr == 50) { animi(); leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+35  
                                              if(Innen_LED_Nr == 49) { animi(); leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+34
                                              if(Innen_LED_Nr == 48) { animi(); leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+33
                                              if(Innen_LED_Nr == 47) { animi(); leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+32
                                              if(Innen_LED_Nr == 46) { animi(); leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+31
                                              if(Innen_LED_Nr == 45) { animi(); leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+30
                                              if(Innen_LED_Nr == 44) { animi(); leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+29
                                              if(Innen_LED_Nr == 43) { animi(); leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+28
                                              if(Innen_LED_Nr == 42) { animi(); leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+27
                                              if(Innen_LED_Nr == 41) { animi(); leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+26
                                              if(Innen_LED_Nr == 40) { animi(); leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+25
                                              if(Innen_LED_Nr == 39) { animi(); leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+24
                                              if(Innen_LED_Nr == 38) { animi(); leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+23
                                              if(Innen_LED_Nr == 37) { animi(); leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+22  
                                              if(Innen_LED_Nr == 36) { animi(); leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+21
                                              if(Innen_LED_Nr == 35) { animi(); leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+20
                                              if(Innen_LED_Nr == 34) { animi(); leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+19
                                              if(Innen_LED_Nr == 33) { animi(); leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+18
                                              if(Innen_LED_Nr == 32) { animi(); leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+17
                                              if(Innen_LED_Nr == 31) { animi(); leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+16
                                              if(Innen_LED_Nr == 30) { animi(); leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+15
                                              if(Innen_LED_Nr == 29) { animi(); leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+14
                                              if(Innen_LED_Nr == 28) { animi(); leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+13
                                              if(Innen_LED_Nr == 27) { animi(); leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+12
                                              if(Innen_LED_Nr == 26) { animi(); leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+11
                                              if(Innen_LED_Nr == 25) { animi(); leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+10
                                              if(Innen_LED_Nr == 24) { animi(); leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+9
                                              if(Innen_LED_Nr == 23) { animi(); leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+8
                                              if(Innen_LED_Nr == 22) { animi(); leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+7
                                              if(Innen_LED_Nr == 21) { animi(); leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+6
                                              if(Innen_LED_Nr == 20) { animi(); leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+5
                                              if(Innen_LED_Nr == 19) { animi(); leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+4
                                              if(Innen_LED_Nr == 18) { animi(); leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+3
                                              if(Innen_LED_Nr == 17) { animi(); leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+2
                                              if(Innen_LED_Nr == 16) { animi(); leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //+1
                                              if(Innen_LED_Nr == 15) { animi(); leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //0  
                                              if(Innen_LED_Nr == 14) { animi(); leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //-1
                                              if(Innen_LED_Nr == 13) { animi(); leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //-2
                                              if(Innen_LED_Nr == 12) { animi(); leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //-3
                                              if(Innen_LED_Nr == 11) { animi(); leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //-4
                                              if(Innen_LED_Nr == 10) { animi(); leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //-5
                                              if(Innen_LED_Nr ==  9) { animi(); leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //-6
                                              if(Innen_LED_Nr ==  8) { animi(); leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //-7
                                              if(Innen_LED_Nr ==  7) { animi(); leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //-8
                                              if(Innen_LED_Nr ==  6) { animi(); leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //-9
                                              if(Innen_LED_Nr ==  5) { animi(); leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //-10
                                              if(Innen_LED_Nr ==  4) { animi(); leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //-11
                                              if(Innen_LED_Nr ==  3) { animi(); leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //-12
                                              if(Innen_LED_Nr ==  2) { animi(); leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //-13
                                              if(Innen_LED_Nr ==  1) { animi(); leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //-14
                                              if(Innen_LED_Nr ==  0) { animi(); leds[Innen_LED_Nr] = CRGB( 255, 150, 0);  i0 = Innen_LED_Nr;  }  //-15
                                             FastLED.show();
                                             } // end of ifLedIndex == 1
                                            
                                            } // end of void MQTTCallback
                                            
                                            //_________________________________________________________________________________________
                                            void reconnect() {
                                             while (!client.connected()) {
                                                 for(int i=NUM_LEDS-1; i>=0; i--){  //alle LEDS leuchten nacheinander gruen, wenn noch nicht mit MQTT verbunden     
                                                    delay(15);
                                                    leds[i] = CRGB( 0, 255, 0);
                                                    FastLED.show();     
                                                }
                                                Serial.print("Attempting MQTT connection...");
                                                String clientId = "Big Thermometer";
                                                // Attempt to connect
                                                if (client.connect(clientId.c_str())) {
                                            
                                                    delay(1000);
                                                    FastLED.clear();  // alle LEDs aus, wenn mit MQTT verbunden
                                                     FastLED.show();
                                                      
                                                    Serial.println("connected");
                                                    client.subscribe("javascript/0/BigTemp/#"); // alle subscriben
                                                }
                                                else{
                                                    Serial.print("failed, rc=");
                                                    Serial.print(client.state());
                                                    Serial.println(" try again in 5 seconds");
                                                    // Wait 5 seconds before retrying
                                                    delay(5000);
                                                }
                                             } // end of while
                                            
                                             markierungen_setzen();  // 5er Skalenmarkierungen setzen
                                              delay(200);
                                            }  // end of void reconnect
                                            
                                            //_________________________________________________________________________________________
                                            void setup() {
                                            pinMode(intLED, OUTPUT);    // interne LED
                                            digitalWrite(intLED, HIGH); // interne blaue Board-LED ausschalten ( HIGH = Off)
                                            
                                            FastLED.addLeds<LED_TYPE, LED_PIN>(leds, NUM_LEDS);
                                            FastLED.setBrightness(start_helligkeit);
                                            
                                                 for(int i=0; i<=NUM_LEDS-1; i++){  //alle LEDS leuchten nacheinander tuerkis nach dem booten
                                                  delay(18);
                                                    leds[i] = CRGB( 70, 150, 70);
                                                    FastLED.show();     
                                                }
                                            delay(700);
                                            
                                            FastLED.clear();  // alle LEDs aus
                                            FastLED.show();
                                            
                                            Serial.begin(115200);
                                            setup_wifi();
                                            delay(500);
                                            
                                            client.setServer(mqtt_server, mqtt_port);  // mqtt.0 auf Port 1891 in ioBroker
                                            client.setCallback(MQTTCallback);
                                            ArduinoOTA.setHostname(OTA_host);   // fuer Flashen ueber WLAN
                                            ArduinoOTA.begin();                 // fuer Flashen ueber WLAN
                                            
                                            } // end of setup
                                            
                                            //_________________________________________________________________________________________
                                            
                                            void loop(){
                                              ArduinoOTA.handle();  //fuer Flashen ueber WLAN
                                              if (!client.connected()) { reconnect(); }
                                              client.loop();
                                            
                                              
                                            } // end of loop
                                            
                                            //_________________________________________________________________________________________
                                            
                                            
                                            

                                            Anmerkungen zum Sketch:
                                            0.) Ich verwende lieber statische IP-Adressen, als DHCP, deshalb müssen im Sketch die eigenen Netzwerkparameter manuell eingetragen werden
                                            1.) Libraries ESP8266WiFi.h, PubSubClient.h ArduinoOTA.h, FastLED.h müssen in Arduino-IDE installiert sein.
                                            2.) Nach dem Boot leuchten alle LEDs nacheinander türkis.
                                            3.) Solange das WLAN noch nicht verbunden ist, leuchten alle LEDs mit einem Regenbogen-Effekt
                                            4.) Wenn MQTT verbunden ist, leuchten alle LEDs nacheinander kurz grün.
                                            5.) Meine gewählten Farben für die Aussen-Temp Bereiche:
                                            -15 bis -6 dunkelviolett
                                            -5 bis -1 violett
                                            0 bis +5 weiß
                                            +6 bis +10 türkis
                                            +11 bis +15 dunkelgrün
                                            +16 bis +19 grün
                                            +20 bis +25 orange
                                            +26 bis +35 rot
                                            +36 bis +45 violett
                                            6.) Farbe für kpl. Innen-Temp-Bereich : gelb

                                            Evtl. werden die Farben - je nach verwendetem RGB-Stripe - anders dargestellt, oder wem die Farben/Bereiche nicht gefallen, der kann sie im Sketch entspr. anpassen ( CRGB( xxx, yyy, zzz) )

                                            Sollte es - aus welchen Gründen auch immer - nicht funktionieren, auch mal den seriellen Monitor einschalten und die Meldungen beobachten.

                                            Man könnte das Ganze wahrscheinlich auch eleganter - als mit den vielen if-Abfragen - programmieren, aber dazu stecke ich da nicht tief genug drin.

                                            Hinweis:
                                            Nach dem erstmaligen Flashen via USB-Kabel ist es fortan auch möglich die NodeMCU via WLAN zu flashen ( OTA = Over the air). Dazu in der Arduino-IDE unter "Werkzeuge" -> "Board" den Port "Big Thermometer at xxx.xxx.xxx.xxx" auswählen.

                                            Wer es gebrauchen kann, hier noch ein Layout auf Lochrasterplatine:
                                            BigThermometer_Lochraster.jpg
                                            (Den zusätzlichen Reset-Button habe ich per Kabel in der Gehäuse-Wandung montiert)

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            920
                                            Online

                                            31.9k
                                            Users

                                            80.2k
                                            Topics

                                            1.3m
                                            Posts

                                            ws2812 display
                                            3
                                            25
                                            2550
                                            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