Bridge RF dla gniazdek na bazie NodeMCU

tujaros
Posts: 10
Joined: Tue Jan 23, 2018 6:17 pm

Post

Witajcie,
chciałbym postawić na ESP bridge do sterowania gniazdkami RF. Koncepcja jest, że moduł po dostaniu informacji od Supli wysyła po 433mHz komendę włączającą/wyłączającą gniazdko. Najprościej by było sprawdzać stan wirtualnego przekaźnika (czyli zmiennej albo funkcji, która zwraca true/false) i na postawie zmiany jego stanu wysyłać komendy, jednak czegoś takiego nie ma (albo przynajmniej nie widzę).
Pomyślałem że można utworzyć przekaźniki i sczytywać stan ich pinów. Metoda działa, jednak to jest droga na około, przynajmniej tak mi się wydaje, w dodatku nie ma możliwości ponownego włączenia lampki, jeżeli wyłączyliśmy ją np pilotem, a nie przez Suple.

Piszę, aby się zapytać czy macie sposób na takie 'wirtualne przekaźniki', albo czy macie pomysł jak to ugryźć, żeby można było przez Suplę włączać kilka razy to samo gniazdko.
User avatar
pzygmunt
Posts: 20302
Joined: Tue Jan 19, 2016 9:26 am
Location: Paczków
Been thanked: 59 times

Post

W pliku nagłówkowym (.h) Twojej płytki dodajesz

Code: Select all

#define BOARD_GPIO_OUTPUT_SET_HI if ( port >= 20 ) { supla_esp_board_gpiooutput_set_hi(port, hi); return; };
#define BOARD_GPIO_OUTPUT_IS_HI if ( port >= 20 ) return supla_esp_board_gpio_output_is_hi(port);

void supla_esp_board_gpiooutput_set_hi(uint8 port, uint8 hi);
uint8 supla_esp_board_gpio_output_is_hi(uint8 port);
W pliku z kodem (.c)

Definicja przekaźnika:

Code: Select all

supla_relay_cfg[0].gpio_id = 20;
supla_relay_cfg[0].channel = 0;
Dodanie kanału:

Code: Select all

	channels[0].Number = 0;
	channels[0].Type = SUPLA_CHANNELTYPE_RELAY;

	channels[0].FuncList = SUPLA_BIT_RELAYFUNC_POWERSWITCH \
								| SUPLA_BIT_RELAYFUNC_LIGHTSWITCH;

	channels[0].Default = SUPLA_CHANNELFNC_LIGHTSWITCH;
	channels[0].value[0] = supla_esp_gpio_relay_on(20);

Obsługa komend 433:

Code: Select all

void supla_esp_board_gpiooutput_set_hi(uint8 port, uint8 hi) {

   //  wyślij komendę po 433MHz

}

uint8 supla_esp_board_gpio_output_is_hi(uint8 port) {

	// Odczytaj stan wysyłając komendę po 433MHz
	return 0;
}
SUPLA.... Nareszcie w domu.
tujaros
Posts: 10
Joined: Tue Jan 23, 2018 6:17 pm

Post

Dzięki za odpowiedź, bardzo doceniam Twoją szybką odpowiedź.
Niestety przez moją nieuwagę zapomniałem napisać że robię to w środowisku/języku Arduino. Z tego co widzę to co napisałeś jest niestety do czystego C, więc nie znajdzie u mnie zastosowania :(

Return to “Pomoc”