Definitywny koniec z pushover(?)… w moich projektach:)

User avatar
SOYER
Posts: 1623
Joined: Wed Aug 10, 2022 12:29 pm
Location: Kryry
Been thanked: 2 times

Post

SOYER wrote: Tue Jan 30, 2024 4:54 pm @klew teraz pytanie, mam w domu na swoim serwerze supli multum urządzeń. Czy jeśli chciałbym zrobić to powiadomienie suplowskie(dotyczące wodomierza podpiętego do MEGA) na którymś z moich esp, któremu nie zabraknie pamięci na obsługę kanału powiadomień, to czy jestem w stanie na innym urządzeniu(esp) niż to do którego jest podpięty wodomierz(MEGA), pobrać dane ile aktualnie wynosi stan licznika impulsów wodomierza (i wtedy odpowiednio reagowac powiadomieniem)?
Czyli esp czyta stan kanału przypisanego do MEGA i reaguje.
@ klew olej to. Mega zostanie ze względu na wspomnienia. Co będzie można przeniosę na esp.
Ważna dla mnie odpowiedź na pytanie zawarte w cytowanym wyżej poście. Da się?
https://youtube.com/@tomaszhamer8134?si=_J1cT_QWsXxgt1Fm
https://kryry01.aqi.eco/pl
https://app.weathercloud.net/d4311785603
https://github.com/Soyer79
User avatar
klew
Posts: 13914
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 139 times
Been thanked: 137 times

Post

Stan kanału z innego urządzenia można czytać tylko przez linki bezpośrednie.

Jeśli temat nie jest pilny, to ja poczekałbym na tego typu reakcje w cloud
Najlepsze suple dla Twojego domu :mrgreen:
User avatar
SOYER
Posts: 1623
Joined: Wed Aug 10, 2022 12:29 pm
Location: Kryry
Been thanked: 2 times

Post

klew wrote: Tue Jan 30, 2024 6:55 pm Stan kanału z innego urządzenia można czytać tylko przez linki bezpośrednie.
Tzn. jak przeczytać na esp w garażu stan licznika z MEGI w spiżarni?
Temat nie pilny ale ciekawy.
To powinna być łatwa sprawa. Wszystkie urządzenia jednego konta mogą wzajemnie korzystać ze swoich kanałów.
https://youtube.com/@tomaszhamer8134?si=_J1cT_QWsXxgt1Fm
https://kryry01.aqi.eco/pl
https://app.weathercloud.net/d4311785603
https://github.com/Soyer79
User avatar
klew
Posts: 13914
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 139 times
Been thanked: 137 times

Post

SOYER wrote: Tue Jan 30, 2024 7:00 pm
klew wrote: Tue Jan 30, 2024 6:55 pm Stan kanału z innego urządzenia można czytać tylko przez linki bezpośrednie.
Tzn. jak przeczytać na esp w garażu stan licznika z MEGI w spiżarni?
Temat nie pilny ale ciekawy.
To powinna być łatwa sprawa. Wszystkie urządzenia jednego konta mogą wzajemnie korzystać ze swoich kanałów.
W Supli nie ma mechanizmów na komunikację między urządzeniami.

Linki bezpośrednie robisz w cloud, a na ESP łączysz się po HTTPS z tym linkiem i dostajesz dane w json.

Ogólnie nie jest to przygotowane dla urządzeń typu ESP, ale ludzie tak tego też używają
Najlepsze suple dla Twojego domu :mrgreen:
User avatar
SOYER
Posts: 1623
Joined: Wed Aug 10, 2022 12:29 pm
Location: Kryry
Been thanked: 2 times

Post

klew wrote: Tue Jan 30, 2024 7:10 pm
SOYER wrote: Tue Jan 30, 2024 7:00 pm
klew wrote: Tue Jan 30, 2024 6:55 pm Stan kanału z innego urządzenia można czytać tylko przez linki bezpośrednie.
Tzn. jak przeczytać na esp w garażu stan licznika z MEGI w spiżarni?
Temat nie pilny ale ciekawy.
To powinna być łatwa sprawa. Wszystkie urządzenia jednego konta mogą wzajemnie korzystać ze swoich kanałów.
W Supli nie ma mechanizmów na komunikację między urządzeniami.
Tylko, że to nie komunikacja między urządzeniami, a między urządzeniem i serwerem. Przecież dane o aktualnym stanie każdego kanału są na serwerze.
https://youtube.com/@tomaszhamer8134?si=_J1cT_QWsXxgt1Fm
https://kryry01.aqi.eco/pl
https://app.weathercloud.net/d4311785603
https://github.com/Soyer79
zzrr
Posts: 1864
Joined: Wed Oct 26, 2022 7:35 pm
Has thanked: 76 times
Been thanked: 119 times

Post

@SOYER nie chcę Ci mieszać w planach ale jak tak na szybko sledze ten temat, no może nie wszystko zakapowałem tak jak Ty to widzisz. Bo na pewno nie załatwi to sczytywania licznika przez inne urządzenie. Ale jak chcesz w miarę gładko przejść przez problem powiadomień to czemu nie zrobisz sobie w tym liczniku co mówiłeś na początku po prostu wirtualnego sensora. W aplikacji dojdzie Ci jakieś tam tak dla przykładu wiaderko co będzie puste albo pełne, a w cloudzie ustawisz sobie do tego reakcje z powiadomieniem z Supli? I tak to co chcesz zrobić korzysta z clouda i tak. A nie będziesz miał problemów z pamięcią itp?
User avatar
klew
Posts: 13914
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 139 times
Been thanked: 137 times

Post

SOYER wrote: Tue Jan 30, 2024 7:18 pm Tylko, że to nie komunikacja między urządzeniami, a między urządzeniem i serwerem. Przecież dane o aktualnym stanie każdego kanału są na serwerze.
Jakkolwiek tego nie nazwiemy, tego typu wymiany informacji w stronę urządzeń nie ma w Supli.
Jak wielu innych rzeczy ;)
Najlepsze suple dla Twojego domu :mrgreen:
User avatar
SOYER
Posts: 1623
Joined: Wed Aug 10, 2022 12:29 pm
Location: Kryry
Been thanked: 2 times

Post

Cześć @klew.
Powiedz mi, mam:

Code: Select all

Supla::Sensor::Binary *kranWjazd = nullptr;
setup...
kranWjazd = new Supla::Sensor::Binary(kran_wjazd, false);
jak czytać stan tego kanału dla swoich potrzeb?
kranWjazd->getValue(); ?
Co zwraca? true i false tak?
https://youtube.com/@tomaszhamer8134?si=_J1cT_QWsXxgt1Fm
https://kryry01.aqi.eco/pl
https://app.weathercloud.net/d4311785603
https://github.com/Soyer79
User avatar
SOYER
Posts: 1623
Joined: Wed Aug 10, 2022 12:29 pm
Location: Kryry
Been thanked: 2 times

Post

Ok, powiadomienia z urządzenia zaimplementowane i połączone ze skryptem wykrywającym za duży wypływ wody na wodomierzu, przetestowane. Działa pięknie.
Pobieranie czasu z serwera Supli i wyciągnięcie info o specyficznych dla aktualnego dnia godzinach wschodu i zachodu słońca, zrobione, działa.
Teraz zostało mi to zainstalować i dopisać szkic odpowiedzialny za sterowanie paskami led na podjeździe. Zrobimy;).

Szkic:

Code: Select all

/////////////////////////////////////  192.168.4.1/update    //////////////////////////////
#include <SuplaDevice.h>
#include <supla/sensor/DS18B20.h>
#include <supla/control/relay.h>
#include <supla/control/button.h>
#include <supla/sensor/binary.h>
#include <supla/network/esp_wifi.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/wifi_parameters.h>
#include <supla/device/supla_ca_cert.h>
#include <supla/events.h>
#include <supla/storage/eeprom.h>
#include <ESP8266HTTPUpdateServer.h>                     //OTA
#include <Timers.h>
#include <supla/clock/clock.h> //int suplaClock.getYear(); getMonth(); getDay(); getDayOfWeek();1 - Sunday, 2 - Monday getHour(); getMin(); getSec();
#include <supla/sensor/impulse_counter.h>
#include <supla/device/notifications.h>

Supla::Clock suplaClock;
Supla::Eeprom eeprom;
Supla::ESPWifi wifi;
ESP8266HTTPUpdateServer httpUpdater;        
#include <Ephemeris.h>

#define kran_wjazd 5  //D1
#define bramaWjazdRelay 4 //D2
#define lampaOgrodRelay 2  //D4
int chLicznikWody;
int progWody = 30;

void printRiseAndSet(FLOAT latitude, FLOAT longitude, int UTCOffset, int day, int month, int year)
{
  Ephemeris::setLocationOnEarth(latitude,longitude);          
  SolarSystemObject sun = Ephemeris::solarSystemObjectAtDateAndTime(Sun,day,month,year,0,0,0);
  
  if( sun.riseAndSetState == RiseAndSetOk )
  {
    int hoursR,minutesR,hoursS, minutesS;
    FLOAT seconds;
    Ephemeris::floatingHoursToHoursMinutesSeconds(Ephemeris::floatingHoursWithUTCOffset(sun.rise,UTCOffset), &hoursR, &minutesR, &seconds);
    Serial.print("  Wschod: ");
    Serial.print(hoursR);
    Serial.print("h");
    Serial.print(minutesR);
    Serial.print("m");
    Ephemeris::floatingHoursToHoursMinutesSeconds(Ephemeris::floatingHoursWithUTCOffset(sun.set,UTCOffset), &hoursS, &minutesS, &seconds);
    Serial.print("  Zachod:  ");
    Serial.print(hoursS);
    Serial.print("h");
    Serial.print(minutesS);
    Serial.print("m");
  }
    Serial.println();
}

Timer sekund10;
Timer minut1;

#define BUTTON_CFG_RELAY_GPIO 12       //D6
Supla::LittleFsConfig configSupla;
Supla::EspWebServer suplaServer;
Supla::Html::DeviceInfo htmlDeviceInfo(&SuplaDevice);
Supla::Html::WifiParameters htmlWifi;
Supla::Html::ProtocolParameters htmlProto;
Supla::Sensor::ImpulseCounter *licznikWody = nullptr;
Supla::Control::Relay *bramaWjazd = nullptr;
Supla::Control::Relay *lampaOgrod = nullptr;
Supla::Sensor::Binary *kranWjazd = nullptr;

void setup() 
{
  Serial.begin(9600);

  httpUpdater.setup(suplaServer.getServerPtr(), "/update");
  
  auto buttonCfgRelay =
  new Supla::Control::Button(BUTTON_CFG_RELAY_GPIO, true, true);
  Supla::Notification::RegisterNotification(-1);
  
  licznikWody = new Supla::Sensor::ImpulseCounter(14, true, false, 100);///D5
  lampaOgrod = new Supla::Control::Relay(lampaOgrodRelay, false); 
  bramaWjazd = new Supla::Control::Relay(bramaWjazdRelay, false);
  kranWjazd = new Supla::Sensor::Binary(kran_wjazd, false);// false = pullUp
  
  buttonCfgRelay->configureAsConfigButton(&SuplaDevice);
 // configure defualt Supla CA certificate
  SuplaDevice.setSuplaCACert(suplaCACert);
  SuplaDevice.setSupla3rdPartyCACert(supla3rdCACert);
  SuplaDevice.begin();  

  sekund10.begin(9985);
  minut1.begin(59998);
}

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

void pobierzCzas(){
  if(sekund10.available()){
   printRiseAndSet(00.0000,    00.0000,  +1,  suplaClock.getDay(),suplaClock.getMonth(),suplaClock.getYear());
   sekund10.restart();
  }
}
void kontrolaWody(){
  if(minut1.available()){
     if(licznikWody->getCounter() > (chLicznikWody + progWody)){
       Supla::Notification::Send(-1, "WODOMIERZ", "Przekroczono limit wylanej wody w 1 minutę");
     }
   chLicznikWody = licznikWody->getCounter();
   minut1.restart();
  }
}
Logi:

Code: Select all

Clock: new local time: 2024-1-31 20:21:13
  Wschod: 7h20m  Zachod:  16h36m
  Wschod: 7h20m  Zachod:  16h36m
Co to znaczy:

Code: Select all

Clock: time diff (system-new): -2 s
Last edited by SOYER on Wed Jan 31, 2024 7:30 pm, edited 1 time in total.
https://youtube.com/@tomaszhamer8134?si=_J1cT_QWsXxgt1Fm
https://kryry01.aqi.eco/pl
https://app.weathercloud.net/d4311785603
https://github.com/Soyer79
zzrr
Posts: 1864
Joined: Wed Oct 26, 2022 7:35 pm
Has thanked: 76 times
Been thanked: 119 times

Post

Różnica/poprawka między czasem lokalnym a tym synchronizowanym z clouda

Return to “Pomoc”