Witam
od kilku dni walczę ze zmianą kodu sonoff socket, chcę żeby po połączeniu z serwerem dioda statusu zamiast świecić sygnalizowała stan przekaźnika.
Na początek chciałem aby dioda po połączeniu z serwerem zgasła
zmiany dokonuję w pliku supla_esp_gpio.c
w sekcji "supla_esp_gpio_state_connected(void)"
supla_esp_gpio_set_led(0, 0, 0); zmieniam na 1 ale dioda dalej świeci dałem nawet : gpio_output_set(0, GPIO_ID_PIN(LED_RED_PORT), GPIO_ID_PIN(LED_RED_PORT), 0); i to samo
Nie wiem czy dobrze kombinuję
czy mogę prosić o pomoc ?
Pozdrawiam
Krzysiek
modyfikacja kodu sonoff socket
-
kris.sg
- Posts: 482
- Joined: Mon Aug 07, 2017 8:08 pm
- Location: Przezchlebie
- Has thanked: 1 time
- Been thanked: 1 time
■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
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
-
kris.sg
- Posts: 482
- Joined: Mon Aug 07, 2017 8:08 pm
- Location: Przezchlebie
- Has thanked: 1 time
- Been thanked: 1 time
ciąg dalszy walki z kodem
zrobiłem to w ten sposób:
sonoff_socket.c:
niestety dioda nie reaguje na zmianę kanału próbowałem też:
też nie pomaga
będę wdzięczny za pomoc
zrobiłem to w ten sposób:
Code: Select all
sonoff_socket.h:
#ifndef SONOFF_SOCKET_H_
#define SONOFF_SOCKET_H_
#define ESP8266_SUPLA_PROTO_VERSION 7
#define LED_RED_PORT 13
void supla_esp_board_send_channel_values_with_delay(void *srpc);
void supla_esp_board_gpiooutput_set_hi(uint8 port, uint8 hi);
uint8 supla_esp_board_gpio_output_is_hi(uint8 port);
#define BOARD_GPIO_OUTPUT_SET_HI if ( port >= 12 ) { supla_esp_board_gpiooutput_set_hi(port, hi); return; };
#define BOARD_GPIO_OUTPUT_IS_HI if ( port >= 12 ) return supla_esp_board_gpio_output_is_hi(port);
#endif
Code: Select all
#define B_RELAY1_PORT 12
#define B_CFG_PORT 0
void supla_esp_board_set_device_name(char *buffer, uint8 buffer_size) {
ets_snprintf(buffer, buffer_size, "GNIAZDKO NEO");
}
void supla_esp_board_gpio_init(void) {
supla_input_cfg[0].type = INPUT_TYPE_BTN_MONOSTABLE;
supla_input_cfg[0].gpio_id = B_CFG_PORT;
supla_input_cfg[0].flags = INPUT_FLAG_PULLUP | INPUT_FLAG_CFG_BTN;
supla_input_cfg[0].relay_gpio_id = B_RELAY1_PORT;
supla_input_cfg[0].channel = 0;
// ---------------------------------------
// ---------------------------------------
supla_relay_cfg[0].gpio_id = B_RELAY1_PORT;
supla_relay_cfg[0].flags = RELAY_FLAG_RESTORE_FORCE;
supla_relay_cfg[0].channel = 0;
}
void supla_esp_board_set_channels(TDS_SuplaDeviceChannel_B *channels, unsigned char *channel_count) {
*channel_count = 1;
channels[0].Number = 0;
channels[0].Type = SUPLA_CHANNELTYPE_RELAY;
channels[0].FuncList = SUPLA_BIT_RELAYFUNC_POWERSWITCH \
| SUPLA_BIT_RELAYFUNC_LIGHTSWITCH;
channels[0].Default = SUPLA_CHANNELFNC_POWERSWITCH;
channels[0].value[0] = supla_esp_gpio_relay_on(B_RELAY1_PORT);
}
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));
}
void supla_esp_board_gpiooutput_set_hi(uint8 port, uint8 hi) {
supla_esp_gpio_set_led(hi, 0, 0);
} Code: Select all
uint8 supla_esp_board_gpio_output_is_hi(uint8 port) {
supla_esp_gpio_set_led(hi, 0, 0);
return 0;
} będę wdzięczny za pomoc
■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
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
-
pzygmunt
- Posts: 20302
- Joined: Tue Jan 19, 2016 9:26 am
- Location: Paczków
- Been thanked: 59 times
Wystarczy Ci tylko to....teoretycznie 
Code: Select all
#define BOARD_GPIO_OUTPUT_SET_HI
if ( port == LED_RED_PORT && supla_last_state == STATE_CONNECTED) { \
hi = supla_esp_gpio_output_is_hi(RELAY_PORT); \
};
SUPLA.... Nareszcie w domu.
-
kris.sg
- Posts: 482
- Joined: Mon Aug 07, 2017 8:08 pm
- Location: Przezchlebie
- Has thanked: 1 time
- Been thanked: 1 time
zrobiłem to w ten sposób :
plik .c
Dioda dalej świeci z uporem maniaka nie chce gasnąć przy przełączaniu kanału
Jak dobrze zrozumiałem to makro wykonuje powyższy kod w pliku supla_esp_gpio.c w sekcji:
void
supla_esp_gpio_set_hi(int port, char hi)
czyli teoretycznie to powinno działać ale dioda świeci na stałe po połączeniu
gdzie robie błąd ?
plik .c
#define BOARD_GPIO_OUTPUT_SET_HI if ( supla_last_state == STATE_CONNECTED) { \
hi = supla_esp_gpio_output_is_hi(RELAY_PORT); \
supla_esp_gpio_set_led(hi, 0, 0); \
};
Dioda dalej świeci z uporem maniaka nie chce gasnąć przy przełączaniu kanału
Jak dobrze zrozumiałem to makro wykonuje powyższy kod w pliku supla_esp_gpio.c w sekcji:
void
supla_esp_gpio_set_hi(int port, char hi)
czyli teoretycznie to powinno działać ale dioda świeci na stałe po połączeniu
gdzie robie błąd ?
■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
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
-
kris.sg
- Posts: 482
- Joined: Mon Aug 07, 2017 8:08 pm
- Location: Przezchlebie
- Has thanked: 1 time
- Been thanked: 1 time
przemierzyłem płytkę i faktycznie dioda połączona jest przez rezystor do 3,3V.
tylko zastanawia mnie jedna rzecz przy sterowaniu jest raz stan niski raz wysoki to dioda powinna gasnąć tylko odwrotnie.
druga sprawa dioda jest podłączona do gpio 4 czy tutaj nie jest problem
przed połączeniem z serwerem dioda miga jak już się moduł połączy wtedy dioda świeci na stałe
tylko zastanawia mnie jedna rzecz przy sterowaniu jest raz stan niski raz wysoki to dioda powinna gasnąć tylko odwrotnie.
druga sprawa dioda jest podłączona do gpio 4 czy tutaj nie jest problem
przed połączeniem z serwerem dioda miga jak już się moduł połączy wtedy dioda świeci na stałe
■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
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
-
slawek
- Posts: 2685
- Joined: Mon Mar 14, 2016 11:48 pm
- Location: Biała Podlaska
Na pewno chodzi ci o sonoffa? Bo ja zrozumiałem, że chcesz do tego użyć oryginalnej diody sonoffa - a ta jest na GPIO13kris.sg wrote: Sat Nov 10, 2018 9:05 am druga sprawa dioda jest podłączona do gpio 4 czy tutaj nie jest problem
TEORIA jest wtedy gdy wszystko wiemy i nic nie działa
PRAKTYKA jest wtedy gdy wszystko działa a my nie wiemy dlaczego
My łączymy teorię z praktyką czyli nic nie działa i nikt nie wie dlaczego
PRAKTYKA jest wtedy gdy wszystko działa a my nie wiemy dlaczego
My łączymy teorię z praktyką czyli nic nie działa i nikt nie wie dlaczego
-
kris.sg
- Posts: 482
- Joined: Mon Aug 07, 2017 8:08 pm
- Location: Przezchlebie
- Has thanked: 1 time
- Been thanked: 1 time
nie to nie jest sonoff chcę sobie skompilować soft do gniazdka NEO COOLCAM
kompilacja działa tylko chcę mieć sygnalizację stanu przekaźnika na diodzie tylko tyle
dodatkowo w ramach testu skompilowałem sobie softa do sonoffa wybrałem płytkę sonoff i dodałem do pliku .c
i efekt jest ten sam dioda sygnalizuje proces łączenia z serwerem po połączeniu świeci na stałe, zmiana stanu przekaźnika nie zmienia stanu diody
kompilacja działa tylko chcę mieć sygnalizację stanu przekaźnika na diodzie tylko tyle
dodatkowo w ramach testu skompilowałem sobie softa do sonoffa wybrałem płytkę sonoff i dodałem do pliku .c
Code: Select all
#define BOARD_GPIO_OUTPUT_SET_HI if ( supla_last_state == STATE_CONNECTED) { \
hi = supla_esp_gpio_output_is_hi(RELAY_PORT); \
supla_esp_gpio_set_led(hi, 0, 0); \
};
i efekt jest ten sam dioda sygnalizuje proces łączenia z serwerem po połączeniu świeci na stałe, zmiana stanu przekaźnika nie zmienia stanu diody
Last edited by kris.sg on Sat Nov 10, 2018 10:35 am, edited 1 time in total.
■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
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
-
slawek
- Posts: 2685
- Joined: Mon Mar 14, 2016 11:48 pm
- Location: Biała Podlaska
...i dlatego pytamkris.sg wrote: Tue Nov 06, 2018 2:29 pm ciąg dalszy walki z kodem
zrobiłem to w ten sposób:
Code: Select all
sonoff_socket.h: #ifndef SONOFF_SOCKET_H_ #define SONOFF_SOCKET_H_ #define ESP8266_SUPLA_PROTO_VERSION 7 #define LED_RED_PORT 13
TEORIA jest wtedy gdy wszystko wiemy i nic nie działa
PRAKTYKA jest wtedy gdy wszystko działa a my nie wiemy dlaczego
My łączymy teorię z praktyką czyli nic nie działa i nikt nie wie dlaczego
PRAKTYKA jest wtedy gdy wszystko działa a my nie wiemy dlaczego
My łączymy teorię z praktyką czyli nic nie działa i nikt nie wie dlaczego
-
kris.sg
- Posts: 482
- Joined: Mon Aug 07, 2017 8:08 pm
- Location: Przezchlebie
- Has thanked: 1 time
- Been thanked: 1 time
masz rację
sory za zamieszanie w pliku mam ustawione
jak wklejałem kod nie zwróciłem uwagi że jest port domyślny
poniżej zawartość pliku sonoff_socket.c:
i pliku sonoff_socket.h:
sory za zamieszanie w pliku mam ustawione
Code: Select all
#define LED_RED_PORT 4
jak wklejałem kod nie zwróciłem uwagi że jest port domyślny
poniżej zawartość pliku sonoff_socket.c:
Code: Select all
#define B_RELAY1_PORT 12
#define B_CFG_PORT 13
void supla_esp_board_set_device_name(char *buffer, uint8 buffer_size) {
ets_snprintf(buffer, buffer_size, "GNIAZDKO NEO");
}
void supla_esp_board_gpio_init(void) {
supla_input_cfg[0].type = INPUT_TYPE_BTN_MONOSTABLE;
supla_input_cfg[0].gpio_id = B_CFG_PORT;
supla_input_cfg[0].flags = INPUT_FLAG_PULLUP | INPUT_FLAG_CFG_BTN;
supla_input_cfg[0].relay_gpio_id = B_RELAY1_PORT;
supla_input_cfg[0].channel = 0;
// ---------------------------------------
// ---------------------------------------
supla_relay_cfg[0].gpio_id = B_RELAY1_PORT;
supla_relay_cfg[0].flags = RELAY_FLAG_RESTORE_FORCE;
supla_relay_cfg[0].channel = 0;
}
void supla_esp_board_set_channels(TDS_SuplaDeviceChannel_B *channels, unsigned char *channel_count) {
*channel_count = 1;
channels[0].Number = 0;
channels[0].Type = SUPLA_CHANNELTYPE_RELAY;
channels[0].FuncList = SUPLA_BIT_RELAYFUNC_POWERSWITCH \
| SUPLA_BIT_RELAYFUNC_LIGHTSWITCH;
channels[0].Default = SUPLA_CHANNELFNC_POWERSWITCH;
channels[0].value[0] = supla_esp_gpio_relay_on(B_RELAY1_PORT);
}
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));
}
#define BOARD_GPIO_OUTPUT_SET_HI if ( supla_last_state == STATE_CONNECTED) { \
hi = supla_esp_gpio_output_is_hi(12); \
supla_esp_gpio_set_led(hi, 0, 0); \
};
Code: Select all
#ifndef SONOFF_SOCKET_H_
#define SONOFF_SOCKET_H_
#define ESP8266_SUPLA_PROTO_VERSION 7
#define LED_RED_PORT 4
void supla_esp_board_send_channel_values_with_delay(void *srpc);
#endif
■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
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
