Dodatkowy przycisk do podwójnego przekaźnika

User avatar
slawek
Posts: 2216
Joined: Mon Mar 14, 2016 11:48 pm
Location: Biała Podlaska

Mon Aug 08, 2016 7:33 pm

Jeśli chodzi o ikony to mam to samo - obydwa kanały przy ręcznym przełączaniu zmieniają stan ikony 1
przy sterowaniu smartfonem jest OK
Gdy wszystkie możliwe sposoby zawiodą - pozostaje przeczytać instrukcję...
Zybi
Posts: 1386
Joined: Sun Jun 26, 2016 4:24 pm

Mon Aug 08, 2016 7:40 pm

slawek wrote:A jak ze zmianą trybu btn/switch?
u mnie zmienia tylko dla 1 kanału...
okienko w konfigu mam jedno... i zmienia tylko 1 kanał, 2 mam button
Tak myślę, że jest to prawidłowo, ponieważ funkcja do przejścia w tryb konfiguracji dla drugiego przycisku jest pusta:

void supla_esg_gpio_cfg2_pressed(void) {
};
User avatar
slawek
Posts: 2216
Joined: Mon Mar 14, 2016 11:48 pm
Location: Biała Podlaska

Mon Aug 08, 2016 7:46 pm

Ale mi chodzi o zmianę trybu pracy przycisku button/switch, nie o przejście w tryb konfiguracji
Gdy wszystkie możliwe sposoby zawiodą - pozostaje przeczytać instrukcję...
Zybi
Posts: 1386
Joined: Sun Jun 26, 2016 4:24 pm

Mon Aug 08, 2016 7:59 pm

Mam tak samo.
Zybi
Posts: 1386
Joined: Sun Jun 26, 2016 4:24 pm

Mon Aug 08, 2016 10:37 pm

Po pobraniu nowych kodów źródłowych z Github-a i wprowadzeniu w nich modyfikacji mam już w pełni działający podwójny socket z termometrem.
Nie wszystko co wcześniej opisywaliśmy w dyskusji w najnowszej wersji oprogramowania wygląda tak samo, ale zasada jest taka sama. Kod jest bardziej uporządkowany i nawet łatwiejszy w analizie (w zakresie poruszanych problemów). Dużo daje analiza płytki "jangoe_wifisocket".
User avatar
slawek
Posts: 2216
Joined: Mon Mar 14, 2016 11:48 pm
Location: Biała Podlaska

Mon Aug 08, 2016 11:17 pm

Też to zauważyłem, ale np jangoe nie ma chyba funkcji switch... ale zmiany, które wprowadzaliśmy są już w nowych źródłach...
Jutro popróbuję od nowa - czegoś się przy okazji nauczę...
Co z trybem switch dla obu kanałów? Działa?
Gdy wszystkie możliwe sposoby zawiodą - pozostaje przeczytać instrukcję...
User avatar
slawek
Posts: 2216
Joined: Mon Mar 14, 2016 11:48 pm
Location: Biała Podlaska

Tue Aug 09, 2016 6:41 pm

Prawie się udało... nie mogę dociec jak zmusić 2 przycisk do przejścia w tryb switch no i nie mam termometru...poza tym wszystko działa jak chciałem.
Proszę o podpowiedź... :oops:
Gdy wszystkie możliwe sposoby zawiodą - pozostaje przeczytać instrukcję...
Zybi
Posts: 1386
Joined: Sun Jun 26, 2016 4:24 pm

Tue Aug 09, 2016 6:56 pm

slawek wrote:Prawie się udało... nie mogę dociec jak zmusić 2 przycisk do przejścia w tryb switch no i nie mam termometru...poza tym wszystko działa jak chciałem.
Proszę o podpowiedź... :oops:
Odnośnie termometru to zrób nową definicję płytki w supla_esp.h

#elif defined(__BOARD_wifisocketx2) \
|| defined(__BOARD_wifisocketx2_dht11) \
|| defined(__BOARD_wifisocketx2_dht22)

#define DEVICE_NAME "SUPLA-SOCKETx2"

#if defined(__BOARD_wifisocketx2_dht11)
#define SENSOR_DHT11
#elif defined(__BOARD_wifisocketx2_dht22)
#define SENSOR_DHT22
#else
#define DS18B20
#endif

#define RESET_RELAY_PORT
#define TEMPERATURE_CHANNEL 2
#define CFGBTN_TYPE_SELECTION
#define CFG_PORT 5
#define BUTTON2_PORT 12
#define RELAY1_PORT 4
#define RELAY2_PORT 13
#define LED_BLUE_PORT 14

oraz w supla_esp_devconn.c

#elif defined(__BOARD_wifisocketx2) \
|| defined(__BOARD_wifisocketx2_dht11) \
|| defined(__BOARD_wifisocketx2_dht22)

#if defined(DS18B20) || defined(SENSOR_DHT11) || defined(SENSOR_DHT22)
srd.channel_count = 3;
#else
srd.channel_count = 2;
#endif

srd.channels[0].Number = 0;
srd.channels[0].Type = SUPLA_CHANNELTYPE_RELAY;
srd.channels[0].FuncList = SUPLA_BIT_RELAYFUNC_POWERSWITCH \
| SUPLA_BIT_RELAYFUNC_LIGHTSWITCH;
srd.channels[0].Default = SUPLA_CHANNELFNC_POWERSWITCH;
srd.channels[0].value[0] = supla_esp_gpio_relay_on(RELAY1_PORT);
srd.channels[1].Number = 1;
srd.channels[1].Type = SUPLA_CHANNELTYPE_RELAY;
srd.channels[1].FuncList = SUPLA_BIT_RELAYFUNC_POWERSWITCH \
| SUPLA_BIT_RELAYFUNC_LIGHTSWITCH;
srd.channels[1].Default = SUPLA_CHANNELFNC_POWERSWITCH;
srd.channels[1].value[1] = supla_esp_gpio_relay_on(RELAY2_PORT);

// TEMPERATURE_CHANNEL
#if defined(DS18B20) || defined(SENSOR_DHT11) || defined(SENSOR_DHT22)
srd.channels[2].Number = 2;

#if defined(SENSOR_DHT11)
srd.channels[2].Type = SUPLA_CHANNELTYPE_DHT11;
#elif defined(SENSOR_DHT22)
srd.channels[2].Type = SUPLA_CHANNELTYPE_DHT22;
#else
srd.channels[2].Type = SUPLA_CHANNELTYPE_THERMOMETERDS18B20;
#endif

srd.channels[2].FuncList = 0;
srd.channels[2].Default = 0;

supla_get_temp_and_humidity(srd.channels[2].value);
#endif

oraz w supla_esp_gpio.c

void supla_esg_gpio_manual_pressed(void) {

if ( supla_esp_cfgmode_started() == 0 ) {

#if defined(__BOARD_wifisocket) \
|| defined(__BOARD_wifisocket_54) \
|| defined(__BOARD_wifisocket_esp01) \
|| defined(__BOARD_sonoff) \
|| defined(__BOARD_sonoff_ds18b20) \
|| defined(__BOARD_wifisocketx2) \
|| defined(__BOARD_wifisocketx2_dht11) \
|| defined(__BOARD_wifisocketx2_dht22)

supla_esg_gpio_relay_switch(RELAY1_PORT);

#elif defined(DIMMER_CHANNEL)

supla_esg_gpio_pwm_onoff();

#endif

} else {

cfg_exit_counter++;

if ( cfg_exit_counter > 1
&& switch_cfgbtn_counter < 10 ) {

system_restart();
}
}

}


i zmodyfikuj skrypt build.sh o obsługę tych płytek
User avatar
slawek
Posts: 2216
Joined: Mon Mar 14, 2016 11:48 pm
Location: Biała Podlaska

Tue Aug 09, 2016 7:02 pm

Dzięki - skorzystam, a jak u ciebie z przyciskami? Masz tryb switch na obydwóch? Na tym zależy mi bardziej niż na termometrze.

P.S. Widzę, że masz :) nie zauważyłem od razu...dzięki ;)
Gdy wszystkie możliwe sposoby zawiodą - pozostaje przeczytać instrukcję...
Zybi
Posts: 1386
Joined: Sun Jun 26, 2016 4:24 pm

Tue Aug 09, 2016 7:12 pm

slawek wrote:Dzięki - skorzystam, a jak u ciebie z przyciskami? Masz tryb switch na obydwóch? Na tym zależy mi bardziej niż na termometrze.
tak jak masz tu:

#define CFG_PORT 5
#define BUTTON2_PORT 12

sterować będziesz dwoma przekaźnikami poprzez te przyciski na tych portach, bo masz

single_key[0] = key_init_single(CFG_PORT, supla_esg_gpio_cfg_pressed, supla_esg_gpio_manual_pressed);
keys.key_num++;

#if defined(BUTTON2_PORT) && defined(RELAY2_PORT)

single_key[keys.key_num] = key_init_single(BUTTON2_PORT, NULL, supla_esg_gpio_button2_pressed);
keys.key_num++;

#endif

ale w tryb konfiguracji będziesz wchodził tylko przyciskiem na porcie 5
Post Reply