Witam. Czy jest możliwa modyfikacja WiFiGateModule tak aby dodać jeszcze jeden przekaźnik ale do sterowania urządzenia na zasadzie włącz wyłącz. W esp8622 są jeszcze wolne gpio i sprzętowo jest to wykonalne, ale od strony programowej czy jest to bardzo skomplikowane?
Zależy mi na takim rozwiązaniu gdyż nad furtka jest lampka i fajnie by było nie dodawać kolejnego esp tylko dlatego żeby zapalić lampkę ręcznie czy też z harmonogramu.
Modyfikacja WiFiGateModule
Wgraj sobie inCan lub inCan-Easy będziesz miał jeszcze dodatkowy pomiar temperatury
Każde urządzenie elektryczne działa o wiele lepiej jeśli podłączysz je do prądu.
Espablo serdecznie ci dziękuje za pomoc naprawdę twoje kompilacje są super i na pewno skorzystam,
lecz szukam dokładnie czegoś co zadziała w takiej konfiguracji pinów :
RELAY_1 = GPIO4
RELAY_2 = GPIO13
RELAY_3 = GPIO16
BUTTON_CONFIG (5s) = GPIO5
SENSOR_1 = GPI12
SENSOR_2 = GPI14
DS18B20, DHT11, DHT22 = GPIO2
Ponieważ zaprojektowałem płytkę pcb i opierałem się na wyprowadzeniach " WiFiGateModule" jedyne czego brakło mi do szczęścia to przekaźnik na GPIO16 sterowany włącz/wyłącz, zależy mi bo płytki są już zamówione .
Dotychczas wszystkie projekty bazowały na arduino, ale supla bardzo minie zaciekawiła niestety esp kompilowałem na arduino ide pod inną aplikacje i nie bardzo wiem od czego zacząć, nie wiem czy taka modyfikacja wymaga zmian na serwerze czy tylko w pliku wsadowym do esp, no i które pliki oraz czym kompilować. Po prostu temat jest dla mnie całkiem nowy.
lecz szukam dokładnie czegoś co zadziała w takiej konfiguracji pinów :
RELAY_1 = GPIO4
RELAY_2 = GPIO13
RELAY_3 = GPIO16
BUTTON_CONFIG (5s) = GPIO5
SENSOR_1 = GPI12
SENSOR_2 = GPI14
DS18B20, DHT11, DHT22 = GPIO2
Ponieważ zaprojektowałem płytkę pcb i opierałem się na wyprowadzeniach " WiFiGateModule" jedyne czego brakło mi do szczęścia to przekaźnik na GPIO16 sterowany włącz/wyłącz, zależy mi bo płytki są już zamówione .
Dotychczas wszystkie projekty bazowały na arduino, ale supla bardzo minie zaciekawiła niestety esp kompilowałem na arduino ide pod inną aplikacje i nie bardzo wiem od czego zacząć, nie wiem czy taka modyfikacja wymaga zmian na serwerze czy tylko w pliku wsadowym do esp, no i które pliki oraz czym kompilować. Po prostu temat jest dla mnie całkiem nowy.
- Załączniki
-
- PCB_04.JPG (148.93 KiB) Przejrzano 3578 razy
Ostatnio zmieniony wt kwie 02, 2019 2:06 pm przez Grzesiekb, łącznie zmieniany 1 raz.
Możesz sobie środowisko do kompilacji odpalić w kontenerze.
https://github.com/SUPLA/supla-docker/tree/espressif
./build.sh a następnie ./run.sh
Definicje płytek są tutaj:
https://github.com/SUPLA/supla-espressi ... lude/board
Po stronie serwera nic nie musisz zmieniać.
https://github.com/SUPLA/supla-docker/tree/espressif
./build.sh a następnie ./run.sh
Definicje płytek są tutaj:
https://github.com/SUPLA/supla-espressi ... lude/board
Po stronie serwera nic nie musisz zmieniać.
bardzo dziękuje za podpowiedź, kod mam już gotowy tylko skompilować i sprawdzić
Nie bardzo rozumiem nie miałem z tym odczynienia, czy gdzieś na forum mogę się dowiedzieć coś więcej o tej metodzie?Możesz sobie środowisko do kompilacji odpalić w kontenerze.
Instalujesz dockera i budujesz kontener. Zerknij do skryptów które wskazałem powyżej. Możesz też użyć wirtuala gdzie jest przygotowane środowisko.
Widzę że będę się musiał nagłowić żeby skompilować pliki dla ESP, wiec jeśli można czy ktoś jest w stanie sprawdzić czy dobrze naniosłem zmiany w kodzie dla ułatwienia to co zmieniłem poprzedzam dwoma pytajnikami.
Chce mieć pewność ze dalsze poświęcanie czasu ma sens
Chce mieć pewność ze dalsze poświęcanie czasu ma sens
Kod: Zaznacz cały
#include "supla_esp.h"
#include "supla_dht.h"
#include "supla_ds18b20.h"
#define B_CFG_PORT 5
#define B_RELAY1_PORT 4
#define B_RELAY2_PORT 13
?? #define B_RELAY3_PORT 16
#define B_SENSOR_PORT1 12
#define B_SENSOR_PORT2 14
void ICACHE_FLASH_ATTR supla_esp_board_set_device_name(char *buffer, uint8 buffer_size) {
ets_snprintf(buffer, buffer_size, "SUPLA-GATE-MODULE");
}
void ICACHE_FLASH_ATTR supla_esp_board_gpio_init(void) {
supla_input_cfg[0].type = supla_esp_cfg.CfgButtonType == BTN_TYPE_BISTABLE ? INPUT_TYPE_BTN_BISTABLE : 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[1].type = INPUT_TYPE_SENSOR;
supla_input_cfg[1].gpio_id = B_SENSOR_PORT1;
supla_input_cfg[1].channel = 2;
supla_input_cfg[2].type = INPUT_TYPE_SENSOR;
supla_input_cfg[2].gpio_id = B_SENSOR_PORT2;
supla_input_cfg[2].channel = 3;
// ---------------------------------------
// ---------------------------------------
supla_relay_cfg[0].gpio_id = B_RELAY1_PORT;
supla_relay_cfg[0].flags = RELAY_FLAG_RESET;
supla_relay_cfg[0].channel = 0;
supla_relay_cfg[1].gpio_id = B_RELAY2_PORT;
supla_relay_cfg[1].flags = RELAY_FLAG_RESET;
supla_relay_cfg[1].channel = 1;
?? supla_relay_cfg[2].gpio_id = B_RELAY3_PORT;
?? supla_relay_cfg[2].flags = RELAY_FLAG_RESET;
?? supla_relay_cfg[2].channel = 5;
}
void ICACHE_FLASH_ATTR supla_esp_board_set_channels(TDS_SuplaDeviceChannel_B *channels, unsigned char *channel_count) {
?? *channel_count = 6;
channels[0].Number = 0;
channels[0].Type = SUPLA_CHANNELTYPE_RELAY;
channels[0].FuncList = SUPLA_BIT_RELAYFUNC_CONTROLLINGTHEGATEWAYLOCK \
| SUPLA_BIT_RELAYFUNC_CONTROLLINGTHEGATE \
| SUPLA_BIT_RELAYFUNC_CONTROLLINGTHEGARAGEDOOR \
| SUPLA_BIT_RELAYFUNC_CONTROLLINGTHEDOORLOCK;
channels[0].Default = 0;
channels[0].value[0] = supla_esp_gpio_relay_on(B_RELAY1_PORT);
channels[1].Number = 1;
channels[1].Type = channels[0].Type;
channels[1].FuncList = channels[0].FuncList;
channels[1].Default = channels[0].Default;
channels[1].value[0] = supla_esp_gpio_relay_on(B_RELAY2_PORT);
?? channels[5].Type = SUPLA_CHANNELTYPE_RELAY;
?? channels[5].FuncList = SUPLA_BIT_RELAYFUNC_POWERSWITCH \
?? | SUPLA_BIT_RELAYFUNC_LIGHTSWITCH;
?? channels[5].Default = SUPLA_CHANNELFNC_POWERSWITCH;
?? channels[5].value[0] = supla_esp_gpio_relay_on(B_RELAY3_PORT);
channels[2].Number = 2;
channels[2].Type = SUPLA_CHANNELTYPE_SENSORNO;
channels[2].FuncList = 0;
channels[2].Default = 0;
channels[2].value[0] = 0;
channels[3].Number = 3;
channels[3].Type = SUPLA_CHANNELTYPE_SENSORNO;
channels[3].FuncList = 0;
channels[3].Default = 0;
channels[3].value[0] = 0;
channels[4].Number = 4;
#if defined(__BOARD_gate_module_dht11)
channels[4].Type = SUPLA_CHANNELTYPE_DHT11;
#elif defined(__BOARD_gate_module_dht22)
channels[4].Type = SUPLA_CHANNELTYPE_DHT22;
#else
channels[4].Type = SUPLA_CHANNELTYPE_THERMOMETERDS18B20;
#endif
channels[4].FuncList = 0;
channels[4].Default = 0;
#if defined(__BOARD_gate_module_dht11) || defined(__BOARD_gate_module_dht22)
supla_get_temp_and_humidity(channels[4].value);
#else
supla_get_temperature(channels[4].value);
#endif
}
void ICACHE_FLASH_ATTR supla_esp_board_send_channel_values_with_delay(void *srpc) {
supla_esp_channel_value_changed(2, gpio__input_get(B_SENSOR_PORT1));
supla_esp_channel_value_changed(3, gpio__input_get(B_SENSOR_PORT2));
}
© 2019 GitHub, Inc.
diff-a wrzuć, a najlepiej zrób fork-a na githubie i zacommituj swoje zmiany to będzie od razu widać co i gdzie pozmieniałeś.
Obecnie mogłeś coś pominąć, a nie mam obecnie na tyle wolnego czasu aby sprawdzić każdą linijkę.
Obecnie mogłeś coś pominąć, a nie mam obecnie na tyle wolnego czasu aby sprawdzić każdą linijkę.
To nie miał być pull request (zresztą nie widzę żadnego).
Zwykły commit.
Wrzuć linka do Twojego forka
Zwykły commit.
Wrzuć linka do Twojego forka