Rygiel furtki z pamięcią

Masz pomysł na funkcjonalność lub koncepcję na rozwój projektu. Opisz wszystko tutaj.
Zybi
Posts: 1353
Joined: Sun Jun 26, 2016 4:24 pm

Mon Aug 08, 2016 5:22 pm

Przemek, czy możesz udostępnić kod dla rygla z pamięcią?
User avatar
pzygmunt
Posts: 6223
Joined: Tue Jan 19, 2016 9:26 am
Location: Paczków
Contact:

Mon Aug 08, 2016 5:32 pm

Zybi wrote:Przemek, czy możesz udostępnić kod dla rygla z pamięcią?
jest na githubie
Zybi
Posts: 1353
Joined: Sun Jun 26, 2016 4:24 pm

Tue Aug 09, 2016 3:15 pm

Kod jest faktycznie, ale będę dalej ciągnął temat w zakresie sterowania ręcznego. Myślałem, że jak zdefiniuję dla przycisku konfiguracji #define CFGBTN_TYPE_SELECTION to załatwi mi sprawę, tj. tym samym przyciskiem będę wchodził w tryb konfiguracji i sterował ręcznie przekaźnikiem. Niestety nic z tego bo "wywala" błędy przy kompilacji i nic nie udało mi się z tym zrobić. Zrobiłem więc inaczej:

#define USE_GPIO16_OUTPUT
#define BUTTON3_PORT 13
#define CFG_PORT 5
#define LED_GREEN_PORT 12
#define LED_BLUE_PORT 14
#define RELAY1_PORT 4
#define RELAY2_PORT 16
#define INPUT_PORT1 12
#define INPUT_PORT2 14

czyli sterowanie przyciskiem na pinie 13. Dla tego przycisku poprzez analogię zastosowałem funkcję jak dla BUTTON1 i BUTTON2, czyli:

#if defined(BUTTON3_PORT) && defined(RELAY1_PORT)
single_key[keys.key_num] = key_init_single(BUTTON3_PORT, NULL, supla_esg_gpio_button3_pressed);
keys.key_num++;
#endif

#if defined(BUTTON3_PORT) && defined(RELAY1_PORT)
void supla_esg_gpio_button3_pressed(void) {
supla_esg_gpio_relay_switch(RELAY1_PORT);
}
#endif

To działa tylko, że w takim przypadku sterowanie przyciskiem powoduje stałe załączenie/wyłączenie przekaźnika, a według założeń powinien on załączyć się tylko na określony czas (2-4 s) lub na czas trzymania przycisku. I tu prośba do Ciebie Przemek o dopisanie kodu zastępującego:

supla_esg_gpio_relay_switch(RELAY1_PORT);
User avatar
pzygmunt
Posts: 6223
Joined: Tue Jan 19, 2016 9:26 am
Location: Paczków
Contact:

Tue Aug 09, 2016 3:48 pm

TSD_SuplaChannelNewValue new_value;
memset(&new_value, 0, sizeof(TSD_SuplaChannelNewValue));

new_value.ChannelNumber = 0; // Numer kanału na którym wisi przekaźnik
new_value.DurationMS = 1000; // Czas załączenia w milisekundach. Ma znaczenie tylko dla stanu wysokiego
new_value.value[0] = 0; // 0 stan niski, 1 stan wysoki np. ew_value.value[0] = 1

supla_esp_channel_set_value(&new_value);
Zybi
Posts: 1353
Joined: Sun Jun 26, 2016 4:24 pm

Tue Aug 09, 2016 4:06 pm

Działa przy:

new_value.value[0] = 1;

przekaźnik zostaje załączony na ustawiony czas - dzięki.
Zybi
Posts: 1353
Joined: Sun Jun 26, 2016 4:24 pm

Tue Aug 09, 2016 7:39 pm

Dodałem czujniki temperatury i wilgotności do modułu z mem. Kompilacja softu z czujnikami DHT11 i DHT22 idzie bez problemów. Soft z DHT11 przetestowałem i działa. Natomiast nie przechodzi mi kompilacja z czujnikiem DS18B20.
Fragment z błędem:

/home/supla/Devel/Espressif/xtensa-lx106-elf/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld: .output/eagle/debug/image/eagle.app.v6.out section `.text' will not fit in region `iram1_0_seg'
collect2: error: ld returned 1 exit status
/home/supla/Devel/Espressif/ESP8266_IOT_SDK/Makefile:362: recipe for target '.output/eagle/debug/image/eagle.app.v6.out' failed
make: *** [.output/eagle/debug/image/eagle.app.v6.out] Error 1

Można temu zaradzić ?
User avatar
pzygmunt
Posts: 6223
Joined: Tue Jan 19, 2016 9:26 am
Location: Paczków
Contact:

Wed Aug 10, 2016 6:57 am

Skomilowana binarka przekracza dostępną przestrzeń we flashu.
Trzeba to skomilować inaczej.

do build.sh https://github.com/SUPLA/supla-core/blo ... ild.sh#L86
trzeba dopisać
UPGRADE_1024=1

i wtedy trzeba pliki wgrać pod inne adresy

boot_v1.2.bin--------------------->0x00000
sonoff_ds18b20_user1.1024.new.2.bin--------->0x01000
Zybi
Posts: 1353
Joined: Sun Jun 26, 2016 4:24 pm

Wed Aug 10, 2016 8:44 am

Kompilacja przy ustawieniach:

CFG_SECTOR=0xBC
UPGRADE_1024=1

nie poszła, ale poszła przy:

DEP_LIBS="-lpwm"
NOSSL=1

Moduł ESP-12E przetestowany i działa.
W zakresie tego tematu "Rygiel furtki z pamięcią" to już raczej wszystko (chyba, że te NOSSL=1 można by wyeliminować). Dzięki Przemek za skuteczną pomoc. Pozostaje już tylko realizacja praktyczna.
User avatar
pzygmunt
Posts: 6223
Joined: Tue Jan 19, 2016 9:26 am
Location: Paczków
Contact:

Wed Aug 10, 2016 9:41 am

Hmm, dziwne. Jak już bez SSL-a, a nie używasz pwm-a to można
DEP_LIBS=""
Zybi
Posts: 1353
Joined: Sun Jun 26, 2016 4:24 pm

Wed Aug 10, 2016 9:51 am

poszło

DEP_LIBS=""
NOSSL=1
Post Reply