@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)