Termometr analogowy balia czy to da się w suplę

darius
Posts: 71
Joined: Mon Oct 24, 2016 7:35 pm

Post

Cześć
zakupiłem balię ogrodową z wbudowanym termometrem jak na tej stronie: https://baliatechnic.pl/produkt/termome ... gQAvD_BwE
termometr jest analogowy dwa kable zasilany baterią. Chciałbym mieć info o temperaturze w balii w supli.

Próbowałem pójść w tym kierunku: viewtopic.php?t=10622
Testowo położyłem na stole wemos-a i czujnik analogowy co mi został od pieca gazowego. Niestety nie jestem w stanie dobrać rezystorów tak by to zaczęło jakoś sensownie pokazywać temperaturę. Dodatkowo wyczytałem że wejście analogowe wemos nie jest jakoś szczególnie dokładne.

Najchętniej dałbym tam zwykłego ds cyfrowego ale kwestia jest taka że mam gwarancję na nieckę balii i nie mogę jej nawiercać ani wymieniać elementów inaczej gwarancja przepadnie.
Czy możecie poradzić czy jest jakiś sensowny sposób jak wpiąć się w istniejący termometr. A może jakieś inne np pływające rozwiązanie?
User avatar
klew
Posts: 13908
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

Tam jest prawdopodobnie jakiś termometr ntc lub ptc.
Pewnie da się go odczytać "jakimś wemosem", ale też pewnie musiałbyś odłączyć całkowicie ten wyświetlacz z baterią
Najlepsze suple dla Twojego domu :mrgreen:
darius
Posts: 71
Joined: Mon Oct 24, 2016 7:35 pm

Post

Dzięki za wskazówki jutro rozkręcę go i zmierzę rezystancję by potwierdzić że NTC 10k.

Co do poniższego kodu to macie jakiś poradnik dla laika jak to wgrać do wemosa?
Do tej pory korzystałem z gotowego softu lub gui generic.
Chętnie podejmę rękawicę i popróbuję zakłądam że to tylko fragment kodu jaki potrzebuję.
User avatar
Bania
Posts: 107
Joined: Wed Jul 24, 2024 5:03 pm
Location: Bielsko-Biała
Has thanked: 5 times
Been thanked: 5 times

Post

Arduino IDE + SuplaDevice

Na szybko stworze Ci przykład

3.3V === NTC 10k === ADC(MCU) === REZYSTOR 10k === GND

Code: Select all

#include <SuplaDevice.h>
#include <supla/control/button.h>
#include <supla/device/supla_ca_cert.h>
#include <supla/network/esp_web_server.h>
#include <supla/network/esp_wifi.h>
#include <supla/network/html/device_info.h>
#include <supla/network/html/protocol_parameters.h>
#include <supla/network/html/wifi_parameters.h>
#include <supla/storage/eeprom.h>
#include <supla/storage/littlefs_config.h>

#include <supla/sensor/virtual_thermometer.h>

#define PINOUT_BUTTON 0
#define PINOUT_NTC   A0

Supla::Eeprom eeprom;
Supla::ESPWifi wifi;
Supla::EspWebServer suplaServer;
Supla::LittleFsConfig configSupla;

auto suplaButtonCfg = new Supla::Control::Button(PINOUT_BUTTON, true, true);

auto suplaTemperatura = new Supla::Sensor::VirtualThermometer;

void setup() 
{
  suplaButtonCfg->configureAsConfigButton(&SuplaDevice);
	
  new Supla::Html::DeviceInfo(&SuplaDevice);
  new Supla::Html::WifiParameters;
  new Supla::Html::ProtocolParameters;

  SuplaDevice.setSuplaCACert(suplaCACert);
  SuplaDevice.setSupla3rdPartyCACert(supla3rdCACert);

  SuplaDevice.begin();
}

void loop()
{
  SuplaDevice.iterate();

  static uint32_t lastTime = 0;
  if(millis() - lastTime > 2000)
  {
    lastTime = millis();
    
    suplaTemperatura->setValue(NTC_Convert(analogRead(PINOUT_NTC)));
  }
}

float NTC_Convert(uint16_t value)
{
	const float resistor = 10000;
	const float c1 = 1.009249522e-03, c2 = 2.378405444e-04, c3 = 2.019202697e-07;

	float resistanceLog, resistance, temperature;

	resistance = resistor * (1023.0 / (float)value - 1.0);
	resistanceLog = log(resistance);
	temperature = (1.0 / (c1 + c2 * resistanceLog + c3 * resistanceLog * resistanceLog * resistanceLog));
	temperature -= 273.15;

	return temperature;
}
https://github.com/anarhbania/Supla
darius
Posts: 71
Joined: Mon Oct 24, 2016 7:35 pm

Post

Bardzo dziękuję za działający przykład :)
Programistą nie jestem więc mi chwilę zeszło by skompletować co potrzeba i wgrać to do wemosa.
Ostatecznie udało się i zrobiłem nawet drobną modyfikację z zaokrągleniem temperatury do jednego miejsca po przecinku.
Całkiem fajna zabawa dla laika.

Code: Select all

void loop()
{
  SuplaDevice.iterate();

  static uint32_t lastTime = 0;
  if(millis() - lastTime > 2000)
  {
    lastTime = millis();
    
    float temp = NTC_Convert(analogRead(PINOUT_NTC));
    suplaTemperatura->setValue(round(temp * 10) / 10.0); // Zaokrąglanie do 1 miejsca po przecinku
  }
}

Podłączyłem do wemosa czujnik od pieca NTC i pokazuje temperaturę praktycznie identyczną jak cyfrowy DS.
temp.png
You do not have the required permissions to view the files attached to this post.
darius
Posts: 71
Joined: Mon Oct 24, 2016 7:35 pm

Post

klew wrote: Sun Feb 09, 2025 7:19 pm Tam jest prawdopodobnie jakiś termometr ntc lub ptc.
Pewnie da się go odczytać "jakimś wemosem", ale też pewnie musiałbyś odłączyć całkowicie ten wyświetlacz z baterią
Jak słusznie przewidział klew nie udało się pogodzić starego wyświetlacza z wemosem.
Więc poszedłem w improwizację i dołożyłem do projektu SSD1306.
Na stole spoko
IMG_20250212_161327.jpg
IMG_20250212_161306.jpg
ale w praktyce okazuje się że płytka oryginalna jest jednak parę milimetrów mniejsza.

Brakuje naprawdę niewiele i tu pytanie do Was gdybym (obciął/spiłował) krawędzie tego SSD1306 to ma szanse działać?
Poniżej poglądowy rysunek kolorem żółtym zaznaczyłem co trzeba zrobić by wyświetlacz zmieścił się w oryginalnym hermetycznym pudełku od balii. W zaznaczonym obszarze nie widzę żadnych ścieżek ale żaden ze mnie elektronik.
IMG_20250212_161326.jpg
You do not have the required permissions to view the files attached to this post.
User avatar
Zibi_007
Posts: 3985
Joined: Tue Oct 31, 2023 10:06 pm
Has thanked: 10 times
Been thanked: 31 times

Post

Możesz podpiłować, tylko z wyczuciem.
Do tych kółek (otworów montażowych) tam na płytce nic nie ma.
Uważaj tylko, bo łatwo ukruszyć ekran.
Lubi też pęknąć, jak się go mocniej ściśnie.
Image Wiesz, że Supla obsługuje Zigbee? Wstąp do Klubu Promila: https://forum.supla.org/viewtopic.php?t=18018
Image Szukasz nowego GG? Jest tutaj: https://forum.supla.org/viewtopic.php?t=18036

Return to “Pomoc”