IOT SDK

Awatar użytkownika
klew
Posty: 8184
Rejestracja: czw cze 27, 2019 12:16 pm
Lokalizacja: Wrocław

Kompletnie nie rozumiem po co upieracie się na stare SDK.

Ale ok
Widzimy się na Supla Offline Party vol. 2 :!:
Awatar użytkownika
klew
Posty: 8184
Rejestracja: czw cze 27, 2019 12:16 pm
Lokalizacja: Wrocław

Widzimy się na Supla Offline Party vol. 2 :!:
Awatar użytkownika
kris.sg
Posty: 372
Rejestracja: pn sie 07, 2017 8:08 pm
Lokalizacja: Przezchlebie

Dzięki wielkie, w końcu przejdę na RTOS jak się do edukuję :)
■Rpi4(m.2) Supla Cloud, Scripts ■Rpi3(sd) SD: 6x MI ATC, 1x W.S.
ROLETY_V3 x12 ■SWITCH_DUAL x4 ■GATE_MODULE_V3 x1 ■SOCKET_SSR x1 ■SMOKE_MODULE x1
SONOFF_TOUCH x4 ■YUNSCHAN x1 ■STAITCASE_DIMMER x1 ■MEW-01 x2 ■mROW-02 x1 ■LEW-01 x1
POW_R2 x2 ■SP111 x3
Awatar użytkownika
kris.sg
Posty: 372
Rejestracja: pn sie 07, 2017 8:08 pm
Lokalizacja: Przezchlebie

Mam jeszcze pytanie @klew, próbuję u siebie utworzyć 2 kanały z obsługą AT:
płytka c:

Kod: Zaznacz cały

void supla_esp_board_set_channels(TDS_SuplaDeviceChannel_C *channels,
    unsigned char *channel_count) {

  *channel_count = 4;

  channels[0].Number = 0;
  channels[0].Type = SUPLA_CHANNELTYPE_RELAY;
  channels[0].Flags = SUPLA_CHANNEL_FLAG_CHANNELSTATE;
  channels[0].FuncList = SUPLA_BIT_FUNC_LIGHTSWITCH;
  channels[0].Default = SUPLA_CHANNELFNC_LIGHTSWITCH;
  channels[0].value[0] = supla_esp_gpio_relay_on(B_RELAY1_PORT);
  
  channels[1].Number = 1;
  channels[1].Type = SUPLA_CHANNELTYPE_RELAY;
  channels[1].Flags = SUPLA_CHANNEL_FLAG_CHANNELSTATE;
  channels[1].FuncList = SUPLA_BIT_FUNC_LIGHTSWITCH;
  channels[1].Default = SUPLA_CHANNELFNC_LIGHTSWITCH;
  channels[1].value[0] = supla_esp_gpio_relay_on(B_RELAY2_PORT);

  channels[2].Number = 2;
  channels[2].Type = SUPLA_CHANNELTYPE_ACTIONTRIGGER;
  channels[2].FuncList = SUPLA_CHANNELFNC_ACTIONTRIGGER;
  channels[2].Default = SUPLA_CHANNELFNC_ACTIONTRIGGER;
  channels[2].ActionTriggerCaps = supla_input_cfg[0].action_trigger_cap;
  channels[2].Flags = SUPLA_CHANNEL_FLAG_CHANNELSTATE;
  channels[2].actionTriggerProperties.relatedChannelNumber = 1;
  channels[2].actionTriggerProperties.disablesLocalOperation =
    SUPLA_ACTION_CAP_TOGGLE_x1 | SUPLA_ACTION_CAP_SHORT_PRESS_x1;
	
  channels[3].Number = 3;
  channels[3].Type = SUPLA_CHANNELTYPE_ACTIONTRIGGER;
  channels[3].FuncList = SUPLA_CHANNELFNC_ACTIONTRIGGER;
  channels[3].Default = SUPLA_CHANNELFNC_ACTIONTRIGGER;
  channels[3].ActionTriggerCaps = supla_input_cfg[1].action_trigger_cap;
  channels[3].Flags = SUPLA_CHANNEL_FLAG_CHANNELSTATE;
  channels[3].actionTriggerProperties.relatedChannelNumber = 2;
  channels[3].actionTriggerProperties.disablesLocalOperation =
    SUPLA_ACTION_CAP_TOGGLE_x1 | SUPLA_ACTION_CAP_SHORT_PRESS_x1;

}

void supla_esp_board_send_channel_values_with_delay(void *srpc) {
  supla_esp_channel_value_changed(0, supla_esp_gpio_relay_on(B_RELAY1_PORT));
  supla_esp_channel_value_changed(1, supla_esp_gpio_relay_on(B_RELAY2_PORT));
}
plytka h:

Kod: Zaznacz cały

#define ESP8266_SUPLA_PROTO_VERSION 16
#define B_RELAY1_PORT	 5
#define B_RELAY2_PORT    13
#define B_BTN1_PORT		 14
#define B_BTN2_PORT      12
#define RETREIVE_CHANNEL_CONFIG 0b1100


#define LED_RED_PORT    4

void supla_esp_board_send_channel_values_with_delay(void *srpc);
Defincja RETREIVE_CHANNEL_CONFIG ustawiona na kanał 2 i 3.
Po zarejestrowaniu w cloudzie są dwa kanały z obsługą AT, ale widzę w logach, że serwer wysyła konfigurację tylko dla kanału 2, dla kanału 3 konfiguracja nie jest przesyłana:

Kod: Zaznacz cały

15:56:23.065 -> Channel config received: ch 2, func 700, cfgtype 0, cfgsize 4
15:56:23.065 -> Config result channel = 2
15:56:23.065 -> sizeof(TSD_ChannelConfig_ActionTrigger) = 4
15:56:23.065 -> Config result i = 0, result channel = 2
15:56:23.065 -> input 14, flags 3, max clicks 0, active 4096
15:56:23.065 -> Set active action channel = 2 ,active action = 4096
Czy implementacja AT dla dwóch kanałów wygląda inaczej ?
■Rpi4(m.2) Supla Cloud, Scripts ■Rpi3(sd) SD: 6x MI ATC, 1x W.S.
ROLETY_V3 x12 ■SWITCH_DUAL x4 ■GATE_MODULE_V3 x1 ■SOCKET_SSR x1 ■SMOKE_MODULE x1
SONOFF_TOUCH x4 ■YUNSCHAN x1 ■STAITCASE_DIMMER x1 ■MEW-01 x2 ■mROW-02 x1 ■LEW-01 x1
POW_R2 x2 ■SP111 x3
elmaya
Posty: 1482
Rejestracja: śr cze 27, 2018 5:48 pm
Lokalizacja: El Saucejo - Sevilla

what's this?

Kod: Zaznacz cały

channels[3].actionTriggerProperties.relatedChannelNumber = 2;
it should not be:

Kod: Zaznacz cały

channels[2].actionTriggerProperties.relatedChannelNumber = 0;
channels[3].actionTriggerProperties.relatedChannelNumber = 1;
Awatar użytkownika
kris.sg
Posty: 372
Rejestracja: pn sie 07, 2017 8:08 pm
Lokalizacja: Przezchlebie

@elmaya in proto.h :

Kod: Zaznacz cały

typedef struct {
  unsigned char relatedChannelNumber;  // ChannelNumber + 1.
  unsigned _supla_int_t disablesLocalOperation;
} TActionTriggerProperties;
that is correct
■Rpi4(m.2) Supla Cloud, Scripts ■Rpi3(sd) SD: 6x MI ATC, 1x W.S.
ROLETY_V3 x12 ■SWITCH_DUAL x4 ■GATE_MODULE_V3 x1 ■SOCKET_SSR x1 ■SMOKE_MODULE x1
SONOFF_TOUCH x4 ■YUNSCHAN x1 ■STAITCASE_DIMMER x1 ■MEW-01 x2 ■mROW-02 x1 ■LEW-01 x1
POW_R2 x2 ■SP111 x3
Awatar użytkownika
klew
Posty: 8184
Rejestracja: czw cze 27, 2019 12:16 pm
Lokalizacja: Wrocław

kris.sg pisze: sob mar 05, 2022 3:04 pm Czy implementacja AT dla dwóch kanałów wygląda inaczej ?
Kod wygląda ok. Pokażesz jeszcze jak zdefiniowałeś supla_input_cfg[1] ?
Widzimy się na Supla Offline Party vol. 2 :!:
Awatar użytkownika
kris.sg
Posty: 372
Rejestracja: pn sie 07, 2017 8:08 pm
Lokalizacja: Przezchlebie

Kod: Zaznacz cały

supla_input_cfg[1].gpio_id = B_BTN2_PORT;
  supla_input_cfg[1].flags = INPUT_FLAG_PULLUP | INPUT_FLAG_CFG_BTN;
  supla_input_cfg[1].relay_gpio_id = B_RELAY2_PORT;
  supla_input_cfg[1].channel = 3;
  supla_input_cfg[1].type = INPUT_TYPE_BTN_MONOSTABLE;
  supla_input_cfg[1].action_trigger_cap =
      SUPLA_ACTION_CAP_HOLD |
      SUPLA_ACTION_CAP_SHORT_PRESS_x1 |
      SUPLA_ACTION_CAP_SHORT_PRESS_x2 |
      SUPLA_ACTION_CAP_SHORT_PRESS_x3 |
      SUPLA_ACTION_CAP_SHORT_PRESS_x4 |
      SUPLA_ACTION_CAP_SHORT_PRESS_x5;
■Rpi4(m.2) Supla Cloud, Scripts ■Rpi3(sd) SD: 6x MI ATC, 1x W.S.
ROLETY_V3 x12 ■SWITCH_DUAL x4 ■GATE_MODULE_V3 x1 ■SOCKET_SSR x1 ■SMOKE_MODULE x1
SONOFF_TOUCH x4 ■YUNSCHAN x1 ■STAITCASE_DIMMER x1 ■MEW-01 x2 ■mROW-02 x1 ■LEW-01 x1
POW_R2 x2 ■SP111 x3
Awatar użytkownika
klew
Posty: 8184
Rejestracja: czw cze 27, 2019 12:16 pm
Lokalizacja: Wrocław

Wygląda ok.
Na serwerze się kanał AT pokazał drugi? Próbowałeś coś tam ustawić?
Serwer prywatny czy publiczny?
Widzimy się na Supla Offline Party vol. 2 :!:
Awatar użytkownika
kris.sg
Posty: 372
Rejestracja: pn sie 07, 2017 8:08 pm
Lokalizacja: Przezchlebie

Serwer prywatny, najnowsza wersja.
Po rejestracji urządzenia są dwa kanały z funkcją AT, gdy ustawię akcję dla pierwszego kanału:

Kod: Zaznacz cały

09:58:49.750 -> Registered and ready.
09:58:49.750 -> Free heap size: 18208
09:58:49.750 -> supla_esp_check_updates
09:58:49.750 -> GetChannelConfigRequest: 1
09:58:49.750 -> GetChannelConfigRequest: 2
09:58:49.750 -> GetChannelConfigRequest: 4
09:58:49.750 -> ChannelConfigRequested: 2
09:58:49.750 -> GetChannelConfigRequest: 8
09:58:49.750 -> ChannelConfigRequested: 3
09:58:49.795 -> GetChannelConfigRequest: 16
09:58:49.795 -> GetChannelConfigRequest: 32
09:58:49.795 -> GetChannelConfigRequest: 64
09:58:49.795 -> GetChannelConfigRequest: 128
09:58:49.795 -> Channel config received: ch 2, func 700, cfgtype 0, cfgsize 4
09:58:49.795 -> Config result channel = 2
09:58:49.795 -> sizeof(TSD_ChannelConfig_ActionTrigger) = 4
09:58:49.840 -> Config result i = 0, result channel = 2
09:58:49.840 -> input 14, flags 3, max clicks 0, active 4096
09:58:49.840 -> Set active action channel = 2 ,active action = 4096
09:58:49.840 -> Config result i = 1, result channel = 2
09:58:49.840 -> Config result i = 2, result channel = 2
09:58:49.840 -> Config result i = 3, result channel = 2
09:58:49.840 -> Config result i = 4, result channel = 2
09:58:49.840 -> Config result i = 5, result channel = 2
09:58:49.885 -> Config result i = 6, result channel = 2
09:58:50.516 -> pm open,type:2 0
Po ustawieniu akcji na drugim kanale:

Kod: Zaznacz cały

09:59:25.971 -> Registered and ready.
09:59:25.971 -> Free heap size: 18208
09:59:25.971 -> supla_esp_check_updates
09:59:25.971 -> GetChannelConfigRequest: 1
09:59:25.971 -> GetChannelConfigRequest: 2
09:59:25.971 -> GetChannelConfigRequest: 4
09:59:25.971 -> ChannelConfigRequested: 2
09:59:26.016 -> GetChannelConfigRequest: 8
09:59:26.016 -> ChannelConfigRequested: 3
09:59:26.016 -> GetChannelConfigRequest: 16
09:59:26.016 -> GetChannelConfigRequest: 32
09:59:26.016 -> GetChannelConfigRequest: 64
09:59:26.016 -> GetChannelConfigRequest: 128
09:59:26.016 -> Channel config received: ch 2, func 700, cfgtype 0, cfgsize 4
09:59:26.016 -> Config result channel = 2
09:59:26.061 -> sizeof(TSD_ChannelConfig_ActionTrigger) = 4
09:59:26.061 -> Config result i = 0, result channel = 2
09:59:26.061 -> input 14, flags 3, max clicks 0, active 4096
09:59:26.061 -> Set active action channel = 2 ,active action = 4096
09:59:26.061 -> Config result i = 1, result channel = 2
09:59:26.061 -> Config result i = 2, result channel = 2
09:59:26.061 -> Config result i = 3, result channel = 2
09:59:26.108 -> Config result i = 4, result channel = 2
09:59:26.108 -> Config result i = 5, result channel = 2
09:59:26.108 -> Config result i = 6, result channel = 2
09:59:26.972 -> supla_esp_gpio_set_hi 4, 0
09:59:27.110 -> pm open,type:2 0
Gdy wykonam akcję na pierwszym kanale to jest ok :

Kod: Zaznacz cały

0:03:44.218 -> INTR(b) a=0
10:03:44.218 -> gpio_status=16384
10:03:44.264 -> gpio_id=14
10:03:44.355 -> notify input 14 change: 1
10:03:44.402 -> INTR(b) a=0
10:03:44.402 -> gpio_status=16384
10:03:44.402 -> gpio_id=14
10:03:44.539 -> notify input 14 change: 0
10:03:44.631 -> INTR(b) a=0
10:03:44.631 -> gpio_status=16384
10:03:44.631 -> gpio_id=14
10:03:44.769 -> notify input 14 change: 1
10:03:44.769 -> INTR(b) a=0
10:03:44.769 -> gpio_status=16384
10:03:44.769 -> gpio_id=14
10:03:44.905 -> notify input 14 change: 0
10:03:44.905 -> Input[ch: 2] sending action trigger (1 << 12)
10:03:44.905 -> AT ch = 2, at = 4096
10:03:44.950 -> supla_esp_channel_set_value: sender 0, channel 1, duration 0, value[7-0]  0  0  0  0  0  0  0  1
10:03:44.950 -> port=13, hi=1, save_before=1
10:03:44.996 -> STATE WRITE SUCCESS
10:03:44.996 -> supla_esp_gpio_set_hi 13, 1
10:03:44.996 -> supla_esp_gpio_set_hi 13, 1
10:03:44.996 -> supla_esp_channel_value_changed(1, 1)
10:03:46.040 -> STATE WRITE SUCCESS
Natomiast na drugim kanale (ustawiona akcja na serwerze) nic się nie dzieje:

Kod: Zaznacz cały

10:04:46.348 -> INTR(b) a=1
10:04:46.348 -> gpio_status=4096
10:04:46.348 -> gpio_id=12
10:04:46.484 -> notify input 12 change: 1
10:04:46.484 -> active
10:04:46.531 -> INTR(b) a=1
10:04:46.531 -> gpio_status=4096
10:04:46.531 -> gpio_id=12
10:04:46.531 -> INTR(b) a=1
10:04:46.531 -> gpio_status=4096
10:04:46.531 -> gpio_id=12
10:04:46.666 -> notify input 12 change: 0
10:04:46.666 -> inactive
10:04:46.666 -> !INPUT_FLAG_TRIGGER_ON_PRESS inactive
10:04:46.666 -> port=13, hi=0, save_before=0
10:04:46.666 -> supla_esp_gpio_set_hi 13, 0
10:04:46.666 -> supla_esp_gpio_set_hi 13, 0
10:04:46.666 -> supla_esp_channel_value_changed(1, 0)
10:04:46.756 -> INTR(b) a=1
10:04:46.756 -> gpio_status=4096
10:04:46.756 -> gpio_id=12
10:04:46.893 -> notify input 12 change: 1
10:04:46.893 -> active
10:04:46.939 -> INTR(b) a=1
10:04:46.939 -> gpio_status=4096
10:04:46.939 -> gpio_id=12
10:04:47.031 -> notify input 12 change: 0
10:04:47.031 -> inactive
10:04:47.076 -> !INPUT_FLAG_TRIGGER_ON_PRESS inactive
10:04:47.076 -> port=13, hi=1, save_before=0
10:04:47.076 -> supla_esp_gpio_set_hi 13, 1
10:04:47.076 -> supla_esp_gpio_set_hi 13, 1
10:04:47.076 -> supla_esp_channel_value_changed(1, 1)
10:04:48.114 -> STATE WRITE SUCCESS
■Rpi4(m.2) Supla Cloud, Scripts ■Rpi3(sd) SD: 6x MI ATC, 1x W.S.
ROLETY_V3 x12 ■SWITCH_DUAL x4 ■GATE_MODULE_V3 x1 ■SOCKET_SSR x1 ■SMOKE_MODULE x1
SONOFF_TOUCH x4 ■YUNSCHAN x1 ■STAITCASE_DIMMER x1 ■MEW-01 x2 ■mROW-02 x1 ■LEW-01 x1
POW_R2 x2 ■SP111 x3
ODPOWIEDZ

Wróć do „Zagadnienia ogólne”