firmware do esp - czy taka zmiana jest możliwa?

Post Reply
User avatar
lesny8
Posts: 823
Joined: Mon Dec 11, 2017 9:43 pm

Tue Dec 19, 2017 12:33 pm

Witam wszystkich serdecznie

Jestem świeży w temacie, ale pełen zapału żeby zrealizować co narodziło się w mej głowie niespełna miesiąc temu po przypadkowym natrafieniu na projekt SUPLA.

Na wstępie wielki szacun za pracę jaką tu wkładacie, dzięki czemu możemy cieszyć się jak dzieci sterując sprzętami w naszych domach będąc zupełnie gdzie indziej, albo siedząc na kanapie.

Ciężko przeczytać wszystkie posty w kilka dni, a może raczej nocy, wiele spraw już jest rozwiązanych lub nieaktualnych, dlatego zdecydowałem się założyć nowy wątek i zapytać, co i jak i czy to możliwe?

Posiadam Supla Cloud na malinie i kilka urządzeń wykonawczych tj. ROW-02 Zamela i moduł inCan od @espablo przez siebie zmontowany, który aktualnie testuję sobie pod następne sprzęty.
Wczoraj przyszły mi łączniki zwierne, bo irytowała mnie sytuacja gdzie jeden klawisz piał do góry a drugi do dołu przy zgaszonym świetle i zamontowałem je na miejscu starych łączników.
Zmieniłem ustawienia ROW-02 dla działania buttonów z trybu bistabilnego na monostabilny, zapisałem zmiany i działa no ale...
A no właśnie czy zawsze musi być jakieś ale?
Na początku nie zajarzyłem, czemu się tak dzieje, ale przetestowałem na inCan i jest tak samo więc postawiłem na problem w firmware.
Zacząłem myśleć, szukać, czytać, rozgryzać źródła, ale na razie za cienki jestem dlatego proszę o pomoc i wskazówki.

Do sedna.
Dlaczego w trybie monostabilnym przekaźnik załączający obwód uruchamiany jest w momencie rozwarcia styku a nie jego zwarcia?
Dlaczego muszę puścić klawisz, żeby światło się włączyło?
Czy jest możliwa zmiana funkcji w firmware (może wystarczy uruchomić ją w innym zdarzeniu lub z innym parametrem) tak aby po naciśnięciu klawisza podać sygnał do załączenia przekaźnika?

Poszedłem do sypialni gdzie mam zwykłe F&F BIS-403 montowane 4 lata temu z takimi samymi łącznikami zwiernymi i tam to działa po zwarciu, a nie po zwarciu i rozwarciu.

Problem wydaje mi się globalny. Jeśli ktoś kiedyś używał innych przekaźników tak jak ja.
Wiem, że w trybie monostabilnym sterujemy impulsem, a impuls musi się rozpocząć i zakończyć, ale czy musimy czekać na koniec impulsu?
Czy ja tu coś źle interpretuję czy to jednak jakiś bug?

P.S. Maiło być krótko a wyszło jak wyszło, sorry :)
User avatar
pzygmunt
Posts: 6932
Joined: Tue Jan 19, 2016 9:26 am
Location: Paczków
Contact:

Tue Dec 19, 2017 4:11 pm

lesny8 wrote:
Tue Dec 19, 2017 12:33 pm
Do sedna.
Dlaczego w trybie monostabilnym przekaźnik załączający obwód uruchamiany jest w momencie rozwarcia styku a nie jego zwarcia?
Dlaczego muszę puścić klawisz, żeby światło się włączyło?
Czy jest możliwa zmiana funkcji w firmware (może wystarczy uruchomić ją w innym zdarzeniu lub z innym parametrem) tak aby po naciśnięciu klawisza podać sygnał do załączenia przekaźnika?
To jest celowe zachowanie aby wejściu nie było 230v w momencie przełączania przekaźnika. Ma to wpływ na stabilność przy bardzo długich przewodach.

Zapytam Ernesta. Może wprowadzą taką opcję konfiguracyjną do ich firmware-u to wtedy pojawi się jako aktualizacja.
User avatar
lesny8
Posts: 823
Joined: Mon Dec 11, 2017 9:43 pm

Tue Dec 19, 2017 10:16 pm

pzygmunt wrote:
Tue Dec 19, 2017 4:11 pm
To jest celowe zachowanie aby wejściu nie było 230v w momencie przełączania przekaźnika. Ma to wpływ na stabilność przy bardzo długich przewodach.
Nie bardzo to rozumiem, bo nie wiem jak ROW-02 w środku wygląda, ale tak główkuję i skoro w trybie bistabilnym się na wejściu 230v pojawia, to dlaczego w monostabilnym nie może?

A w module inCan kolegi @espablo, to powinno się chyba bez problemu dać zmienić w firmware, bo przecież sterowanie odbywa się na niskim napięciu a nie na wysokim jak w ROW. Tylko gdzie tego szukać, jak i co zmienić to jeszcze nie wiem, staram się póki co rozkminić źródła :)
pzygmunt wrote:
Tue Dec 19, 2017 4:11 pm
Zapytam Ernesta. Może wprowadzą taką opcję konfiguracyjną do ich firmware-u to wtedy pojawi się jako aktualizacja.
Było by fajnie.

P.S. Pełen podziwu jestem dla Ciebie i kilku jeszcze kolegów z forum. Szacuneczek. Przez Was nie śpię po nocach, ale jest mi z tym dobrze :D
proxxon
Posts: 13
Joined: Wed Nov 22, 2017 2:42 pm

Wed Dec 20, 2017 11:10 am

Też mnie to wkurzało:
viewtopic.php?f=8&t=2613

@Zybi
Jak wygląda sprawa update'u Twoich kompilacji? Teraz patrze w CLOUDZIE że reszta ma 2.5.3 a Twoja 2.0.
User avatar
lesny8
Posts: 823
Joined: Mon Dec 11, 2017 9:43 pm

Wed Dec 20, 2017 8:48 pm

Dzięki chłopaki.

Tak coś czułem prze skórę, że z tym problemem nie jestem sam.

Edit:
Taka mała zmiana a jak cieszy :)

Zmiany trzeba dokonać w pliku supla_esp_gpio.c. Modyfikacja dotyczy dwóch funkcji, a dokładniej dwóch warunków w tych funkcjach. Dzięki tak prostej zmiana stanu przekaźnika następuje, jak to fachowcy nazywają, na zboczu narastającym.

Code: Select all

LOCAL void
supla_esp_gpio_on_input_active(supla_input_cfg_t *input_cfg) {

	//supla_log(LOG_DEBUG, "active");

	#ifdef BOARD_ON_INPUT_ACTIVE
	BOARD_ON_INPUT_ACTIVE;
	#endif

	if ( input_cfg->type == INPUT_TYPE_BTN_MONOSTABLE_RS ) {

		//supla_log(LOG_DEBUG, "RELAY HI");
		#ifdef _ROLLERSHUTTER_SUPPORT
			supla_roller_shutter_cfg_t *rs_cfg = supla_esp_gpio_get_rs__cfg(input_cfg->relay_gpio_id);
			if ( rs_cfg != NULL ) {
				supla_esp_gpio_rs_set_relay(rs_cfg, rs_cfg->up->gpio_id == input_cfg->relay_gpio_id ? RS_RELAY_UP : RS_RELAY_DOWN, 1, 1);
			}
		#endif /*_ROLLERSHUTTER_SUPPORT*/

	} else if ( input_cfg->type == INPUT_TYPE_BTN_MONOSTABLE	//to dodajemy
		 || input_cfg->type == INPUT_TYPE_BTN_BISTABLE ) {

		//supla_log(LOG_DEBUG, "RELAY");
		supla_esp_gpio_relay_switch(input_cfg, 255);


	} else if ( input_cfg->type == INPUT_TYPE_SENSOR
				&&  input_cfg->channel != 255 ) {

		supla_esp_channel_value_changed(input_cfg->channel, 1);

	}

	input_cfg->last_state = 1;
}

LOCAL void
supla_esp_gpio_on_input_inactive(supla_input_cfg_t *input_cfg) {

	//supla_log(LOG_DEBUG, "inactive");

	#ifdef BOARD_ON_INPUT_INACTIVE
	BOARD_ON_INPUT_INACTIVE;
	#endif

	if ( input_cfg->type == INPUT_TYPE_BTN_MONOSTABLE_RS ) {

		//supla_log(LOG_DEBUG, "RELAY LO");
		#ifdef _ROLLERSHUTTER_SUPPORT
			supla_roller_shutter_cfg_t *rs_cfg = supla_esp_gpio_get_rs__cfg(input_cfg->relay_gpio_id);
			if ( rs_cfg != NULL ) {
				supla_esp_gpio_rs_set_relay(rs_cfg, RS_RELAY_OFF, 1, 1);
			}
		#endif /*_ROLLERSHUTTER_SUPPORT*/
	} else if ( /*input_cfg->type == INPUT_TYPE_BTN_MONOSTABLE	//to usuwamy lub komentujemy
		 || */input_cfg->type == INPUT_TYPE_BTN_BISTABLE ) {


		supla_esp_gpio_relay_switch(input_cfg, 255);

	} else if ( input_cfg->type == INPUT_TYPE_SENSOR
			    &&  input_cfg->channel != 255 ) {
		supla_esp_channel_value_changed(input_cfg->channel, 0);

	}

	input_cfg->last_state = 0;
}
Chodzi to u mnie już kilka miesięcy i nie zauważyłem żadnych anomalii.
User avatar
Espablo
Posts: 1458
Joined: Wed Jun 29, 2016 5:04 pm
Location: Oświęcim
Contact:

Wed Jul 17, 2019 5:49 pm

dodałem tą zmianę do swoich kompilacji
https://github.com/Espablo/supla-espressif-esp
Każde urządzenie elektryczne działa o wiele lepiej jeśli podłączysz je do prądu. :? :roll:
https://github.com/Espablo
User avatar
lesny8
Posts: 823
Joined: Mon Dec 11, 2017 9:43 pm

Wed Jul 17, 2019 7:23 pm

Właśnie chciałem wczoraj zaproponować tą zmianę, ale zobaczyłem Twój PR w tym miejscu i komentarz Przemka o kompatybilności wstecznej.
Fajnie, że można w tak latwy sposób za pomocą makra zrobić własną obsługę :) wcześniej grzebałem bezpośrednio w supla_esp_gpio.c
User avatar
Espablo
Posts: 1458
Joined: Wed Jun 29, 2016 5:04 pm
Location: Oświęcim
Contact:

Wed Jul 17, 2019 7:38 pm

lesny8 wrote:
Wed Jul 17, 2019 7:23 pm
wcześniej grzebałem bezpośrednio w supla_esp_gpio.c
hehe ja też, ale Przemek mnie prowadził za rączkę jak dziecko :D
Każde urządzenie elektryczne działa o wiele lepiej jeśli podłączysz je do prądu. :? :roll:
https://github.com/Espablo
Post Reply