Domyślna funkcja kanału

krycha88
Posty: 687
Rejestracja: pt lis 16, 2018 7:25 am

sob gru 07, 2019 5:39 pm

Definiuję sobie celowo tylko jedną funkcję dla kanału czyli SUPLA_BIT_RELAYFUNC_POWERSWITCH pomimo to po zarejestrowaniu urządzenia dla tego kanału nie podpowiada się domyślnie ta funkcja i muszę zawsze ją wybierać ręcznie. W cloudzie widzę tylko jedną funkcję więc dlaczego by jej nie wybierać domyślnie? Dla termometrów funkcja przypisuje się automatycznie, dla wyłącznika czy kanału dla DHT już nie.

Czy jest to ficzer czy błąd? :)
Awatar użytkownika
klew
Posty: 659
Rejestracja: czw cze 27, 2019 12:16 pm

sob gru 07, 2019 6:13 pm

Musisz ustawić na kanale zmienną Default:

Kod: Zaznacz cały

typedef struct {
  // device -> server

  unsigned char Number;
  _supla_int_t Type;

  _supla_int_t FuncList;
  _supla_int_t Default; // <---- o to!
  _supla_int_t Flags;

  char value[SUPLA_CHANNELVALUE_SIZE];
} TDS_SuplaDeviceChannel_C;  // ver. >= 10

Można tam wstawiać wartości stałych zaczynających się od: SUPLA_CHANNELFNC
krycha88
Posty: 687
Rejestracja: pt lis 16, 2018 7:25 am

sob gru 07, 2019 6:51 pm

Bardzo Ci dziękuję, pomogło :)

A powiedz mi jeszcze dlaczego dla DS18B20 mam ustawione tylko:

Kod: Zaznacz cały

Params.reg_dev.channels[c].Type = SUPLA_CHANNELTYPE_THERMOMETERDS18B20;
i on domyślnie dodaje się jako termometr .
Awatar użytkownika
klew
Posty: 659
Rejestracja: czw cze 27, 2019 12:16 pm

sob gru 07, 2019 7:02 pm

krycha88 pisze:
sob gru 07, 2019 6:51 pm
Bardzo Ci dziękuję, pomogło :)

A powiedz mi jeszcze dlaczego dla DS18B20 mam ustawione tylko:

Kod: Zaznacz cały

Params.reg_dev.channels[c].Type = SUPLA_CHANNELTYPE_THERMOMETERDS18B20;
i on domyślnie dodaje się jako termometr .
Też byłem tego ciekaw ;). To jakaś zaszłość historyczna. Po stronie serwera w bazie danych jest jakiś skrypt, który akurat DS'owi ustawia funkcję automatycznie, nawet jeśli nie podasz defaulta w kanale (defaul pojawił sie w nowyszych wersjach protokołu komunikacyjnego)
ODPOWIEDZ