Modyfikacja WiFiGateModule

Grzesiekb
Posts: 35
Joined: Wed Mar 27, 2019 9:06 pm

Post

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.
User avatar
Espablo
Posts: 1754
Joined: Wed Jun 29, 2016 5:04 pm
Location: Oświęcim

Post

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
Posts: 35
Joined: Wed Mar 27, 2019 9:06 pm

Post

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.
You do not have the required permissions to view the files attached to this post.
Last edited by Grzesiekb on Tue Apr 02, 2019 2:06 pm, edited 1 time in total.
User avatar
pzygmunt
Posts: 20302
Joined: Tue Jan 19, 2016 9:26 am
Location: Paczków
Been thanked: 59 times

Post

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ć.
SUPLA.... Nareszcie w domu.
Grzesiekb
Posts: 35
Joined: Wed Mar 27, 2019 9:06 pm

Post

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?
User avatar
pzygmunt
Posts: 20302
Joined: Tue Jan 19, 2016 9:26 am
Location: Paczków
Been thanked: 59 times

Post

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.
SUPLA.... Nareszcie w domu.
Grzesiekb
Posts: 35
Joined: Wed Mar 27, 2019 9:06 pm

Post

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

Code: Select all

#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.
User avatar
pzygmunt
Posts: 20302
Joined: Tue Jan 19, 2016 9:26 am
Location: Paczków
Been thanked: 59 times

Post

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ę.
SUPLA.... Nareszcie w domu.
Grzesiekb
Posts: 35
Joined: Wed Mar 27, 2019 9:06 pm

Post

Zrobiłem pull request.
User avatar
pzygmunt
Posts: 20302
Joined: Tue Jan 19, 2016 9:26 am
Location: Paczków
Been thanked: 59 times

Post

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

Return to “Pomoc”