Modyfikacja WiFiGateModule

Grzesiekb
Posty: 35
Rejestracja: śr mar 27, 2019 9:06 pm

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.
Awatar użytkownika
Espablo
Posty: 1754
Rejestracja: śr cze 29, 2016 5:04 pm
Lokalizacja: Oświęcim
Kontakt:

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. :? :roll:
Grzesiekb
Posty: 35
Rejestracja: śr mar 27, 2019 9:06 pm

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.
Załączniki
PCB_04.JPG
PCB_04.JPG (148.93 KiB) Przejrzano 3581 razy
Ostatnio zmieniony wt kwie 02, 2019 2:06 pm przez Grzesiekb, łącznie zmieniany 1 raz.
Awatar użytkownika
pzygmunt
Posty: 18280
Rejestracja: wt sty 19, 2016 9:26 am
Lokalizacja: Paczków
Kontakt:

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ć.
Grzesiekb
Posty: 35
Rejestracja: śr mar 27, 2019 9:06 pm

bardzo dziękuje za podpowiedź, kod mam już gotowy tylko skompilować i sprawdzić
Możesz sobie środowisko do kompilacji odpalić w kontenerze.
Nie bardzo rozumiem nie miałem z tym odczynienia, czy gdzieś na forum mogę się dowiedzieć coś więcej o tej metodzie?
Awatar użytkownika
pzygmunt
Posty: 18280
Rejestracja: wt sty 19, 2016 9:26 am
Lokalizacja: Paczków
Kontakt:

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.
Grzesiekb
Posty: 35
Rejestracja: śr mar 27, 2019 9:06 pm

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

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.
Awatar użytkownika
pzygmunt
Posty: 18280
Rejestracja: wt sty 19, 2016 9:26 am
Lokalizacja: Paczków
Kontakt:

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ę.
Grzesiekb
Posty: 35
Rejestracja: śr mar 27, 2019 9:06 pm

Zrobiłem pull request.
Awatar użytkownika
pzygmunt
Posty: 18280
Rejestracja: wt sty 19, 2016 9:26 am
Lokalizacja: Paczków
Kontakt:

To nie miał być pull request (zresztą nie widzę żadnego).
Zwykły commit.
Wrzuć linka do Twojego forka
ODPOWIEDZ

Wróć do „Pomoc”