@klew - może warto było by dodać wsparcie czujnika AHT20 - występuje razem z BMP280 - taki zamiennik BME280. Cena tego AHT20 + BMP280 to około 8 zł - jak porównamy z BME około 30 złociszy .... można o tym pomyśleć może ?
takie combo: https://pl.aliexpress.com/item/10050045 ... usXaLU3yX4
Wsparcie dla czujnika AHT10
-
- Posts: 2354
- Joined: Sun Sep 03, 2017 9:13 am
- Location: Koszalin
jak coś nie działa to włącz zasilanie.....
-
- Posts: 652
- Joined: Sun Mar 20, 2022 9:30 am
- Location: Głogów
w sumie z tym Combo czujnikiem fajna sprawa. Można by było zrobić na podstawie biblioteki od BME280, tylko teraz czy BMP czy AHT byłby odpowiedzialny za odczyt temperatury, no chyba żeby zostawić oba pomiary temperatury. Ja na szybko zrobiłem na podstawie biblioteki z SuplaDevice BME280.h bibliotekę która odczytuje temperaturę i wilgotność z AHT a ciśnienie bierze z BMP. nie robiłem tylko korekty w stosunku do wysokości NPM, ale działa.
Link do biblioteki:
https://github.com/v33r005/Supla/blob/m ... or/Combo.h
wywołujemy standardowo
new Supla::Sensor::Combo();
musi być zainstalowana biblioteka:
Adafruit_AHTX0.h
u mnie to chodzi, wiadomo, że można by było to lepiej zrobić, ale na moje potrzeby to starcza.
Link do biblioteki:
https://github.com/v33r005/Supla/blob/m ... or/Combo.h
wywołujemy standardowo
new Supla::Sensor::Combo();
musi być zainstalowana biblioteka:
Adafruit_AHTX0.h
u mnie to chodzi, wiadomo, że można by było to lepiej zrobić, ale na moje potrzeby to starcza.
Zamel Mew-01, Wemos D1 mini Pro + Ikea vindriktning + BME280, 3x - SonOff mini, 3x - SonOff Basic, 3xGosund SP111, SonOff S55, 2x GOSUND WB4
https://github.com/v33r005
https://github.com/v33r005
-
- Posts: 10757
- Joined: Thu Jun 27, 2019 12:16 pm
- Location: Wrocław
Ogólnie najlepiej by było, gdyby we własnych rozszerzeniach do supla-device, nie używać oficjalnego namespace "Supla". Wynika to z tego, że może się zdarzyć, że dodam potem klasę o takiej samej nazwie, np. Supla::Sensor::Combo i ten kod przestanie się kompilować. Raczej takiej klasy nie dodam, ale podaję to jako przykład. Można używać własnych nazw, w stylu Veeroos::Sensor::Combo, albo SuplaExt:: Sensor::Combo itd. Wtedy minimalizujemy potencjalne problemy z konfliktem nazwy i użytkownicy też mają większą jasność skąd co pochodzi.veeroos wrote: Fri Feb 17, 2023 7:37 am w sumie z tym Combo czujnikiem fajna sprawa. Można by było zrobić na podstawie biblioteki od BME280, tylko teraz czy BMP czy AHT byłby odpowiedzialny za odczyt temperatury, no chyba żeby zostawić oba pomiary temperatury. Ja na szybko zrobiłem na podstawie biblioteki z SuplaDevice BME280.h bibliotekę która odczytuje temperaturę i wilgotność z AHT a ciśnienie bierze z BMP. nie robiłem tylko korekty w stosunku do wysokości NPM, ale działa.
Link do biblioteki:
https://github.com/v33r005/Supla/blob/m ... or/Combo.h
wywołujemy standardowo
new Supla::Sensor::Combo();
musi być zainstalowana biblioteka:
Adafruit_AHTX0.h
u mnie to chodzi, wiadomo, że można by było to lepiej zrobić, ale na moje potrzeby to starcza.
Natomiast namespace Supla zostaw, jeśli zamierzasz zrobić PR do oficjalnej biblioteki, aby w ten sposób udostępnić innym Twoją pracę.
Osobiście też nie widzę potrzeby łączenia dwóch czujników w jedną klasę. Klasa "thermo hygro press meter" to taka mocna proteza, bo BME ma pomiar tych trzech wartości, a Supla używa do tego dwóch osobnych kanałów. Równie dobrze mógłbyś dodać dwie osobne klasy dla osobnych czujników - dzięki temu można użyć obu sensorów osobno bez konieczności posiadania obu i kod jest nieco prostszy.
-
- Posts: 652
- Joined: Sun Mar 20, 2022 9:30 am
- Location: Głogów
W sumie to masz rację. mając te biblioteki piszemy kod typu:
I załatwiamy całą sprawę nie ingerując w inne biblioteki
Code: Select all
/*
Copyright (C) AC SOFTWARE SP. Z O.O.
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.
*/
/* This example shows ESP82xx/ESP32 based device with simple WebInterface
* used to configure Wi-Fi parameters and Supla server connection.
* There is one RollerShutter, one Relay and 3 buttons configured.
* Two buttons are for roller shutter with Action Trigger.
* Third button is for controlling the relay and for switching module to
* config mode.
* After fresh installation, device will be in config mode. It will have its
* own Wi-Fi AP configured. You should connect to it with your mobile phone
* and open http://192.168.4.1 where you can configure the device.
* Status LED is also configured. Please adjust GPIOs to your HW.
*/
#define STATUS_LED_GPIO 2
#define BUTTON_CFG_RELAY_GPIO 0
#include <Adafruit_BMP280.h>
#include <Adafruit_AHTX0.h>
#include <SuplaDevice.h>
#include <supla/network/esp_wifi.h>
#include <supla/control/button.h>
#include <supla/control/action_trigger.h>
#include <supla/device/status_led.h>
#include <supla/storage/littlefs_config.h>
#include <supla/network/esp_web_server.h>
#include <supla/network/html/device_info.h>
#include <supla/network/html/protocol_parameters.h>
#include <supla/network/html/status_led_parameters.h>
#include <supla/network/html/wifi_parameters.h>
#include <supla/device/supla_ca_cert.h>
#include <supla/events.h>
#include <supla/sensor/therm_hygro_meter.h>
#include <supla/sensor/pressure.h>
// Choose where Supla should store roller shutter data in persistent memory
// We recommend to use external FRAM memory
#include <supla/storage/eeprom.h>
Supla::Eeprom eeprom;
// #include <supla/storage/fram_spi.h>
// Supla::FramSpi fram(STORAGE_OFFSET);
Supla::ESPWifi wifi;
Supla::LittleFsConfig configSupla;
Supla::Device::StatusLed statusLed(STATUS_LED_GPIO, true); // inverted state
Supla::EspWebServer suplaServer;
Adafruit_AHTX0 aht;
Adafruit_BMP280 bmp;
class Czujnik_AHT : public Supla::Sensor::ThermHygroMeter {
public:
explicit Czujnik_AHT() {
}
double getTemp() {
temperature = temp.temperature;
if (isnan(temperature)) {
temperature = TEMPERATURE_NOT_AVAILABLE;
}
if (temperature == TEMPERATURE_NOT_AVAILABLE) {
retryCountTemp++;
if (retryCountTemp > 3) {
retryCountTemp = 0;
} else {
temperature = lastValidTemp;
}
} else {
retryCountTemp = 0;
}
lastValidTemp = temperature;
return temperature;
}
double getHumi() {
humidity = humi.relative_humidity;
if (isnan(humidity)) {
humidity = HUMIDITY_NOT_AVAILABLE;
}
if (humidity == HUMIDITY_NOT_AVAILABLE) {
retryCountHumi++;
if (retryCountHumi > 3) {
retryCountHumi = 0;
} else {
humidity = lastValidHumi;
}
} else {
retryCountHumi = 0;
}
lastValidHumi = humidity;
return humidity;
}
private:
void iterateAlways() {
aht.getEvent(&humi, &temp);
if (millis() - lastReadTime > 10000) {
lastReadTime = millis();
channel.setNewValue(getTemp(), getHumi());
}
}
void onInit() {
aht.getEvent(&humi, &temp);// populate temp and humidity objects with fresh data
channel.setNewValue(getTemp(), getHumi());
}
protected:
sensors_event_t humi, temp;
int8_t address;
double temperature = TEMPERATURE_NOT_AVAILABLE;
double humidity = HUMIDITY_NOT_AVAILABLE;
double lastValidTemp;
double lastValidHumi;
int8_t retryCountTemp;
int8_t retryCountHumi;
int8_t retryCount = 0;
};
class Cisnienie : public Supla::Sensor::Pressure {
public:
explicit Cisnienie() {
}
double get_pressure(){
cisnienie = pressure_event.pressure;
return cisnienie;
}
private:
void iterateAlways() {
bmp_pressure->getEvent(&pressure_event);
if (millis() - lastReadTime > 10000) {
lastReadTime = millis();
channel.setNewValue(get_pressure());
}
}
void onInit() {
channel.setNewValue(get_pressure());
}
protected:
Adafruit_Sensor *bmp_pressure = bmp.getPressureSensor();
sensors_event_t pressure_event;\
double cisnienie;
};
Supla::Html::DeviceInfo htmlDeviceInfo(&SuplaDevice);
Supla::Html::WifiParameters htmlWifi;
Supla::Html::ProtocolParameters htmlProto;
Supla::Html::StatusLedParameters htmlStatusLed;
void setup() {
Serial.begin(115200);
if (! aht.begin()) {
Serial.println("Could not find AHT? Check wiring");
while (1) delay(10);
}
if (!bmp.begin()) {
Serial.println(F("Could not find a valid BMP280 sensor, check wiring!"));
while (1) delay(10);
}
// Channels configuration
// CH 0 - Roller shutter
auto buttonCfgRelay =
new Supla::Control::Button(BUTTON_CFG_RELAY_GPIO, true, true);
new Czujnik_AHT();
new Cisnienie();
buttonCfgRelay->configureAsConfigButton(&SuplaDevice);
// configure defualt Supla CA certificate
SuplaDevice.setSuplaCACert(suplaCACert);
SuplaDevice.setSupla3rdPartyCACert(supla3rdCACert);
SuplaDevice.begin();
}
void loop() {
SuplaDevice.iterate();
}
Zamel Mew-01, Wemos D1 mini Pro + Ikea vindriktning + BME280, 3x - SonOff mini, 3x - SonOff Basic, 3xGosund SP111, SonOff S55, 2x GOSUND WB4
https://github.com/v33r005
https://github.com/v33r005
-
- Posts: 10757
- Joined: Thu Jun 27, 2019 12:16 pm
- Location: Wrocław
Zupełnie nie to miałem na myśliveeroos wrote: Fri Feb 17, 2023 9:19 am W sumie to masz rację. mając te biblioteki piszemy kod typu:

Chodziło mi o to, że takie "Combo" nie jest konieczne.
Lepiej dodać osobno BMP i AHT, w stylu:
Code: Select all
new Supla::Sensor::AHT10(...);
new Supla::Sensor::BMP(...);
// zamiast:
new Supla::Sensor::Combo();

-
- Posts: 652
- Joined: Sun Mar 20, 2022 9:30 am
- Location: Głogów
A no w sumie tak, no to dodajcie czujniki AHT do wyboru i zadowolicie dużą część odbiorców, a zwłaszcza tych, którzy chcą mieć taniej czujnik o możliwościach BME280
, a nie za bardzo radzą sobie z kodem 
Zamel Mew-01, Wemos D1 mini Pro + Ikea vindriktning + BME280, 3x - SonOff mini, 3x - SonOff Basic, 3xGosund SP111, SonOff S55, 2x GOSUND WB4
https://github.com/v33r005
https://github.com/v33r005
-
- Posts: 10757
- Joined: Thu Jun 27, 2019 12:16 pm
- Location: Wrocław
Już to prawie zrobiłeś i do tego masz czujnik aby sprawdzić czy działa.veeroos wrote: Fri Feb 17, 2023 9:38 am A no w sumie tak, no to dodajcie czujniki AHT do wyboru i zadowolicie dużą część odbiorców, a zwłaszcza tych, którzy chcą mieć taniej czujnik o możliwościach BME280, a nie za bardzo radzą sobie z kodem
![]()
Dodaj klasę do biblioteki i zrób PR
-
- Posts: 24
- Joined: Thu Sep 01, 2022 8:20 am
Czy jest szansa na dodanie AHT10 do GUI, albo jak można wspomóc wdrożenie AHT10 do GUI ? Cena AHT10 vs BME280 vs DHT22 jest kluczowym argumentem
-
- Posts: 652
- Joined: Sun Mar 20, 2022 9:30 am
- Location: Głogów
W sumie kolega @milanos zrobił już bibliotekę jedynie co to nie jest w niej potrzebne podtrzymanie wartości temperatury i wilgotności przy braku odczytu. Wywaliłem to i powinno chodzić zarówno dla czujników AHT10 i AHT20. U mnie na czujniku podwójnym (BMP + AHT) działa doskonale. Link do biblioteki:klew wrote: Fri Feb 17, 2023 9:47 am Już to prawie zrobiłeś i do tego masz czujnik aby sprawdzić czy działa.
Dodaj klasę do biblioteki i zrób PR
https://github.com/v33r005/Supla/tree/m ... pla/sensor
Możesz ją poprawić jak zobaczysz błędy, a jak nie to jak możesz to dodaj do SuplaDevice.
Zamel Mew-01, Wemos D1 mini Pro + Ikea vindriktning + BME280, 3x - SonOff mini, 3x - SonOff Basic, 3xGosund SP111, SonOff S55, 2x GOSUND WB4
https://github.com/v33r005
https://github.com/v33r005
-
- Posts: 10757
- Joined: Thu Jun 27, 2019 12:16 pm
- Location: Wrocław
Niestety nie mogę dodać kodu, którego nie jestem autorem. Możesz zrobić PR do repozytorium, wtedy zrobię review i poproszę o ewentualne zmiany, jeśli coś będzie potrzebne. Dodatkowo będziesz poproszony o zaakpectowanie warunków licencji.veeroos wrote: Fri Feb 17, 2023 12:11 pmW sumie kolega @milanos zrobił już bibliotekę jedynie co to nie jest w niej potrzebne podtrzymanie wartości temperatury i wilgotności przy braku odczytu. Wywaliłem to i powinno chodzić zarówno dla czujników AHT10 i AHT20. U mnie na czujniku podwójnym (BMP + AHT) działa doskonale. Link do biblioteki:klew wrote: Fri Feb 17, 2023 9:47 am Już to prawie zrobiłeś i do tego masz czujnik aby sprawdzić czy działa.
Dodaj klasę do biblioteki i zrób PR
https://github.com/v33r005/Supla/tree/m ... pla/sensor
Możesz ją poprawić jak zobaczysz błędy, a jak nie to jak możesz to dodaj do SuplaDevice.