SONOFF + DS18B20

miost
Posts: 5
Joined: Tue Nov 08, 2022 8:39 pm

Post

Dzień dobry wszystkim

Przechodzę obecnie z całą automatyką domową na SUPLA. Wcześniej miałem wszystko na Blynku, ale to co zrobili z Blynkiem 2.0, wyłączeniem 1.0 i skasowaniem punktów zmusza do pożegnania się z tą platformą. Może i dobrze, bo z oszustami lepiej nie mieć do czynienia.

Środowisko SUPLA w Arduino IDE zacząłem poznawać, na początek poszły SONOFF jak włączniki/wyłączniki. Poszło bez problemu, wszystko działa OK. SONOFF posiadają jedno wyjście GPIO14 pod który można podpiąć termometr DS18B20. Z oprogramowaniem nie było problemu.

Natomiast widzę, że dołożenie czujnika temperatury opóźniło komunikację włącznika z chmurą. Reakcja następuje nawet 5 sekundach. W SONOFF bez czujnika wszystko dzieje się natychmiast.

Czy to kwestia jakiegoś braku w software, czy po prostu słaba komunikacja urządzenie-chmura.
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

Coś pewnie w programie zrobiłeś co tak opóźnia.
Ogólnie w loop nie powinno być żadnych blokujących operacji.
Najlepiej pokaż kod, to coś pomożemy
Najlepsze suple dla Twojego domu :mrgreen:
miost
Posts: 5
Joined: Tue Nov 08, 2022 8:39 pm

Post

Kod jest prosty, nie ma dodatkowych instrukcji w loop. Może standardowo jest za częsty odczyt danych z czujnika. Czy istnieją jakieś parametry w kodzie SUPLA, które to regulują. Mogę to rozwiązać co prawda za pomocą Simple Timer, ale dla pewności pytam

Code: Select all

#include <SuplaDevice.h>
#include <supla/control/relay.h>
#include <supla/network/esp_wifi.h>
#include <supla/sensor/DS18B20.h>

Supla::ESPWifi wifi("xxx", "yyy");

void setup() {

Serial.begin(115200);

    // Replace the falowing GUID with value that you can retrieve from https://www.supla.org/arduino/get-guid
  char GUID[SUPLA_GUID_SIZE] = {xxx};

  // Replace the following AUTHKEY with value that you can retrieve from: https://www.supla.org/arduino/get-authkey
  char AUTHKEY[SUPLA_AUTHKEY_SIZE] = {xxx};
 
 
auto r1 = new Supla::Control::Relay(12); // przekaźnik na pin 12 sterowany stanem wysokim
  
  DeviceAddress ds1addr = {0x28, 0xFF, 0xC3, 0x14, 0xB5, 0x16, 0x05, 0xE2};
    
  new Supla::Sensor::DS18B20(14, ds1addr);

 
  SuplaDevice.begin(GUID,              // Global Unique Identifier 
                    "svr77.supla.org",  // SUPLA server address
                    "xxx",   // Email address used to login to Supla Cloud
                    AUTHKEY);          // Authorization key
    
}

void loop() {
  SuplaDevice.iterate();
}

Przy okazji zapytam czy w środowisku SUPLA mogę wprowadzić dowolną zmienną, choćby odczyt pinu analogowego tak bym to widział w aplikacji czy na www. Wtedy podobnie jak w blynku wykorzystałbym bibliotekę Timer i w dedykowanej pętli odczytwał wartość zmiennej.

W Blynku stworzyłem fajne programy do odczytywania danych z kontrolerów PV EpEver Tracer i kontrolowania napięcia akumulatorów w instalacjach offgrid, chętnie bym to przeniósł do SUPLA i się tym podzielił.
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

Ta klasa DS18B20 w Supli używa nieblokującego odczytu. Tzn. wysyła rozkaz do DS'a, aby zrobił pomiar temperatury i po niecałej sekundzie go odczytuje, ale nie blokuje w tym czasie pętli. Więc nie powinno być takiego efekty. Chyba, że coś się zmieniło w bibliotece do obsługi DS'a.

Odnośnie pozostałych pytań - można odczytać i wrzucić różne wartości. Z tym, że w Supli nie ma jeszcze odpowiednich kanałów przeznaczonych do dowolnych pomiarów, więc używa się najczęściej kanału temperatury, aby pokazać jakąś wartość (poszukaj sobie na forum o VirtualThermometer).

Możesz też się zainteresować projektem Gui Generic - tam w zasadzie generujesz binarkę online i wgrywasz na urządzenie i masz obsługę większości rzeczy. "PV EpEver Tracer" tam nie będzie ;) to byś musiał sam ogarnąć.
Najlepsze suple dla Twojego domu :mrgreen:
miost
Posts: 5
Joined: Tue Nov 08, 2022 8:39 pm

Post

Z tym, że w Supli nie ma jeszcze odpowiednich kanałów przeznaczonych do dowolnych pomiarów, więc używa się najczęściej kanału temperatury, aby pokazać jakąś wartość (poszukaj sobie na forum o VirtualThermometer).
Bardzo dziękuję za to info, w taki razie będę poznawał VirtualThermometer. Będę chciał to zrobić w Arduino IDE. O efektach poinformuje w innym dziale
Yepestis
Posts: 890
Joined: Mon Sep 24, 2018 6:08 pm
Location: Wrocław
Has thanked: 19 times
Been thanked: 3 times

Post

miost wrote: Wed Nov 09, 2022 7:39 pm
W Blynku stworzyłem fajne programy do odczytywania danych z kontrolerów PV EpEver Tracer i kontrolowania napięcia akumulatorów w instalacjach offgrid, chętnie bym to przeniósł do SUPLA i się tym podzielił.
Kiedyś popełniłem odczyt z EpSolar, do doskonałości mu sporo brakowało ale działało

viewtopic.php?t=6723
User avatar
shimano73
Posts: 2174
Joined: Sun Feb 28, 2016 12:27 pm
Location: Orzesze
Been thanked: 1 time

Post

Yepestis wrote: Wed Nov 09, 2022 9:10 pm
miost wrote: Wed Nov 09, 2022 7:39 pm
W Blynku stworzyłem fajne programy do odczytywania danych z kontrolerów PV EpEver Tracer i kontrolowania napięcia akumulatorów w instalacjach offgrid, chętnie bym to przeniósł do SUPLA i się tym podzielił.
Kiedyś popełniłem odczyt z EpSolar, do doskonałości mu sporo brakowało ale działało

viewtopic.php?t=6723
To następnym razem nie popełniaj , popełnia się błędy , stwórz , jak stworzył kolega miost. :lol:
Jak ja nie cierpię takiego wyrażenia :?
W elektronice jak nie wiadomo o co chodzi to zwykle chodzi o zasilanie

Wezmę udział w Supla Offline Party 2024 :)
Yepestis
Posts: 890
Joined: Mon Sep 24, 2018 6:08 pm
Location: Wrocław
Has thanked: 19 times
Been thanked: 3 times

Post

shimano73 wrote: Thu Nov 10, 2022 4:57 pm Jak ja nie cierpię takiego wyrażenia :?
Przenieś się na zagraniczne forum tam napewno na nie nie trafisz :lol:
miost
Posts: 5
Joined: Tue Nov 08, 2022 8:39 pm

Post

klew wrote: Wed Nov 09, 2022 8:23 pm Ta klasa DS18B20 w Supli używa nieblokującego odczytu. Tzn. wysyła rozkaz do DS'a, aby zrobił pomiar temperatury i po niecałej sekundzie go odczytuje, ale nie blokuje w tym czasie pętli. Więc nie powinno być takiego efekty. Chyba, że coś się zmieniło w bibliotece do obsługi DS'a.
Jakiś problem SONOFF z DS18B20 jednak jest . Moduły, które zintegrowałem z pojedynczym czujnikiem mają jakiś problem komunikacji z serwerem. Z tego co można odczytać z ikonki "i" w apce dochodzi do restartów połączeń modułuz serwerem , gdy chcemy wyzwolić włącznik/wyłącznik.
Nawet harmonogram nie startuje pomimo powtórki czasami.

Moduły bez czujnika działają niezwłocznie.
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

miost wrote: Sun Nov 13, 2022 9:42 pm
klew wrote: Wed Nov 09, 2022 8:23 pm Ta klasa DS18B20 w Supli używa nieblokującego odczytu. Tzn. wysyła rozkaz do DS'a, aby zrobił pomiar temperatury i po niecałej sekundzie go odczytuje, ale nie blokuje w tym czasie pętli. Więc nie powinno być takiego efekty. Chyba, że coś się zmieniło w bibliotece do obsługi DS'a.
Jakiś problem SONOFF z DS18B20 jednak jest . Moduły, które zintegrowałem z pojedynczym czujnikiem mają jakiś problem komunikacji z serwerem. Z tego co można odczytać z ikonki "i" w apce dochodzi do restartów połączeń modułuz serwerem , gdy chcemy wyzwolić włącznik/wyłącznik.
Nawet harmonogram nie startuje pomimo powtórki czasami.

Moduły bez czujnika działają niezwłocznie.
Ciężko będzie coś wywróżyć bez logów. Spróbuj na odłączonym od zasilania 230 V Sonoffie, podłączyć go pod zasilanie z USB i zebrać logi. Przekaźnikiem pewnie nie da rady na takim zasilaniu sterować, ale odczyt z DS powinien działać.
Najlepsze suple dla Twojego domu :mrgreen:

Return to “Arduino IDE”