Shelly 1PM i licznik energii

djack2017
Posty: 686
Rejestracja: pn lis 27, 2017 7:36 am
Kontakt:

krycha88 pisze: pt lip 15, 2022 2:23 pm
kurus pisze: pt lip 15, 2022 12:32 pm
krycha88 pisze: wt lip 12, 2022 4:44 pm
Chyba kolega djack2017 nie udzieli informacji :(
Dajmy szansę ;) jak znajdę chwilę to się temu przyjrzę.
Udzielę. Byłem na urlopie.
__________________________________________________________
Specjalizowane oprogramowanie do sterowników Sonoff, Gosund, Blitzwolf, Shelly i innych:
https://djack.com.pl/modules.php?name=Downloads&d_op=viewdownload&cid=54
Antonio
Posty: 129
Rejestracja: sob gru 18, 2021 4:15 pm

djack2017 pisze: wt lip 19, 2022 3:52 pm
krycha88 pisze: pt lip 15, 2022 2:23 pm
kurus pisze: pt lip 15, 2022 12:32 pm
Chyba kolega djack2017 nie udzieli informacji :(
Dajmy szansę ;) jak znajdę chwilę to się temu przyjrzę.
Udzielę. Byłem na urlopie.
Bogacz :D :D
djack2017
Posty: 686
Rejestracja: pn lis 27, 2017 7:36 am
Kontakt:

procedura supla_get_temperature

Kod: Zaznacz cały

#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
krycha88
Posty: 5186
Rejestracja: pt lis 16, 2018 7:25 am
Kontakt:

Dzięki, po urlopie usiądę do tego.
https://gui-generic-builder.supla.io/
kurus
Posty: 1038
Rejestracja: śr sty 15, 2020 8:17 pm

Super informacja, czekam na update, dzięki Panowie 👍
kurus
Posty: 1038
Rejestracja: śr sty 15, 2020 8:17 pm

krycha88 pisze: śr lip 20, 2022 10:28 am Dzięki, po urlopie usiądę do tego.
Jak tam @krycha88 działasz coś w temacie?
krycha88
Posty: 5186
Rejestracja: pt lis 16, 2018 7:25 am
Kontakt:

kurus pisze: pn sie 08, 2022 8:38 pm
krycha88 pisze: śr lip 20, 2022 10:28 am Dzięki, po urlopie usiądę do tego.
Jak tam @krycha88 działasz coś w temacie?
Zapomniałem o problemie :D
https://gui-generic-builder.supla.io/
kurus
Posty: 1038
Rejestracja: śr sty 15, 2020 8:17 pm

krycha88 pisze: wt sie 09, 2022 6:00 am
kurus pisze: pn sie 08, 2022 8:38 pm
krycha88 pisze: śr lip 20, 2022 10:28 am Dzięki, po urlopie usiądę do tego.
Jak tam @krycha88 działasz coś w temacie?
Zapomniałem o problemie :D

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
Załączniki
CFD8D42F-DC68-49E4-B965-4F54BA60EF83.jpeg
CFD8D42F-DC68-49E4-B965-4F54BA60EF83.jpeg (327.51 KiB) Przejrzano 304 razy
562D724B-D9C0-40FD-A0D5-E03D7585FAB9.jpeg
562D724B-D9C0-40FD-A0D5-E03D7585FAB9.jpeg (138.25 KiB) Przejrzano 308 razy
krycha88
Posty: 5186
Rejestracja: pt lis 16, 2018 7:25 am
Kontakt:

kurus pisze: wt sie 09, 2022 10:24 am
krycha88 pisze: wt sie 09, 2022 6:00 am
kurus pisze: pn sie 08, 2022 8:38 pm

Jak tam @krycha88 działasz coś w temacie?
Zapomniałem o problemie :D

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
Zastosowałem algorytm kolegi @djack2017. Proszę o informację zwrotną czy jest ok.
https://gui-generic-builder.supla.io/
kurus
Posty: 1038
Rejestracja: śr sty 15, 2020 8:17 pm

OK jutro przetestuje, normalnie przez buildera wygenerować nowy soft i aktualizacja ota?
ODPOWIEDZ

Wróć do „Pomoc”