Udzielę. Byłem na urlopie.
Shelly 1PM i licznik energii
-
- Posts: 708
- Joined: Mon Nov 27, 2017 7:36 am
__________________________________________________________
Specjalizowane oprogramowanie do sterowników Sonoff, Gosund, Blitzwolf, Shelly i innych:
https://djack.com.pl/modules.php?name=Downloads&d_op=viewdownload&cid=54
Specjalizowane oprogramowanie do sterowników Sonoff, Gosund, Blitzwolf, Shelly i innych:
https://djack.com.pl/modules.php?name=Downloads&d_op=viewdownload&cid=54
-
- Posts: 129
- Joined: Sat Dec 18, 2021 4:15 pm
-
- Posts: 708
- Joined: Mon Nov 27, 2017 7:36 am
procedura supla_get_temperature
Code: Select all
#define TO_CELSIUS(x) ((x) - 273.15)
#define TO_KELVIN(x) ((x) + 273.15)
// Parameters for equation
#define ANALOG_V33 3.3 // ESP8266 Analog voltage
#define ANALOG_T0 TO_KELVIN(25.0) // 25 degrees Celcius in Kelvin (= 298.15)
#define ANALOG_NTC_BRIDGE_RESISTANCE 32000 // NTC Voltage bridge resistor
#define ANALOG_NTC_RESISTANCE 10000 // NTC Resistance
#define ANALOG_NTC_B_COEFFICIENT 3350 // NTC Beta Coefficient
//uint16_t adc_last_value = 0;
float adc_temp = 0;
//========================================================================================
void ICACHE_FLASH_ATTR
supla_esp_board_set_channels(TDS_SuplaDeviceChannel_C *channels, unsigned char *channel_count) {
*channel_count = 3;
//---------------------------------------------------------------
// Przekaznik
channels[0].Number = 0;
channels[0].Type = SUPLA_CHANNELTYPE_RELAY;
channels[0].FuncList = SUPLA_BIT_RELAYFUNC_POWERSWITCH | SUPLA_BIT_RELAYFUNC_LIGHTSWITCH;
channels[0].Default = SUPLA_CHANNELFNC_POWERSWITCH;
channels[0].value[0] = supla_esp_gpio_relay_on(B_RELAY1_PORT);
channels[0].Flags |= SUPLA_CHANNEL_FLAG_CHANNELSTATE;
//---------------------------------------------------------------
// Miernik mocy i energii
channels[1].Number = 1;
channels[1].Type = SUPLA_CHANNELTYPE_ELECTRICITY_METER;
supla_esp_em_get_value(1, channels[1].value);
//---------------------------------------------------------------
// Miernik temperatury wewnętrznej
channels[2].Number = 2;
channels[2].Type = SUPLA_CHANNELTYPE_THERMOMETERDS18B20;
channels[2].FuncList = 0;
channels[2].Default = 0;
supla_get_temperature(channels[2].value);
}
//========================================================================================
double ICACHE_FLASH_ATTR
TaylorLog(double x)
{
double z = (x + 1) / (x - 1); // We start from power -1, to make sure we get the right power in each iteration;
double step = ((x - 1) * (x - 1)) / ((x + 1) * (x + 1)); // Store step to not have to calculate it each time
double totalValue = 0;
double powe = 1;
double y;
for (uint32_t count = 0; count < 10; count++) { // Experimental number of 10 iterations
z *= step;
y = (1 / powe) * z;
totalValue = totalValue + y;
powe = powe + 2;
}
totalValue *= 2;
return totalValue;
}
//========================================================================================
uint16_t ICACHE_FLASH_ATTR
AdcRead(uint8_t factor)
{
uint8_t samples = 1 << factor;
uint16_t analog = 0;
for (uint32_t i = 0; i < samples; i++) {
analog += system_adc_read();
os_delay_us(1000);
}
analog >>= factor;
return analog;
}
//========================================================================================
int ICACHE_FLASH_ATTR
AdcEverySecond(void)
{
int temper;
int adc = AdcRead(2);
double Rt = (adc * ANALOG_NTC_BRIDGE_RESISTANCE) / (1024.0 * ANALOG_V33 - (double)adc);
double BC = (double)ANALOG_NTC_B_COEFFICIENT;
double T = BC / (BC / ANALOG_T0 + TaylorLog(Rt / (double)ANALOG_NTC_RESISTANCE));
adc_temp = TO_CELSIUS(T);
temper = (int)adc_temp;
return temper;
}
//========================================================================================
//========================================================================================
void ICACHE_FLASH_ATTR
supla_get_temperature(char value[SUPLA_CHANNELVALUE_SIZE]) {
int temper;
double dtemper;
temper = AdcEverySecond();
dtemper = (double)temper;
memcpy(value, &dtemper, sizeof(double));
}
//========================================================================================
//========================================================================================
__________________________________________________________
Specjalizowane oprogramowanie do sterowników Sonoff, Gosund, Blitzwolf, Shelly i innych:
https://djack.com.pl/modules.php?name=Downloads&d_op=viewdownload&cid=54
Specjalizowane oprogramowanie do sterowników Sonoff, Gosund, Blitzwolf, Shelly i innych:
https://djack.com.pl/modules.php?name=Downloads&d_op=viewdownload&cid=54
-
- Posts: 5442
- Joined: Fri Nov 16, 2018 7:25 am
Dzięki, po urlopie usiądę do tego.
https://gui-generic-builder.supla.io/
-
- Posts: 1222
- Joined: Wed Jan 15, 2020 8:17 pm
Super informacja, czekam na update, dzięki Panowie 
-
- Posts: 1222
- Joined: Wed Jan 15, 2020 8:17 pm
Myślałem że, nadal urlop
Dodam takie info, mam podłączone dwa moduły i pokazują takie temp są koło sobie w rozdzielni nie obciążone, dodatkowo w cloud ustawiłem +10C
Podczas obciążenia jakieś 2500W przez godz. widziałem max 35C
You do not have the required permissions to view the files attached to this post.
-
- Posts: 5442
- Joined: Fri Nov 16, 2018 7:25 am
Zastosowałem algorytm kolegi @djack2017. Proszę o informację zwrotną czy jest ok.kurus wrote: Tue Aug 09, 2022 10:24 am
Myślałem że, nadal urlop
Dodam takie info, mam podłączone dwa moduły i pokazują takie temp są koło sobie w rozdzielni nie obciążone, dodatkowo w cloud ustawiłem +10C
Podczas obciążenia jakieś 2500W przez godz. widziałem max 35C
https://gui-generic-builder.supla.io/
-
- Posts: 1222
- Joined: Wed Jan 15, 2020 8:17 pm
OK jutro przetestuje, normalnie przez buildera wygenerować nowy soft i aktualizacja ota?