Automat schodowy

Awatar użytkownika
lesny8
Posty: 2814
Rejestracja: pn gru 11, 2017 9:43 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
Czekam na kolejne Supla Offline Party 👍
Awatar użytkownika
pzygmunt
Posty: 18333
Rejestracja: wt sty 19, 2016 9:26 am
Lokalizacja: Paczków
Kontakt:

Ten firmware tego jeszcze nie obsługuje.
Awatar użytkownika
lesny8
Posty: 2814
Rejestracja: pn gru 11, 2017 9:43 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?
Czekam na kolejne Supla Offline Party 👍
Awatar użytkownika
pzygmunt
Posty: 18333
Rejestracja: wt sty 19, 2016 9:26 am
Lokalizacja: Paczków
Kontakt:

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: 2814
Rejestracja: pn gru 11, 2017 9:43 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.
Czekam na kolejne Supla Offline Party 👍
Awatar użytkownika
lesny8
Posty: 2814
Rejestracja: pn gru 11, 2017 9:43 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 13202 razy
Czekam na kolejne Supla Offline Party 👍
Awatar użytkownika
pzygmunt
Posty: 18333
Rejestracja: wt sty 19, 2016 9:26 am
Lokalizacja: Paczków
Kontakt:

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

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
:mrgreen: :mrgreen: :mrgreen:
Awatar użytkownika
pzygmunt
Posty: 18333
Rejestracja: wt sty 19, 2016 9:26 am
Lokalizacja: Paczków
Kontakt:

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: 1299
Rejestracja: śr lis 09, 2016 8:00 am
Lokalizacja: Wojkowice

To na czym najlepiej zrobić taki automat?
:mrgreen: :mrgreen: :mrgreen:
ODPOWIEDZ

Wróć do „Zagadnienia ogólne”