-
Notifications
You must be signed in to change notification settings - Fork 137
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Change Color to White chrash espalexa #68
Comments
No solution? I'm the only one with this problem? |
Thanks for the report, I'll investigate. Regular Echos and Echo Dots use different protocols for color (Echo hue+saturation, Dot xy-colorspace). So it might be that the hue+sat works (thus I can't reproduce it immediately with my regular Echo) but the xy formula crashes when white is selected for some reason. |
I tested this with 3 different devices and all of them produces a crash:
|
@ChristianKnorr I investigated a bit and couldn't find any apparent fault with the code. Exception (0) indicates an illegal processor instruction and is usually caused by incorrect program data in flash. Can you try again with another ESP or re-uploading with baudrate 115200? |
I tried a new WEMOS to code with 115200 with the same result. /*
An example that demonstrates most capabilities of Espalexa v2.4.0
*/
#define ENABLE_ARDUINOOTA
#ifdef ARDUINO_ARCH_ESP32
#include <WiFi.h>
#else
#include <ESP8266WiFi.h>
#endif
//#define ESPALEXA_ASYNC //uncomment for async operation (can fix empty body issue)
//#define ESPALEXA_NO_SUBPAGE //disable /espalexa status page
//#define ESPALEXA_DEBUG //activate debug serial logging
//#define ESPALEXA_MAXDEVICES 15 //set maximum devices add-able to Espalexa
#include <Espalexa.h>
#include <DNSServer.h> //Local DNS Server used for redirecting all requests to the configuration portal
#include <ESP8266WebServer.h> //Local WebServer used to serve the configuration portal
#include <WiFiManager.h> //https://github.com/tzapu/WiFiManager WiFi Configuration Magic
#ifdef ENABLE_ARDUINOOTA
#include <ArduinoOTA.h>
#endif
#include <FastLED.h>
#define DATA_PIN D1
//#define CLOCK_PIN ?
#define NUM_LEDS 51
uint8_t max_bright = 255; // Overall brightness definition. It can be changed on the fly.
uint8_t volt = 5; // Overall brightness definition. It can be changed on the fly.
unsigned long miliampere = 5000; // Overall brightness definition. It can be changed on the fly.
CRGB leds[NUM_LEDS];
#define switchR D5
#define switchM D6
#define switchL D7
int buttonStateR, buttonStateM, buttonStateL; // the current reading from the input pin
int lastButtonStateR = HIGH, lastButtonStateM = HIGH, lastButtonStateL = HIGH; // the previous reading from the input pin
unsigned long lastDebounceTimeR = 0, lastDebounceTimeM = 0, lastDebounceTimeL = 0; // the last time the output pin was toggled
unsigned long debounceDelayR = 50, debounceDelayM = 50, debounceDelayL = 50; // the debounce time; increase if the output flickers
//callback functions
//new callback type, contains device pointer
//void ColorDev(EspalexaDevice* dev);
Espalexa espalexa;
CRGB purple = CHSV( HUE_PURPLE, 255, 255);
CRGB gold = CRGB(165,42,42);
const TProgmemRGBPalette16 OpenDoor_p_goldwhite FL_PROGMEM = {
CRGB::Chocolate,
CRGB::Chocolate,
CRGB::Chocolate,
CRGB::Chocolate,
CRGB::Chocolate,
CRGB::Chocolate,
CRGB::Chocolate,
CRGB::Chocolate,
CRGB::Chocolate,
CRGB::Chocolate,
CRGB::Chocolate,
CRGB::Chocolate,
CRGB::Chocolate,
CRGB::Chocolate,
CRGB::Chocolate,
CRGB::Chocolate
};
//CRGBPalette16 currentPalette = LavaColors_p;
CRGBPalette16 currentPalette = CRGB(0,0,0); // black
CRGBPalette16 currentPalette0 = currentPalette;
CRGBPalette16 currentPalette1 = currentPalette;
CRGBPalette16 currentPalette2 = currentPalette;
//CRGBPalette16 targetPalette = OceanColors_p;
CRGBPalette16 targetPalette = CRGB(0,0,0);
CRGBPalette16 targetPalette0 = targetPalette;
CRGBPalette16 targetPalette1 = targetPalette;
CRGBPalette16 targetPalette2 = targetPalette;
CRGBPalette16 DoorOpenPalette0 = OpenDoor_p_goldwhite; // http://www.barcodepapel.com.mx/AudioRitmicas.ino
CRGBPalette16 DoorOpenPalette1 = OpenDoor_p_goldwhite; // http://www.barcodepapel.com.mx/AudioRitmicas.ino
CRGBPalette16 DoorOpenPalette2 = OpenDoor_p_goldwhite; // http://www.barcodepapel.com.mx/AudioRitmicas.ino
TBlendType currentBlending; // NOBLEND or LINEARBLEND
static int16_t dist; // A moving location for our noise generator.
uint16_t xscale = 30; // Wouldn't recommend changing this on the fly, or the animation will be really blocky.
uint16_t yscale = 30; // Wouldn't recommend changing this on the fly, or the animation will be really blocky.
uint32_t rgb;
uint8_t maxChanges = 24; // Value for blending between palettes.
uint8_t brightnesperled;
struct RGB_set {
unsigned char r;
unsigned char g;
unsigned char b;
} RGB_set;
struct HSV_set {
signed int h;
unsigned char s;
unsigned char v;
} HSV_set;
void setup() {
pinMode(switchR, INPUT_PULLUP);
pinMode(switchM, INPUT_PULLUP);
pinMode(switchL, INPUT_PULLUP);
pinMode(LED_BUILTIN, OUTPUT); // LED als Output definieren
FastLED.addLeds<WS2812B, DATA_PIN, GRB>(leds, NUM_LEDS);
FastLED.setBrightness(max_bright);
set_max_power_in_volts_and_milliamps(volt, miliampere); // FastLED Power management set at 5V, 500mA.
#ifdef ENABLE_ARDUINOOTA
ArduinoOTA.setPassword("admin");
#endif
for ( int i = 0; i <= 30; i++ ) { // fade from black to orange
fill_solid( leds, NUM_LEDS, CRGB(i, round( (i / 1, 5) ), 0));
FastLED.show();
delay(20);
}
Serial.begin(115200);
Serial.println("\n\nconnect to Espalexa and configure wifi");
wifi_station_set_hostname("Espalexa"); // if in Client-Mode
WiFiManager wifiManager;
if (!wifiManager.autoConnect("Espalexa")) { // if in AP Mode
fill_solid( leds, NUM_LEDS, CRGB(255, 0, 0)); // red
FastLED.show();
Serial.println("failed to connect and hit timeout");
//reset and try again, or maybe put it to deep sleep
ESP.reset();
delay(1000);
} else {
for ( int i = 0; i <= 30; i++ ) { // fade from orange to green
fill_solid( leds, NUM_LEDS, CRGB((30 - i), (20 + i), 0));
FastLED.show();
delay(33);
}
Serial.println("connected to WIFI..");
// Define your devices here.
Serial.println("Definiere Test Objekt rechts");
// espalexa.addDevice("Test Objekt rechts", ColorDev, EspalexaDeviceType::color);
espalexa.addDevice("Test Objekt rechts", ColorDev, EspalexaDeviceType::extendedcolor);
// espalexa.addDevice("Test Objekt rechts", ColorDev, EspalexaDeviceType::whitespectrum);
Serial.println("Definiere Test Objekt mitte");
espalexa.addDevice("Test Objekt mitte", ColorDev, EspalexaDeviceType::extendedcolor);
Serial.println("Definiere Test Objekt links");
espalexa.addDevice("Test Objekt links", ColorDev, EspalexaDeviceType::extendedcolor);
for ( int i = 0; i < 3; i++ ) { // initial LEDs
EspalexaDevice* temp = espalexa.getDevice(i);
// temp->setColor(0,255); // red: hue 0, sat 255
temp->setColor(6916,255); // orange
temp->setPercent(0); // off
}
Serial.println("espalexa.begin");
espalexa.begin();
delay(1000);
for ( int i = 50; i >= 0; i-- ) { // fade from green to black
fill_solid( leds, NUM_LEDS, CRGB(0, i, 0));
FastLED.show();
delay(20);
}
}
Serial.println("Now it's time to ask alexa to discover devices...");
dist = random16(12345); // A semi-random number for our noise generator
digitalWrite(LED_BUILTIN, HIGH); // internal blue LED off
#ifdef ENABLE_ARDUINOOTA
ArduinoOTA.onStart([]() {
String type;
if (ArduinoOTA.getCommand() == U_FLASH) {
type = "sketch";
} else { // U_SPIFFS
type = "filesystem";
}
// NOTE: if updating SPIFFS this would be the place to unmount SPIFFS using SPIFFS.end()
Serial.println("Start updating " + type);
});
ArduinoOTA.onEnd([]() {
Serial.println("\nEnd");
});
ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) {
Serial.printf("Progress: %u%%\r", (progress / (total / 100)));
});
ArduinoOTA.onError([](ota_error_t error) {
Serial.printf("Error[%u]: ", error);
if (error == OTA_AUTH_ERROR) {
Serial.println("Auth Failed");
} else if (error == OTA_BEGIN_ERROR) {
Serial.println("Begin Failed");
} else if (error == OTA_CONNECT_ERROR) {
Serial.println("Connect Failed");
} else if (error == OTA_RECEIVE_ERROR) {
Serial.println("Receive Failed");
} else if (error == OTA_END_ERROR) {
Serial.println("End Failed");
}
});
ArduinoOTA.begin();
#endif
}
int hue = 0, hue1, hue2, hue3, V;
int rndflicker = 15, rndflicker0, rndflicker1, rndflicker2; // more and less H-Value for color-flicker. Set to 0 to disable to get a solid color
void loop() {
espalexa.loop();
#ifdef ENABLE_ARDUINOOTA
ArduinoOTA.handle();
#endif
// EVERY_N_MILLISECONDS(20) {
EVERY_N_MILLISECONDS(30) {
nblendPaletteTowardPalette(currentPalette0, targetPalette0, maxChanges); // AWESOME palette blending capability.
nblendPaletteTowardPalette(currentPalette1, targetPalette1, maxChanges); // AWESOME palette blending capability.
nblendPaletteTowardPalette(currentPalette2, targetPalette2, maxChanges); // AWESOME palette blending capability.
inoise8_mover(); // Update the LED array with noise at the new location
fadeToBlackBy(leds, NUM_LEDS, 16);
}
V = random8(200, 255); // Brightness for inoise8
// V = random8(128, 255); // Brightness for inoise8
// V = random8(1, 255); // Brightness for inoise8
FastLED.show();
}
void ColorDev(EspalexaDevice* d) {
// float r = ((rgb >> 16) & 0xFF);
// float g = ((rgb >> 8) & 0xFF);
// float b = (rgb & 0xFF);
struct RGB_set RGB;
struct HSV_set HSV;
RGB.r = d->getR(); RGB.g = d->getG(), RGB.b = d->getB();
RGB2HSV(RGB, &HSV);
uint16_t hue = d->getHue();
uint8_t sat = d->getSat();
if (d == nullptr) return;
Serial.print(d->getName());
Serial.print("\t");
Serial.print(d->getValue());
Serial.print(", color R");
Serial.print(d->getR());
Serial.print("\tG");
Serial.print(d->getG());
Serial.print("\tB");
Serial.print(d->getB());
Serial.print("\tHue");
Serial.print(d->getHue());
Serial.print("\tSat");
Serial.print(d->getSat());
Serial.print("\tcolormode ");
switch (d->getColorMode()) {
case EspalexaColorMode::hs:
Serial.print("hs, "); Serial.print("hue "); Serial.print(d->getHue()); Serial.print("\tsat "); Serial.println(d->getSat());
break;
case EspalexaColorMode::xy:
Serial.print("xy, "); Serial.print("x "); Serial.print(d->getX()); Serial.print("\ty "); Serial.println(d->getY());
break;
case EspalexaColorMode::ct:
Serial.print("ct, "); Serial.print("ct "); Serial.println(d->getCt());
break;
case EspalexaColorMode::none:
Serial.println("none");
break;
default:
// statements
break;
}
/*
if ( ( d->getValue() < 27 ) && ( d->getValue() > 0 ) ) {
d->setValue(27); // set Brightness minimum 10% otherwise it will be off but it looks like 1 - 9% // with this Alexa APP shows at least correct 10%, but first failure :(
}
*/
if ( ( d->getPercent() < 3 ) && ( d->getPercent() > 0 ) ) {
d->setPercent(3); // set Brightness minimum 3%
}
Serial.print("H "); Serial.print(HSV.h); Serial.print("\tS "); Serial.print(HSV.s); Serial.print("\tV "); Serial.println(d->getValue());
switch (d->getId()) {
case 0: // rechts
rndflicker0 = ( rndflicker / 255 * d->getValue() );
targetPalette0 = CRGBPalette16(
CRGB(
round( d->getR() / 100 * d->getPercent() ),
round( d->getG() / 100 * d->getPercent() ),
round( d->getB() / 100 * d->getPercent() )
)
);
break;
case 1: // mitte
rndflicker1 = ( rndflicker / 255 * d->getValue() );
targetPalette1 = CRGBPalette16(
CRGB(
round( d->getR() / 100 * d->getPercent() ),
round( d->getG() / 100 * d->getPercent() ),
round( d->getB() / 100 * d->getPercent() )
)
/*
CRGB(
round( d->getR() / 255 * d->getValue() ),
round( d->getG() / 255 * d->getValue() ),
round( d->getB() / 255 * d->getValue() )
)
*/
/*
CHSV(
uint16_t(HSV.h - rndflicker1 + random8(rndflicker * 2)), // H
HSV.s, // S
d->getValue() // V
)
*/
);
break;
case 2: // links
rndflicker2 = ( rndflicker / 255 * d->getValue() );
targetPalette2 = CRGBPalette16(
CRGB(
round( d->getR() / 100 * d->getPercent() ),
round( d->getG() / 100 * d->getPercent() ),
round( d->getB() / 100 * d->getPercent() )
)
);
break;
}
// uint32_t rgb = d->getRGB();
// Serial.print("RGB= "); Serial.println(rgb);
// uint32_t csv = d->getCSV();
// Serial.print("CSV= "); Serial.println(csv);
/*//alternative
uint32_t rgb = d->getRGB();
Serial.print(", R "); Serial.print((rgb >> 16) & 0xFF);
Serial.print(", G "); Serial.print((rgb >> 8) & 0xFF);
Serial.print(", B "); Serial.println(rgb & 0xFF); */
// } else { //device "epsilon"
// Serial.print("E changed to ");
// Serial.print(d->getValue());
// Serial.print(", colormode ");
// switch(d->getColorMode()) {
// case EspalexaColorMode::hs:
// Serial.print("hs, "); Serial.print("hue "); Serial.print(d->getHue()); Serial.print(", sat "); Serial.println(d->getSat()); break;
// case EspalexaColorMode::xy:
// Serial.print("xy, "); Serial.print("x "); Serial.print(d->getX()); Serial.print(", y "); Serial.println(d->getY()); break;
// case EspalexaColorMode::ct:
// Serial.print("ct, "); Serial.print("ct "); Serial.println(d->getCt()); break;
// case EspalexaColorMode::none:
// Serial.println("none"); break;
// }
// }
}
void inoise8_mover() {
// read the input pin:
int readingR = digitalRead(switchR);
int readingL = digitalRead(switchL);
int readingM = digitalRead(switchM);
for (int i = 0; i < 20; i++) {
uint8_t locn = inoise8(xscale, dist + yscale + i * 200);
// Get a new pixel location from moving noise. locn rarely goes below 48 or above 192, so let's remove those ends.
locn = constrain(locn, 48, 192);
// Ensure that the occasional value outside those limits is not used.
uint8_t pixlen = map(locn, 48, 192, 0, NUM_LEDS - 1);
// Map doesn't constrain, so we now map locn to the the length of the strand.
if ( ( pixlen >= 0 ) && ( pixlen <= 16 ) ) { // Segment 0 rechts
if ( readingR == HIGH )
currentPalette = DoorOpenPalette0;
else
currentPalette = currentPalette0;
// brightnesperled = rechts->getValue();
} else if ( ( pixlen >= 17 ) && ( pixlen <= 33 ) ) { // Segment 1 mitte
if ( readingM == HIGH )
currentPalette = DoorOpenPalette1;
else
currentPalette = currentPalette1;
// brightnesperled = mitte->getValue();
} else if ( ( pixlen >= 34 ) && ( pixlen <= 50 ) ) { // Segment 2 links
if ( readingL == HIGH )
currentPalette = DoorOpenPalette2;
else
currentPalette = currentPalette2;
// brightnesperled = links->getValue();
}
leds[pixlen] = ColorFromPalette(currentPalette, pixlen, 255, LINEARBLEND);
// leds[pixlen].fadeLightBy( 255 - brightnesperled );
// leds[pixlen] = ColorFromPalette(currentPalette, pixlen, brightnesperled, LINEARBLEND);
// Use that value for both the location as well as the palette index colour for the pixel.
}
dist += beatsin8(10, 1, 4);
// Moving along the distance (that random number we started out with). Vary it a bit with a sine wave.
} // inoise8_mover()
void RGB2HSV(struct RGB_set RGB, struct HSV_set *HSV) {
/*******************************************************************************
Function RGB2HSV https://www.ruinelli.ch/rgb-to-hsv
Description: Converts an RGB color value into its equivalen in the HSV color space.
Copyright 2010 by George Ruinelli
The code I used as a source is from http://www.cs.rit.edu/~ncs/color/t_convert.html
Parameters:
1. struct with RGB color (source)
2. pointer to struct HSV color (target)
Notes:
- r, g, b values are from 0..255
- h = [0,360], s = [0,255], v = [0,255]
- NB: if s == 0, then h = 0 (undefined)
******************************************************************************/
unsigned char min, max, delta;
if (RGB.r < RGB.g)
min = RGB.r;
else
min = RGB.g;
if (RGB.b < min)
min = RGB.b;
if (RGB.r > RGB.g)
max = RGB.r;
else
max = RGB.g;
if (RGB.b > max)
max = RGB.b;
HSV->v = max; // v, 0..255
delta = max - min; // 0..255, < v
if ( max != 0 )
HSV->s = (int)(delta) * 255 / max; // s, 0..255
else {
// r = g = b = 0 // s = 0, v is undefined
HSV->s = 0;
HSV->h = 0;
return;
}
if ( RGB.r == max )
HSV->h = (RGB.g - RGB.b) * 60 / delta; // between yellow & magenta
else if ( RGB.g == max )
HSV->h = 120 + (RGB.b - RGB.r) * 60 / delta; // between cyan & yellow
else
HSV->h = 240 + (RGB.r - RGB.g) * 60 / delta; // between magenta & cyan
if ( HSV->h < 0 )
HSV->h += 360;
HSV->h = 182 * HSV->h; // 360 => 65535
if ( HSV->h >= 65535 )
HSV->h = 65534;
} |
Compiler-Log:
|
...
Serial Monitor: (at 07:21:20 i switched to white)
|
Thanks for posting your code! :) |
Thanks for your help :) 0x40203eb7: ESP8266WiFiSTAClass::status() at C:\Users\Christian\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.1\libraries\ESP8266WiFi\src\ESP8266WiFiSTA.cpp line 613
0x4020bfbf: esp8266::MDNSImplementation::MDNSResponder::_announce(bool, bool) at C:\Users\Christian\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.1\libraries\ESP8266mDNS\src\LEAmDNS_Control.cpp line 1330
0x40100810: uart_isr(void*) at C:\Users\Christian\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.1\cores\esp8266\uart.cpp line 371
0x4020bffe: esp8266::MDNSImplementation::MDNSResponder::_announce(bool, bool) at C:\Users\Christian\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.1\libraries\ESP8266mDNS\src\LEAmDNS_Control.cpp line 1359
0x40206b34: ESP8266WebServer::send(int, char const*, String const&) at C:\Users\Christian\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.1\libraries\ESP8266WebServer\src\ESP8266WebServer.cpp line 399
0x40203687: std::_Function_handler )::__lambda2>::_M_invoke(const std::_Any_data &, _esp_event *) at C:\Users\Christian\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.1\libraries\ESP8266WiFi\src\ESP8266WiFiGeneric.cpp line 118
0x4020c140: esp8266::MDNSImplementation::MDNSResponder::_cancelProbingForHost() at C:\Users\Christian\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.1\libraries\ESP8266mDNS\src\LEAmDNS_Control.cpp line 1284
0x40203857: ESP8266WiFiGenericClass::hostByName(char const*, IPAddress&, unsigned int) at C:\Users\Christian\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.1\libraries\ESP8266WiFi\src\ESP8266WiFiGeneric.cpp line 556
0x40203898: ESP8266WiFiGenericClass::hostByName(char const*, IPAddress&, unsigned int) at C:\Users\Christian\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.1\libraries\ESP8266WiFi\src\ESP8266WiFiGeneric.cpp line 582
0x402077be: ESP8266WebServer::_parseForm(WiFiClient&, String const&, unsigned int) at C:\Users\Christian\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.1\libraries\ESP8266WebServer\src\Parsing.cpp line 410
0x402078e6: ESP8266WebServer::_parseForm(WiFiClient&, String const&, unsigned int) at C:\Users\Christian\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.1\libraries\ESP8266WebServer\src\Parsing.cpp line 441
0x401003ec: cont_check(cont_t*) at C:\Users\Christian\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.1\cores\esp8266\cont_util.cpp line 46
0x40207ad8: ESP8266WebServer::_parseForm(WiFiClient&, String const&, unsigned int) at C:\Users\Christian\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.1\libraries\ESP8266WebServer\src\Parsing.cpp line 492
0x4020e418: esp8266::MDNSImplementation::MDNSResponder::stcMDNS_RRAnswerSRV::~stcMDNS_RRAnswerSRV() at C:\Users\Christian\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.1\libraries\ESP8266mDNS\src\LEAmDNS_Structs.cpp line 1089
0x4020afa4: ArduinoOTAClass::_runUpdate() at C:\Users\Christian\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.1\cores\esp8266/Updater.h line 160
0x40204486: ClientContext::_s_connected(void*, tcp_pcb*, long) at C:\Users\Christian\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.1\libraries\ESP8266WiFi\src/include/ClientContext.h line 603
0x40204304: BufferDataSource::get_buffer(unsigned int) at C:\Users\Christian\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.1\libraries\ESP8266WiFi\src/include/DataSource.h line 35
0x40203ca9: ESP8266WiFiSTAClass::config(IPAddress, IPAddress, IPAddress, IPAddress, IPAddress) at C:\Users\Christian\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.1\libraries\ESP8266WiFi\src\ESP8266WiFiSTA.cpp line 273
0x40204577: BufferedStreamDataSource ::get_buffer(unsigned int) at C:\Users\Christian\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.1\libraries\ESP8266WiFi\src/include/DataSource.h line 68
0x4020cc98: esp8266::MDNSImplementation::MDNSResponder::_processTXTAnswer(esp8266::MDNSImplementation::MDNSResponder::stcMDNS_RRAnswerTXT const*) at c:\users\christian\documents\arduinodata\packages\esp8266\tools\xtensa-lx106-elf-gcc\2.5.0-3-20ed2b9\xtensa-lx106-elf\include\c++\4.8.2\bits/stl_map.h line 98 |
Thank you :) I've had this issue with mDNS before. Often it helps to switch the LwiP versions to either 1.4 or 2 High Bandwith, one of them may solve the issue and it seems to be random which one works... |
I had v2 lower memory. |
V1.4 compile from source: |
V2 lower memory (no feature): crash |
With Espalexa 2.4.7 works; no crash. Or it was another dependence... |
Hi, after few problems with the latest Espalexa *) it works.
But if I choose white, my Wemos D1 mini chrashes with this:
Either with this
espalexa.addDevice("Oberschrank rechts", ColorDev, EspalexaDeviceType::color);
and that
espalexa.addDevice("Oberschrank rechts", ColorDev, EspalexaDeviceType::extendedcolor);
*) #6 (comment)
#6 (comment)
The text was updated successfully, but these errors were encountered: