mirror of https://github.com/arendst/Tasmota.git
Merge branch 'development' of https://github.com/arendst/Sonoff-Tasmota into development
This commit is contained in:
commit
c931f9ae47
|
@ -1,4 +1,7 @@
|
|||
/* 6.4.1.18 20190221
|
||||
/* 6.4.1.19 20190222
|
||||
* Add command SetOption37 for RGBCW color mapping (#5326)
|
||||
*
|
||||
* 6.4.1.18 20190221
|
||||
* Fix some exceptions and watchdogs due to lack of stack space - part 1 (#5215)
|
||||
* Fix some exceptions and watchdogs due to lack of stack space - part 2
|
||||
* Add command SetOption62 0/1 to disable retain on Button or Swith hold messages (#5299)
|
||||
|
|
|
@ -28,7 +28,7 @@
|
|||
* Use online command StateText to translate ON, OFF, HOLD and TOGGLE.
|
||||
* Use online command Prefix to translate cmnd, stat and tele.
|
||||
*
|
||||
* Updated until v6.4.1.17 (up to commit 590c883b)
|
||||
* Updated until v6.4.1.18
|
||||
\*********************************************************************/
|
||||
|
||||
//#define LANGUAGE_MODULE_NAME // Enable to display "Module Generic" (ie Spanish), Disable to display "Generic Module" (ie English)
|
||||
|
@ -148,7 +148,7 @@
|
|||
#define D_STOP "Стоп"
|
||||
#define D_SUBNET_MASK "Маска на подмрежата"
|
||||
#define D_SUBSCRIBE_TO "Записване за"
|
||||
#define D_UNSUBSCRIBE_FROM "Unsubscribe from"
|
||||
#define D_UNSUBSCRIBE_FROM "Отписване от"
|
||||
#define D_SUCCESSFUL "Успешно"
|
||||
#define D_SUNRISE "Изгрев"
|
||||
#define D_SUNSET "Залез"
|
||||
|
|
|
@ -422,7 +422,6 @@
|
|||
// #define USE_ALECTO_V2 // Add support for decoding Alecto V2 sensors like ACH2010, WS3000 and DKW2012 weather stations using 868MHz RF sensor receiver (+1k7 code)
|
||||
|
||||
#define USE_SM16716 // Add support for SM16716 RGB LED controller (+0k7 code)
|
||||
#define USE_SM16716_RGB_ORDER SM16716_RGB // SM16716 RGB order (SM16716_RGB, SM16716_RBG, SM16716_GRB, SM16716_GBR, SM16716_BRG, SM16716_BGR)
|
||||
|
||||
/*********************************************************************************************\
|
||||
* Debug features are only supported in development branch
|
||||
|
|
|
@ -587,6 +587,7 @@ void SettingsDefaultSet2(void)
|
|||
// Settings.flag.stop_flash_rotate = 0;
|
||||
Settings.save_data = SAVE_DATA;
|
||||
Settings.param[P_BOOT_LOOP_OFFSET] = BOOT_LOOP_OFFSET;
|
||||
Settings.param[P_RGB_REMAP] = RGB_REMAP_RGBW;
|
||||
Settings.sleep = APP_SLEEP;
|
||||
if (Settings.sleep < 50) {
|
||||
Settings.sleep = 50; // Default to 50 for sleep, for now
|
||||
|
@ -1055,6 +1056,9 @@ void SettingsDelta(void)
|
|||
if (Settings.version < 0x06040110) {
|
||||
ModuleDefault(WEMOS);
|
||||
}
|
||||
if (Settings.version < 0x06040113) {
|
||||
Settings.param[P_RGB_REMAP] = RGB_REMAP_RGBW;
|
||||
}
|
||||
|
||||
Settings.version = VERSION;
|
||||
SettingsSave(1);
|
||||
|
|
|
@ -171,12 +171,12 @@ typedef unsigned long power_t; // Power (Relay) type
|
|||
|
||||
#define LT_SM16716 16 // Lights that use SM16716 will have this bit set in light_type
|
||||
|
||||
#define SM16716_RGB 0
|
||||
#define SM16716_RBG 1
|
||||
#define SM16716_GRB 2
|
||||
#define SM16716_GBR 3
|
||||
#define SM16716_BRG 4
|
||||
#define SM16716_BGR 5
|
||||
#define RGB_REMAP_RGBW 0
|
||||
#define RGB_REMAP_RBGW 6
|
||||
#define RGB_REMAP_GRBW 24
|
||||
#define RGB_REMAP_GBRW 30
|
||||
#define RGB_REMAP_BRGW 48
|
||||
#define RGB_REMAP_BGRW 54
|
||||
|
||||
#define MQTT_PUBSUBCLIENT 1 // Mqtt PubSubClient library
|
||||
#define MQTT_TASMOTAMQTT 2 // Mqtt TasmotaMqtt library based on esp-mqtt-arduino - soon obsolete
|
||||
|
@ -237,7 +237,7 @@ enum ButtonStates { PRESSED, NOT_PRESSED };
|
|||
|
||||
enum Shortcuts { SC_CLEAR, SC_DEFAULT, SC_USER };
|
||||
|
||||
enum SettingsParmaIndex {P_HOLD_TIME, P_MAX_POWER_RETRY, P_TUYA_DIMMER_ID, P_MDNS_DELAYED_START, P_BOOT_LOOP_OFFSET, P_MAX_PARAM8}; // Max is PARAM8_SIZE (18) - SetOption32 until SetOption49
|
||||
enum SettingsParmaIndex {P_HOLD_TIME, P_MAX_POWER_RETRY, P_TUYA_DIMMER_ID, P_MDNS_DELAYED_START, P_BOOT_LOOP_OFFSET, P_RGB_REMAP, P_MAX_PARAM8}; // Max is PARAM8_SIZE (18) - SetOption32 until SetOption49
|
||||
|
||||
enum DomoticzSensors {DZ_TEMP, DZ_TEMP_HUM, DZ_TEMP_HUM_BARO, DZ_POWER_ENERGY, DZ_ILLUMINANCE, DZ_COUNT, DZ_VOLTAGE, DZ_CURRENT, DZ_AIRQUALITY, DZ_MAX_SENSORS};
|
||||
|
||||
|
|
|
@ -789,9 +789,19 @@ void MqttDataHandler(char* topic, uint8_t* data, unsigned int data_len)
|
|||
param_low = 1;
|
||||
param_high = 250;
|
||||
break;
|
||||
|
||||
case P_RGB_REMAP:
|
||||
param_low = 0;
|
||||
param_high = 119;
|
||||
break;
|
||||
}
|
||||
if ((payload >= param_low) && (payload <= param_high)) {
|
||||
Settings.param[pindex] = payload;
|
||||
switch (pindex) {
|
||||
case P_RGB_REMAP:
|
||||
LightUpdateColorMapping();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
#ifndef _SONOFF_VERSION_H_
|
||||
#define _SONOFF_VERSION_H_
|
||||
|
||||
#define VERSION 0x06040112
|
||||
#define VERSION 0x06040113
|
||||
|
||||
#define D_PROGRAMNAME "Sonoff-Tasmota"
|
||||
#define D_AUTHOR "Theo Arends"
|
||||
|
|
|
@ -86,6 +86,8 @@ struct LCwColor {
|
|||
#define MAX_FIXED_COLD_WARM 4
|
||||
const LCwColor kFixedColdWarm[MAX_FIXED_COLD_WARM] PROGMEM = { 0,0, 255,0, 0,255, 128,128 };
|
||||
|
||||
uint8_t color_remap[5];
|
||||
|
||||
uint8_t ledTable[] = {
|
||||
0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||
|
@ -397,12 +399,6 @@ void SM16716_SendByte(uint8_t v)
|
|||
}
|
||||
}
|
||||
|
||||
void SM16716_SendRGB(uint8_t duty_r, uint8_t duty_g, uint8_t duty_b) {
|
||||
SM16716_SendByte(duty_r);
|
||||
SM16716_SendByte(duty_g);
|
||||
SM16716_SendByte(duty_b);
|
||||
}
|
||||
|
||||
void SM16716_Update(uint8_t duty_r, uint8_t duty_g, uint8_t duty_b)
|
||||
{
|
||||
if (sm16716_pin_sel < 99) {
|
||||
|
@ -437,30 +433,18 @@ void SM16716_Update(uint8_t duty_r, uint8_t duty_g, uint8_t duty_b)
|
|||
|
||||
// send start bit
|
||||
SM16716_SendBit(1);
|
||||
// send 24-bit rgb data
|
||||
#if USE_SM16716_RGB_ORDER == SM16716_RGB
|
||||
SM16716_SendRGB(duty_r, duty_g, duty_b);
|
||||
#elif USE_SM16716_RGB_ORDER == SM16716_RBG
|
||||
SM16716_SendRGB(duty_r, duty_b, duty_g);
|
||||
#elif USE_SM16716_RGB_ORDER == SM16716_GRB
|
||||
SM16716_SendRGB(duty_g, duty_r, duty_b);
|
||||
#elif USE_SM16716_RGB_ORDER == SM16716_GBR
|
||||
SM16716_SendRGB(duty_g, duty_b, duty_r);
|
||||
#elif USE_SM16716_RGB_ORDER == SM16716_BRG
|
||||
SM16716_SendRGB(duty_b, duty_r, duty_g);
|
||||
#elif USE_SM16716_RGB_ORDER == SM16716_BGR
|
||||
SM16716_SendRGB(duty_b, duty_g, duty_r);
|
||||
#else
|
||||
// fall back to RGB
|
||||
SM16716_SendRGB(duty_r, duty_g, duty_b);
|
||||
#endif
|
||||
SM16716_SendByte(duty_r);
|
||||
SM16716_SendByte(duty_g);
|
||||
SM16716_SendByte(duty_b);
|
||||
|
||||
// send a 'do it' pulse
|
||||
// (if multiple chips are chained, each one processes the 1st '1rgb' 25-bit block and
|
||||
// passes on the rest, right until the one starting with 0)
|
||||
//SM16716_Init();
|
||||
SM16716_SendBit(0);
|
||||
SM16716_SendRGB(0, 0, 0);
|
||||
SM16716_SendByte(0);
|
||||
SM16716_SendByte(0);
|
||||
SM16716_SendByte(0);
|
||||
}
|
||||
|
||||
bool SM16716_ModuleSelected(void)
|
||||
|
@ -581,6 +565,37 @@ void LightInit(void)
|
|||
light_power = 0;
|
||||
light_update = 1;
|
||||
light_wakeup_active = 0;
|
||||
|
||||
LightUpdateColorMapping();
|
||||
}
|
||||
|
||||
void LightUpdateColorMapping(void)
|
||||
{
|
||||
uint8_t param = Settings.param[P_RGB_REMAP];
|
||||
if(param > 119){
|
||||
param = 119;
|
||||
}
|
||||
uint8_t tmp[] = {0,1,2,3,4};
|
||||
color_remap[0] = tmp[param / 24];
|
||||
for (uint8_t i = param / 24; i<4; ++i){
|
||||
tmp[i] = tmp[i+1];
|
||||
}
|
||||
param = param % 24;
|
||||
color_remap[1] = tmp[(param / 6)];
|
||||
for (uint8_t i = param / 6; i<3; ++i){
|
||||
tmp[i] = tmp[i+1];
|
||||
}
|
||||
param = param % 6;
|
||||
color_remap[2] = tmp[(param / 2)];
|
||||
for (uint8_t i = param / 2; i<2; ++i){
|
||||
tmp[i] = tmp[i+1];
|
||||
}
|
||||
param = param % 2;
|
||||
color_remap[3] = tmp[param];
|
||||
color_remap[4] = tmp[1-param];
|
||||
|
||||
//snprintf_P(log_data, sizeof(log_data), "%d colors: %d %d %d %d %d",Settings.param[P_RGB_REMAP], color_remap[0],color_remap[1],color_remap[2],color_remap[3],color_remap[4]);
|
||||
//AddLog(LOG_LEVEL_DEBUG);
|
||||
}
|
||||
|
||||
void LightSetColorTemp(uint16_t ct)
|
||||
|
@ -980,6 +995,16 @@ void LightAnimate(void)
|
|||
light_last_color[i] = light_new_color[i];
|
||||
cur_col[i] = light_last_color[i]*Settings.rgbwwTable[i]/255;
|
||||
cur_col[i] = (Settings.light_correction) ? ledTable[cur_col[i]] : cur_col[i];
|
||||
}
|
||||
|
||||
// color remapping
|
||||
uint8_t orig_col[5];
|
||||
memcpy(orig_col, cur_col, sizeof(orig_col));
|
||||
for (uint8_t i = 0; i < 5; i++) {
|
||||
cur_col[i] = orig_col[color_remap[i]];
|
||||
}
|
||||
|
||||
for (uint8_t i = 0; i < light_subtype; i++) {
|
||||
if (light_type < LT_PWM6) {
|
||||
if (pin[GPIO_PWM1 +i] < 99) {
|
||||
if (cur_col[i] > 0xFC) {
|
||||
|
|
Loading…
Reference in New Issue