Logi "Send" do serwera

wladziu22
Posts: 36
Joined: Sat Dec 02, 2023 4:40 pm

Post

No dobra powiedzmy, że rozumiem co do mnie piszesz, ale natomiast nadal nie jestem pewny czy w Arduno sketch mam wywołać konstruktor klasy RS tzn to co spowoduje utworzenie obiektów / urządzeń rolet widocznych w Supla Cloud z konkretnym numerem kanału ?

Jak narazie robiłem tak (przed Twoim dodaniem klasy RSI):
...
Supla::Control::RollerShutter *rs = new Supla::Control::RollerShutter(14, 15, true);
Supla::Control::RollerShutter *rs2 = new Supla::Control::RollerShutter(16, 17, true);
(void) rs;
(void) rs2;
....
no i w zasadzie bez buttonów (ktore byly w sketchu przykładowym), a te numery np IO 14 - 17 to do niczego nie były mi potrzebne (kostruktor wymaga).
Czy takie tworzenie obiektów powinienem zostawić jak powyżej ?



Z drugiej strony analizujac kod RSI widze

Code: Select all

class RollerShutterInterface : public ChannelElement, public ActionHandler {
 public:
  RollerShutterInterface();
  .....
  
RSI dziedziczy po Channelelement jednakże w RSI nie ma tam wywolania metody addChannelElement() ktora dodaje nowy kanał "widoczny" w Supla Cloud jako nowe urzadzenie.

To co mi przychodzi do glowy to cos takiego tzn zrobic wlasny konstruktor

Code: Select all

I2CRSSuplaCtrl::I2CRSSuplaCtrl() {
    // Inicjalizacja
    SuplaDevice.addChannelElement(this);
}
i w sketch wolać:

Code: Select all

I2CRSSuplaCtrl* myShutter = new I2CRSSuplaCtrl();
SuplaDevice.addChannelElement(myShutter);
Last edited by wladziu22 on Sun Apr 06, 2025 5:21 pm, edited 1 time in total.
User avatar
klew
Posts: 13911
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 135 times
Been thanked: 137 times

Post

Klasa RSI zawiera kanał rolety i jego obsługę, ale nie zawiera implantacji sterowania samą roletą.
Klasa RS rozszerza klasę RSI o bezpośrednie sterowanie przekaźnikami, które obsługują roletę.
Najlepsze suple dla Twojego domu :mrgreen:
wladziu22
Posts: 36
Joined: Sat Dec 02, 2023 4:40 pm

Post

klew wrote: Sun Apr 06, 2025 5:18 pm Klasa RSI zawiera kanał rolety i jego obsługę, ale nie zawiera implantacji sterowania samą roletą.
Klasa RS rozszerza klasę RSI o bezpośrednie sterowanie przekaźnikami, które obsługują roletę.
Czyli tak jak piszesz RS do niczego nie jest mi potrzebne.
Zobacz co napisałem wyżej, bo wygląda ze nie widziałeś wpis edytowany/rozszerzony.
User avatar
klew
Posts: 13911
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 135 times
Been thanked: 137 times

Post

Skąd wziąłeś to addChannelElement?
Najlepsze suple dla Twojego domu :mrgreen:
wladziu22
Posts: 36
Joined: Sat Dec 02, 2023 4:40 pm

Post

hmm faktycznie nie ma jak patrze w kod pod tagiem v25.2. Coś źle wyszukałem na źródłach/google. Teraz widzę ze kanał jest tworzony podczas wywolania

Code: Select all

protected:
  Channel channel;
w hederze :

Code: Select all

class ChannelElement : public ElementWithChannelActions {
 public:
  explicit ChannelElement(int channelNumber = -1);
  Channel *getChannel() override;
  const Channel *getChannel() const override;

 protected:
  Channel channel;
};
czyli jak rozumiem kod C++ to wywoływany jest konstruktor z klasy

Code: Select all

class Channel : public LocalAction { 
User avatar
klew
Posts: 13911
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 135 times
Been thanked: 137 times

Post

Tak. Konstruktory są wywoływane w trakcie tworzenia obiektu
Najlepsze suple dla Twojego domu :mrgreen:
wladziu22
Posts: 36
Joined: Sat Dec 02, 2023 4:40 pm

Post

Dobra to już (powoli) łapie ten C++ ;) Pokoduje co nieco i potestuje to sie odezwe co z tego wyszlo.
.. i dziękuje za podpowiedzi.

Return to “Ogólna dyskusja”