Automat schodowy

Awatar użytkownika
lesny8
Posty: 1110
Rejestracja: pn gru 11, 2017 9:43 pm

pn maja 21, 2018 6:55 pm

Jestem troszkę zmieszany bo...
...albo czegoś tu nie rozumiem i mam braki w kodzie, albo w tej funkcjonalności nie wszystko działa tak jak powinno.

Z uwagi na to, że Cloud mam na malinie w wersji dockerowej, a jak wiadomo docker jeszcze nie jest aktualny, przepiąłem się z testowym modułem na beta-cloud.supla.org, gdzie tytułowa funkcjonalność już jest.

Kompiluję sobie taką konfigurację i po flashowaniu ustawiam moduł i podpinam go do cloud.
Jak widać poniżej mam 2 przekaźnik sterowane przez 2 przyciski na kanałach 0 i 1.

supla_esp_board_gpio_init wygląda tak

Kod: Zaznacz cały

supla_input_cfg[0].type = INPUT_TYPE_BTN_MONOSTABLE;
supla_input_cfg[0].gpio_id = B_BTN1_PORT;
supla_input_cfg[0].flags = INPUT_FLAG_PULLUP |  INPUT_FLAG_CFG_BTN;
supla_input_cfg[0].relay_gpio_id = B_RELAY1_PORT;
supla_input_cfg[0].channel = 0;

supla_input_cfg[1].type = INPUT_TYPE_BTN_MONOSTABLE;
supla_input_cfg[1].gpio_id = B_BTN2_PORT;
supla_input_cfg[1].flags = INPUT_FLAG_PULLUP |  INPUT_FLAG_CFG_BTN;
supla_input_cfg[1].relay_gpio_id = B_RELAY2_PORT;
supla_input_cfg[1].channel = 1;
    

supla_relay_cfg[0].gpio_id = B_RELAY1_PORT;
supla_relay_cfg[0].flags = RELAY_FLAG_RESET;
supla_relay_cfg[0].channel = 0;

supla_relay_cfg[1].gpio_id = B_RELAY2_PORT;
supla_relay_cfg[1].flags = RELAY_FLAG_RESET;
supla_relay_cfg[1].channel = 1;
a supla_esp_board_set_channels tak

Kod: Zaznacz cały

*channel_count = 2;

channels[0].Number = 0;
channels[0].Type = SUPLA_CHANNELTYPE_RELAY;
channels[0].FuncList =	SUPLA_BIT_RELAYFUNC_POWERSWITCH \
						| SUPLA_BIT_RELAYFUNC_LIGHTSWITCH \
						| SUPLA_BIT_RELAYFUNC_STAIRCASETIMER;
channels[0].Default = 0;
channels[0].value[0] = supla_esp_gpio_relay_on(B_RELAY1_PORT);
	
channels[1].Number = 1;
channels[1].Type = channels[0].Type;
channels[1].FuncList = channels[0].FuncList;
channels[1].Default = 0;
channels[1].value[0] = supla_esp_gpio_relay_on(B_RELAY2_PORT);
supla_esp_board_send_channel_values_with_delay

Kod: Zaznacz cały

	
supla_esp_channel_value_changed(0, supla_esp_gpio_relay_on(B_RELAY1_PORT));
supla_esp_channel_value_changed(1, supla_esp_gpio_relay_on(B_RELAY2_PORT));
W Cloud ustawiam dla kanału 0 automat schodowy, wskazuję dla niego odpowiedni czas pracy, zapisuję i w aplikacji na telefonie widzę przepiękną ikonkę z funkcjonalnością, na którą wszyscy tu od dawna czekali ;)

Zacieram ręce i sprawdzam działanie.
Uruchamiam w telefonie automat i przekaźnik pstryka, a po upływie ustalonego czasu następuje wyłączenie, przekaźnik pstryka. Sprawdzam w apce wyłączenie przed upływem ustawionego czasu, działa super.

Biorę łącznik w łapki wciskam przycisk, przekaźnik pstryka :D czekam, czekam... ustalony czas mija i cisza :shock: (tu spodziewałem się zmiany stanu kanału jak to miało miejsce przy wykonaniu akcji z aplikacji w tel). Zerkam w telefon bo nie wiem czy nie dosłyszałem zmiany, ale niestety nie. Stan kanału się nie zmienił, hmm.. ale dlaczego? Ponowne naciskam przycisk, kanał zmienia stan, przekaźnik pstryka. Sprawdziłem kilka razy i zawsze to samo, chyba że włączę już włączony kanał na telefonie, to wtedy odliczy czas i zmienia stan.

Czy czegoś mi brakuje w tej konfiguracji? Powinienem mieć tu jeszcze coś, jakoś, gdzieś? Czy to po prostu jakiś bug po stronie działania funkcji? Szukałem w źródłach jakiegoś tropu czemu to tak, ale ślad mi się urwał..... :roll:

P.S. Źródła mam aktualne
Awatar użytkownika
pzygmunt
Posty: 8477
Rejestracja: wt sty 19, 2016 9:26 am
Lokalizacja: Paczków
Kontaktowanie:

wt maja 22, 2018 7:42 am

Ten firmware tego jeszcze nie obsługuje.
Awatar użytkownika
lesny8
Posty: 1110
Rejestracja: pn gru 11, 2017 9:43 pm

wt maja 22, 2018 9:14 pm

Ok, rozumiem...
Server - już to ma, bo umie wysterować i przetworzyć żądania;
Client - już to ma, bo wysyła żądanie do Servera;
Device - jeszcze nie ma, bo nie ma jak wysłać żądania i działa tylko lokalnie, a lokalnie to on nie wie, że ma coś więcej zrobić;

Wszystkie komponenty współdzielą protokół więc myślałem, że już gotowe i będzie hulać. Teraz jak się przyglądam supla_esp_gpio to widzę, że nie ma żadnej dodatkowej struktury lub zmiennej, czy funkcji obsługującej tę funkcjonalność tak jak w przypadku RS, choć w przypadku RS jest to dużo bardziej skomplikowane.

Dopisałbym co trzeba, ale to jeszcze nie ten etap, muszę więcej wypić...;)

Zastanawiam się jak Ty to chłopie wszystko ogarniasz? Posiadasz/tworzysz jakieś diagramy w UML czy wszystko w głowie?
Awatar użytkownika
pzygmunt
Posty: 8477
Rejestracja: wt sty 19, 2016 9:26 am
Lokalizacja: Paczków
Kontaktowanie:

śr maja 23, 2018 6:52 am

Na tyle jest tego jeszcze mało, że w głowie ale pierwsze diagramy się nawet ostatnio pojawiły przy koncepcie OAuth brokera dla Supla<->Amazon Echo/Google Home.
Awatar użytkownika
lesny8
Posty: 1110
Rejestracja: pn gru 11, 2017 9:43 pm

czw maja 24, 2018 9:29 pm

No to szacun Panie kolego ;)

Wiem, że dla twórcy systemu poruszanie się w kodzie bez jakichkolwiek diagramów to nie problem, tym bardziej jak się na co dzień obcuje z kompilatorem i to nie jednym, i nie w jednym języku a co najmniej w kilku, to dla zwykłych zjadaczy chleba, którym się wydaje że coś tam wiedzą, przedarcie się przez dziesiątki tysięcy linii kodu, żeby zrozumieć jakąś zależność i pozornie prostą rzecz, to jak wejście na Giewont w japonkach :D

Dlatego szapo ba Przemku.
Awatar użytkownika
lesny8
Posty: 1110
Rejestracja: pn gru 11, 2017 9:43 pm

pt cze 29, 2018 2:35 pm

Czy komuś udało się uruchomić automat schodowy z harmonogramu? U mnie ani razu nie wystartował i nie mam pojęcia czemu :(
Gdzie ewentualnie szukać jakichś logów?
harmonogram.png
harmonogram.png (71.12 KiB) Przejrzano 10192 razy
Awatar użytkownika
pzygmunt
Posty: 8477
Rejestracja: wt sty 19, 2016 9:26 am
Lokalizacja: Paczków
Kontaktowanie:

pt cze 29, 2018 2:36 pm

Harmonogram tego nie obsługuje poprawnie.
Awatar użytkownika
michael
Posty: 1106
Rejestracja: śr lis 09, 2016 8:00 am
Lokalizacja: Wojkowice

wt wrz 18, 2018 8:13 am

Chciałbym ustawić automat schodowy na SONOFFie lub ROWie, ale przy wyborze funkcji nie widać na liście automatu. Automat udało mi się odpalić tylko na Raspberry. Czy jest to możliwe?
Ewentualnie którą linijkę kodu zmienić, żeby pojawiła mi się ta opcja? :D
Kabel ucięty na miarę zawsze jest za krótki...
Awatar użytkownika
pzygmunt
Posty: 8477
Rejestracja: wt sty 19, 2016 9:26 am
Lokalizacja: Paczków
Kontaktowanie:

wt wrz 18, 2018 8:39 am

Rzecz w tym, że ESP nie specjalnie się nadają do obsługi automatu bez dodania pamięci FRAM.
Bez tego mogą gubić czas.
Awatar użytkownika
michael
Posty: 1106
Rejestracja: śr lis 09, 2016 8:00 am
Lokalizacja: Wojkowice

wt wrz 18, 2018 8:44 am

To na czym najlepiej zrobić taki automat?
Kabel ucięty na miarę zawsze jest za krótki...
ODPOWIEDZ

Wróć do „Zagadnienia ogólne”