SBW-02 - szczegółowy stan bramy (otwieranie i zamykanie)

ArtZs
Posts: 2
Joined: Thu Jun 20, 2024 4:46 pm

Post

Witam wszystkich.

Mam centralkę Nice ml424r i udało mi się skonfigurować aby SBW-02 raportowało stan (otwarta lub zamknięta)
Mam z planach zbudowanie automatyzacji w Home Assistance wraz z WLEDem ale potrzebuje szczegółowy stan czyli jak się brama otwiera lub zamyka)

Wg instrukcji Nice:
Wyjście OGI (Open Gate Indicator), jeśli odpowiednio zaprogramowane,
może być użyte jako „Kontrolka Otwartej Bramy”. Kontrolka
miga powoli podczas otwierania oraz szybko podczas zamykania.
Kontrolka pozostaje zaświecona na stałe, gdy brama jest otwarta
(zatrzymana) i jest zgaszona przy zamkniętej bramie.
Czy da się coś zrobić aby SBW-02 rozpoznawało te dodatkowe stany?
Czy jedynie zostaję mi wsadzić ESP32 (z przetwornica 24v na 5v) i podpiąć do OGI z zaprogramowaną logiką aby na podstawie tego "migania" (strzelam że coś związane z pulse count) wysyłało po MQTT szczegółowy stan (otwieranie lub zamykanie) ?

Teoretycznie mógłbym zrobić "bieda logike" typu:
  • Kiedy stan się zmienia z "zamknięta" na "otwarta" to uruchom automatyzacje ZXY ( i z tym nie byłoby problemu bo stan w miarę szybko się zmienia przy otwieraniu)
  • Kiedy stan się zmienia z "otwarta" na "zamknięta" to uruchom automatyzacje ABC (i tu jest problem bo stan się zmieni dopiero jak się brama faktycznie zamknie)
Dlatego potrzebuje dodatkowe stany: otwieranie i zamykanie.
Czy ma ktoś może jakiś pomysł

Pozdrawiam!
User avatar
klew
Posts: 10457
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

Na SBW tego nie ogarniesz. Możesz własnym urządzeniem się podłączyć pod ogi i interpretować te impulsy, tylko nie pamiętam czy tam jest inny schemat przy otwieraniu i przy zamykaniu. Ewentualnie można próbować jakoś podłączyć się pod elektronikę bramy i obserwować jak steruje silnikiem. Ale do tego lepiej się dobrze znać na elektronice i robisz to na własną odpowiedzialność, ryzykując uszkodzeniem napędu, zdrowiem a może i życiem
User avatar
kris.sg
Posts: 434
Joined: Mon Aug 07, 2017 8:08 pm
Location: Przezchlebie

Post

Ja u siebie zrobiłem sobie sterownik bramy według własnego projektu, też mam centralkę NICE do bramy skrzydłowej.
Soft zrobiony na bazie non os SDK i tam sobie zrobiłem raportowanie stanu bramy na podstawie wyjścia OGI:

Code: Select all

Stan_Bramy = 0;	// 0 - zamknieta
				// 1 - otwiera sie lub zamyka sie
				// 2 - otwarta
Wykorzystuję do tego AT każdy z 3 stanów wysyła inne AT (Ja wykorzystuję to wysyłania powiadomień Pushover )

Fragment kodu:

Code: Select all

void board_input_timer_cb(void *timer_arg) {
	
	supla_log(LOG_DEBUG, "board_input_timer_cb");
	
	//supla_log(LOG_DEBUG, "Stan_Bramy timer Low przed = %i", Low);
	//supla_log(LOG_DEBUG, "Stan_Bramy timer High przed = %i", High);
	
	if ( Stan_Bramy == 2 ) os_timer_disarm(&board_input_timer);
	
	if ( gpio__input_get(B_SENSOR_PORT1) == 0 ) { // gdy na input napiecie to 0
		High++;
		Low=0; };
		
	if ( High >= 7 ) {
		Stan_Bramy = 2;
		supla_log(LOG_DEBUG, "Stan_Bramy = %i", Stan_Bramy);
		Low=0;
		High=0;
		os_timer_disarm(&board_input_timer); };
		
	if ( gpio__input_get(B_SENSOR_PORT1) == 1 ) { // gdy na input brak napiecia to 1
		High=0;
		Low++; };
		
	if ( Low >= 7 ) {
		Stan_Bramy = 0;
		Licznik = 0;
		Low=0;
		High=0;
		supla_log(LOG_DEBUG, "Stan_Bramy = %i", Stan_Bramy);
		os_timer_disarm(&board_input_timer); };
		
	//supla_log(LOG_DEBUG, "Stan_Bramy timer Low po = %i", Low);
	//supla_log(LOG_DEBUG, "Stan_Bramy timer High po = %i", High);
}

void supla_board_input(int in1) {
	
	supla_log(LOG_DEBUG, "board_input CH1 = %i", in1);
	
	if ( in1 == 1 ) Licznik++;
	
	supla_log(LOG_DEBUG, "Licznik = %i", Licznik);
	if ( in1 == 1 && Stan_Bramy != 1) {
			Stan_Bramy = 1;
			//supla_log(LOG_DEBUG, "in1=1, board_input_timer" );
			os_timer_disarm(&board_input_timer);
			os_timer_setfn(&board_input_timer, (os_timer_func_t *)board_input_timer_cb, NULL);
			os_timer_arm(&board_input_timer, 100, 1); };
			
	if ( in1 == 1 && Licznik == 1) {
			if ( supla_esp_state.Relay[3] == 1) {
				supla_esp_devconn_send_action_trigger(4, SUPLA_ACTION_CAP_TOGGLE_x1); 
				supla_log(LOG_DEBUG, "supla_esp_board send AT (gate)"); }; 
	};
				
	supla_log(LOG_DEBUG, "Stan_Bramy = %i", Stan_Bramy);
}
Cały kod:

Code: Select all

https://github.com/krissgpl/supla-espressif-esp/blob/master-kris/src/include/board/k_gate_module.c
https://github.com/krissgpl/supla-espressif-esp/blob/master-kris/src/include/board/k_gate_module.h
A tu jak byś potrzebował, link do mojego repo:

Code: Select all

https://github.com/krissgpl/supla-espressif-esp/tree/master-kris
■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

Return to “Zrób to sam”