Po klasie dla sds011 przyszedł czas na klasę dla grzałki HECA z projektu NAM.
Grzałka oparta jest o czujnik Sensiron SHT30 i wykorzystuje możliwość automatycznego włączania grzałki przy zadanych parametrach wilgotności (ustawione pow 63% w projekcie NAM).
Sam czujnik jest obsługiwany przez gotową klasę
https://github.com/SUPLA/supla-device/b ... or/SHT3x.h
ale źródło oryginalne dla obsługi czujnika jest martwe (404):
https://github.com/closedcube/ClosedCube_SHT31D_Arduino
a zainstalowana biblioteka o tej nazwie w ArduinoIDE mi się nie kompiluje poprawnie.
Chciałbym aby klasa dołączała dwa kanały:
1. dla temperatury i wilgotności (w komorze grzałki; de facto to co jest w ww Supla::Sensor::SHT3x)
2. dla pokazania stanu grzałki (włączona/wyłączona)
Początkowo stan chciałem pokazywać poprzez element VirtualBinary (ale tam domyślnie nie ma ikonek grzałek) i się zastanawiam czy nie nadpisać jakiejś innej klasy dla tej grzałki, tylko nie wiem której.
Generalnie istotne (z punktu widzenia celu działania grzałki) jest ew. możliwość ustawiania progu wilgotności, powyżej którego czujnik włączy grzałkę i drugiego progu poniżej którego ją wyłączy. Te dwie wartości byłyby przekazywane do grzałki chyba w onInit(), a sam kanał powinien tylko pokazywać stan włączenia grzałki (do odczytania przez bibliotekę czujnika), więc możliwości sterowania grzałką raczej w aplikacji nie powinny być dostępne.
klasa dla HECy (grzałka z czujnikiem dla Nettigo Air Monitor)
-
klew
- Posts: 13908
- Joined: Thu Jun 27, 2019 12:16 pm
- Location: Wrocław
- Has thanked: 134 times
- Been thanked: 137 times
Wygląda na to, że tą klasę SHT3x trzeba przepisać na jakąś inną bibliotekę w Arduino, która istnieje.
Stan możesz pokazywać na VirtualBinary - tutaj raczej nic więcej do dyspozycji nie ma.
Ustawienia % wilgotności do włączania/wyłączania - tego nie ma w Supli. Także pozostaje dodawanie włąsnych ustawień na www urządzenia.
Stan możesz pokazywać na VirtualBinary - tutaj raczej nic więcej do dyspozycji nie ma.
Ustawienia % wilgotności do włączania/wyłączania - tego nie ma w Supli. Także pozostaje dodawanie włąsnych ustawień na www urządzenia.
Najlepsze suple dla Twojego domu 
-
malarz
- Posts: 506
- Joined: Wed Jan 27, 2021 4:04 pm
- Been thanked: 2 times
Najbardziej by się przydał jakiś VirtualHVAC
Podoba mi się ikonka w cloudzie dla GKW-01. A fajnie by było aby po użyciu mieć w miarę właściwe ikony dostępne w cloudzie.
Przy VirtualBinary brakuje mi jakiejś neutralnej, domyślnej ikony ON/OFF, START/STOP, Working/Hold, Play/Stop.
Klasę SDH mam już przepisaną na Adafruit cośtam, ale ona nie ma możliwości wysterowania grzałki. Wczoraj przejrzałem kilka bibliotek z pełniejszą obsługą tych czujników i się zastanawiam, której użyć. Ale niewykluczone, że tą z Adafruit zaproponuję jako podmiankę dla dotychczasowej SDH3x, a tę drugą użyję dla HECY.
Przy VirtualBinary brakuje mi jakiejś neutralnej, domyślnej ikony ON/OFF, START/STOP, Working/Hold, Play/Stop.
Klasę SDH mam już przepisaną na Adafruit cośtam, ale ona nie ma możliwości wysterowania grzałki. Wczoraj przejrzałem kilka bibliotek z pełniejszą obsługą tych czujników i się zastanawiam, której użyć. Ale niewykluczone, że tą z Adafruit zaproponuję jako podmiankę dla dotychczasowej SDH3x, a tę drugą użyję dla HECY.
Próbuję przerobić pomysły na działające projekty w ArduinoIDE.
-
malarz
- Posts: 506
- Joined: Wed Jan 27, 2021 4:04 pm
- Been thanked: 2 times
O ile dobrze zrozumiałem opis to SHT30 ma opcję grzałki z wyprowadzonym wyjściem z modułu (alert pin), do niego podpięli MOSFETa, który włącza zasilanie grzałki.klew wrote: Mon Jan 27, 2025 3:45 pm Co to jest za urządzenie?
Masz sht do pomiarów oraz jakieś wyjście "przekaźnikowe" do sterowania? Czy jak?
https://nettigo.pl/products/nettigo-air ... rzalki-ptc
https://nettigo.pl/products/nettigo-air ... sterujacym
I opis "alert mode" w czujniku:
https://sensirion.com/media/documents/4 ... rtMode.pdf
To wiedza, którą posiadłem teoretycznie w weekend. Niezweryfikowana empirycznie. Częściowo jeszcze wydedukowana z kodu
https://github.com/nettigo/namf/blob/df ... a/heca.cpp
Jakieś wstępne próby odczytania warunków z uruchomionego modułu są w:
Code: Select all
/*
Copyright (C) AC SOFTWARE SP. Z O.O., malarz
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifndef SRC_SUPLA_SENSOR_SHT3X_H_
#define SRC_SUPLA_SENSOR_SHT3X_H_
// Dependency: Adafruit SHT31
// https://github.com/adafruit/Adafruit_SHT31
#include <Adafruit_SHT31.h>
//#include "therm_hygro_meter.h"
#include <supla/sensor/therm_hygro_meter.h>
#include <supla/sensor/virtual_binary.h>
namespace Supla {
namespace Sensor {
class SHT3x : public ThermHygroMeter {
public:
explicit SHT3x(int8_t address = 0x44) : address(address) {
heaterChannel.setDefaultFunction(SUPLA_CHANNELFNC_HOTELCARDSENSOR);
heaterChannel.setInitialCaption("HECA");
heaterChannel.clear();
}
double getTemp() override {
readValuesFromDevice();
return temperature;
}
double getHumi() override {
return humidity;
}
void onInit() override {
sht.begin(address);
channel.setNewValue(getTemp(), getHumi());
}
private:
void readValuesFromDevice() {
float t, h;
if (sht.readBoth(&t, &h)) {
retryCount = 0;
temperature = t;
humidity = h;
if (humidity>63) {
sht.heater(true);
} else if (humidity<60) {
sht.heater(false);
}
} else {
Serial.println(F("SHT ERROR"));
retryCount++;
if (retryCount > 3) {
retryCount = 0;
temperature = TEMPERATURE_NOT_AVAILABLE;
humidity = HUMIDITY_NOT_AVAILABLE;
}
}
if (sht.isHeaterEnabled()) {
heaterChannel.set();
} else {
heaterChannel.clear();
}
}
protected:
int8_t address;
double temperature = TEMPERATURE_NOT_AVAILABLE;
double humidity = HUMIDITY_NOT_AVAILABLE;
int8_t retryCount = 0;
::Adafruit_SHT31 sht; // I2C
Supla::Sensor::VirtualBinary heaterChannel;
};
}; // namespace Sensor
}; // namespace Supla
#endif // SRC_SUPLA_SENSOR_SHT3X_H_
Próbuję przerobić pomysły na działające projekty w ArduinoIDE.
-
klew
- Posts: 13908
- Joined: Thu Jun 27, 2019 12:16 pm
- Location: Wrocław
- Has thanked: 134 times
- Been thanked: 137 times
Z tego co pamiętam, to sht ma wbudowaną grzałkę, która służy do wygrzewania układu pomiarowego, aby poprawić dokładność odczytów wilgotności.
Ale pisze z pamięci.
Ale pisze z pamięci.
Najlepsze suple dla Twojego domu 
Tu jest jakiś opis, ale nie wiem, czy coś pomoże.
-
YoMan
- Posts: 3521
- Joined: Thu Apr 30, 2020 5:18 pm
- Location: Częstochowa
- Has thanked: 3 times
- Been thanked: 3 times
W standardowej bibliotece arduino:
Code: Select all
sht.heatOn();
sht.heatOff();YoMan
________________________________________
Wziąłem udział w SOP2023 & SOP2024
________________________________________
Wziąłem udział w SOP2023 & SOP2024
-
klew
- Posts: 13908
- Joined: Thu Jun 27, 2019 12:16 pm
- Location: Wrocław
- Has thanked: 134 times
- Been thanked: 137 times
No, czyli to jest wbudowana grzałka do wygrzewania układu pomiarowego - w szczególności do pozbywania się skondendowanej wody z czujnika
.
Ogólnie to nie ma za bardzo zastosowania "w Supli". Poza tym, że może warto czasem tą grzałkę uruchomić, aby "zregeneroać" pomiar wilgtoności.
Ogólnie to nie ma za bardzo zastosowania "w Supli". Poza tym, że może warto czasem tą grzałkę uruchomić, aby "zregeneroać" pomiar wilgtoności.
Najlepsze suple dla Twojego domu 
-
malarz
- Posts: 506
- Joined: Wed Jan 27, 2021 4:04 pm
- Been thanked: 2 times
Tak, jeżeli nie zastosowano włączania z "alert mode". Wtedy Off nie zadziała dopóki nie osiągniemy końca alarmu.YoMan wrote: Mon Jan 27, 2025 6:46 pm W standardowej bibliotece arduino:Code: Select all
sht.heatOn(); sht.heatOff();
Próbuję przerobić pomysły na działające projekty w ArduinoIDE.
