Łatwiejsza konfiguracja pinów i kanałów

Awatar użytkownika
Espablo
Posty: 1754
Rejestracja: śr cze 29, 2016 5:04 pm
Lokalizacja: Oświęcim
Kontakt:

Każdy kto chociaż raz kompilował własne płytki pod supla-espressif-esp wie jak ciężko jest prawidłowo ustawić sobie piny GPIO i kanały aby prawidłowo działały. Postanowiłem się tym zająć i powstało coś takiego. Wypakowane pliki kopiujemy do katalogu
supla-espressif-esp/src/user
W pliku supla_esp.h dopisujemy

Kod: Zaznacz cały

#include "supla_esp_board_set.h"
oraz pod

Kod: Zaznacz cały

void supla_esp_board_gpio_init(void);
dopisujemy

Kod: Zaznacz cały

void Setting_Up_Channel_Relay(TDS_SuplaDeviceChannel_B *channels, uint8 relays_gpio);
void Setting_Up_Channel_Temperature(TDS_SuplaDeviceChannel_B *channels, int type);
void Setting_Up_Channel_Relay_RS(TDS_SuplaDeviceChannel_B *channels);

void Setting_Up_Sensor(uint8 sensor_gpio, uint8 flaga, TDS_SuplaDeviceChannel_B *channels);
void Setting_Up_Button( uint8 button_gpio, uint8 relay_gpio, uint8 monobistable, uint8 flaga_button, uint8 flaga_relay, TDS_SuplaDeviceChannel_B *channels);
void Setting_Up_Relay(uint8 relay_gpio, uint8 flaga_relay, TDS_SuplaDeviceChannel_B *channels);
void Setting_Up_Button_Configure(uint8 gpio, uint8 stable);
void Setting_Up_Buttons_RS( uint8 gpio_buton_up, uint8 gpio_buton_down, uint8 relay_up, uint8 relay_down, uint8 mono_bistable, uint8 flaga_button, TDS_SuplaDeviceChannel_B *channels);
void Setting_Up_Relay_RS(uint8 relay_up, uint8 relay_down, TDS_SuplaDeviceChannel_B *channels);
void Setting_Up_Temperature(uint8 gpio, int type, TDS_SuplaDeviceChannel_B *channels);

Teraz wystarczy wypisać to co mamy na "pokładzie" i przypisać funkcję. Kolejność wpisywanie = kolejności wyświetlania w supla-cloud.
Poniżej przykład dla lightswitch

Kod: Zaznacz cały

/*
   This program is free software; you can redistribute it and/or
   modify it under the terms of the GNU General Public License
   as published by the Free Software Foundation; either version 2
   of the License, or (at your option) any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 */

#include "supla_esp.h"
#include "supla_dht.h"
#include "supla_ds18b20.h"

void supla_esp_board_set_device_name(char *buffer, uint8 buffer_size) {

 #if defined(__BOARD_lightswitch_x2) || defined(__BOARD_lightswitch_x2_54)

	ets_snprintf(buffer, buffer_size, "SUPLA-LIGHTSWITCH-x2-DS");

  #elif defined(__BOARD_lightswitch_x2_DHT11) || defined(__BOARD_lightswitch_x2_54_DHT11)

	ets_snprintf(buffer, buffer_size, "SUPLA-LIGHTSWITCH-x2-DHT11");

  #elif defined(__BOARD_lightswitch_x2_DHT22) || defined(__BOARD_lightswitch_x2_54_DHT22)

	ets_snprintf(buffer, buffer_size, "SUPLA-LIGHTSWITCH-x2-DHT22");

 #endif

}
void ICACHE_FLASH_ATTR supla_esp_board_set_channels_gpio(TDS_SuplaDeviceChannel_B *channel_set, uint8 channels_gpio) {
	switch_chanell_gpio = channels_gpio;

	Setting_Up_Button(B_CFG_PORT, \
	                  B_RELAY1_PORT, \
	                  supla_esp_cfg.CfgButtonType == BTN_TYPE_BISTABLE ? INPUT_TYPE_BTN_BISTABLE : INPUT_TYPE_BTN_MONOSTABLE, \
	                  INPUT_FLAG_PULLUP, \
	                  RELAY_FLAG_RESTORE_FORCE, \
	                  channel_set);

	Setting_Up_Button(B_BTN2_PORT, \
	                  B_RELAY2_PORT, \
	                  supla_esp_cfg.CfgButtonType == BTN_TYPE_BISTABLE ? INPUT_TYPE_BTN_BISTABLE : INPUT_TYPE_BTN_MONOSTABLE, \
	                  INPUT_FLAG_PULLUP, \
	                  RELAY_FLAG_RESTORE_FORCE, \
	                  channel_set);
#if defined(DS18B20)
	Setting_Up_Temperature(2, SUPLA_CHANNELTYPE_THERMOMETERDS18B20, channel_set);
#elif defined(SENSOR_DHT11)
	Setting_Up_Temperature(2, SUPLA_CHANNELTYPE_DHT11, channel_set);
#elif defined(SENSOR_DHT22)
	Setting_Up_Temperature(2, SUPLA_CHANNELTYPE_DHT22, channel_set);
  #endif
// ---------------------------------------
	Setting_Up_Button_Configure(B_CFG_PORT, supla_esp_cfg.CfgButtonType == BTN_TYPE_BISTABLE ? INPUT_TYPE_BTN_BISTABLE : INPUT_TYPE_BTN_MONOSTABLE);

}

void supla_esp_board_send_channel_values_with_delay(void *srpc) {

}
Dla sterownika roller shuter wystarczy

Kod: Zaznacz cały

void ICACHE_FLASH_ATTR supla_esp_board_set_channels_gpio(TDS_SuplaDeviceChannel_B *channel_set, uint8 channels_gpio) {
switch_chanell_gpio = channels_gpio;

Setting_Up_Buttons_RS(B_BTN1_PORT, B_BTN2_PORT, B_RELAY1_PORT, B_RELAY2_PORT, INPUT_TYPE_BTN_MONOSTABLE, INPUT_FLAG_PULLUP, channel_set );
Setting_Up_Sensor(B_SENSOR_PORT1, INPUT_FLAG_PULLUP, channel_set);
// ---------------------------------------
Setting_Up_Button_Configure(B_BTN_CFG_PORT, INPUT_TYPE_BTN_MONOSTABLE);
}
Przyciski konfiguracyjne podajemy zawsze na końcu
Załączniki
supla_esp_board_set.tar.gz
(1.42 KiB) Pobrany 432 razy
Każde urządzenie elektryczne działa o wiele lepiej jeśli podłączysz je do prądu. :? :roll:
Awatar użytkownika
kris.sg
Posty: 372
Rejestracja: pn sie 07, 2017 8:08 pm
Lokalizacja: Przezchlebie

czy jest szansa na obsługę diody statusu, żeby po połączeniu sygnalizowała stan kanału ?
męczę się już z tym tydzień ale widać że jeszcze muszę się dużo nauczyć
■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
Patryk
Posty: 2677
Rejestracja: pn sty 07, 2019 7:51 pm
Lokalizacja: Rybnik

Nie do końca rozumiem , w którym miejscu mam zdefiniować własne gpio.
Mógłbym prosić o podpowiedź.
Awatar użytkownika
lesny8
Posty: 2808
Rejestracja: pn gru 11, 2017 9:43 pm

Możesz zrobić to wprost

Kod: Zaznacz cały

Setting_Up_Sensor(4, channel_set);
Setting_Up_Sensor(16, channel_set);
Setting_Up_Button_Relay(14, 5,
		                supla_esp_cfg.Button1Type,
		                channel_set);
Setting_Up_Button_Relay(12, 13,
		                supla_esp_cfg.Button2Type,
		                channel_set);
albo nie ;)

Kod: Zaznacz cały

#define B_SENSOR_PORT1      4
#define B_SENSOR_PORT2     16

#define B_RELAY1_PORT       5
#define B_RELAY2_PORT      13

#define B_BTN1_PORT	14
#define B_BTN2_PORT	12

............

Setting_Up_Sensor(B_SENSOR_PORT1, channel_set);
Setting_Up_Sensor(B_SENSOR_PORT2, channel_set);
Setting_Up_Button_Relay(B_BTN1_PORT, B_RELAY1_PORT,
		                        supla_esp_cfg.Button1Type,
		                        channel_set);
Setting_Up_Button_Relay(B_BTN2_PORT, B_RELAY2_PORT,
		                        supla_esp_cfg.Button2Type,
		                        channel_set);
Czekam na kolejne Supla Offline Party 👍
Patryk
Posty: 2677
Rejestracja: pn sty 07, 2019 7:51 pm
Lokalizacja: Rybnik

Dzięki !!!.
Gdyż dalej męczę się z tym gpio3 i szukam jakiegoś rozwiązania.
 viewtopic.php?p=57570#p57570

 viewtopic.php?p=58013#p58013
ODPOWIEDZ

Wróć do „Zagadnienia ogólne”