Sterowanie Supla głosem a'la komputer ze Star Trek

Masz pomysł na funkcjonalność lub koncepcję na rozwój projektu. Opisz wszystko tutaj.
User avatar
michael
Posts: 1299
Joined: Wed Nov 09, 2016 8:00 am
Location: Wojkowice

Post

Czekam z niecierpliwością :D
:mrgreen: :mrgreen: :mrgreen:
User avatar
fracz
Posts: 2256
Joined: Fri Oct 28, 2016 10:56 pm
Location: Kraków

Post

W dużym obrazku działa to tak:
  1. Google Now reaguje na nasze "Ok, Google" i zaczyna nas słuchać
  2. Jak wysłucha co mamy do powiedzenia przetwarza to na tekst
  3. Autovoice (https://play.google.com/store/apps/deta ... oice&hl=pl) sprawdza, czy przypadkiem to co rozpoznał Google Now nie jest komendą i jeśli jest - przekazuje informację do Taskera
  4. Tasker (https://play.google.com/store/apps/deta ... kerm&hl=pl) sprawdza co to za komenda i jeśli coś spasowało to wykonuje akcję do niej przypisaną
  5. Akcja to żądanie HTTP do jednego z supla-scripts by @fracz, które np. włącza lub wyłącza jakiś kanał bądź scenę
  6. supla-scripts komunikuje się z API SUPLA Cloud wysyłając żądaną akcję
  7. SUPLA Cloud przekazuje to do SUPLA server
  8. SUPLA Server wysyła odpowiednie komendy do urządzeń
  9. Dzieje się
Sporo tych narzędzi po drodze jest (czyt. sporo może się nie udać), ale efekt daje niesamowite szczęście :D
Ok, Google, otwórz garaż, zamknij bramę wjazdową i włącz piec
I BAM! Sąsiad stoi i patrzy na Star Treka parkującego w garażu 11-letnim citroenem.

Inspirację czerpałem z: Dokładnej instrukcji jak to zrobiłem jeszcze nie piszę, bo obecne rozwiązanie ma podstawową wadę: żeby komenda zadziałała telefon musi być odblokowany i mieć włączony ekran. Problem istnieje od niedawna, bo Google coś tam pozmieniało i jest dokładnie opisany tutaj: http://forum.joaoapps.com/index.php?thr ... ndby.2728/

Tam piszą, że możńa taką samą funkcjonalność osiągnąć za pomocą Automate (https://play.google.com/store/apps/deta ... mate&hl=pl) ale ta aplikacja jest tak potężna że liczba możliwości konfiguracji mnie póki co pokonała. Sposób działania jednak pozostanie ten sam.

Jak wydłubię coś co działa w 100% dobrze to napiszę szczegółowe how-to.
User avatar
michael
Posts: 1299
Joined: Wed Nov 09, 2016 8:00 am
Location: Wojkowice

Post

Dzięki pobawie się coby zaparkować mojego 22-letniego Dodge'a :D na placu uruchamiając co bądź głosem. Hehhehhe....
Szkoda, że dzieli nas taka odleglość bo z chęcią napiłbym się z Wami dobrego piwa.
Może kiedyś dojdzie do jakiegoś zlotu użytkowników Supli :D
:mrgreen: :mrgreen: :mrgreen:
User avatar
fracz
Posts: 2256
Joined: Fri Oct 28, 2016 10:56 pm
Location: Kraków

Post

Mamy to :D

https://www.youtube.com/watch?v=ffIQkNhfrzw

Zbieram materiały do instrukcji. Stay tuned.
User avatar
Espablo
Posts: 1754
Joined: Wed Jun 29, 2016 5:04 pm
Location: Oświęcim

Post

No poprostu BAJKA!!!
Każde urządzenie elektryczne działa o wiele lepiej jeśli podłączysz je do prądu. :? :roll:
User avatar
fracz
Posts: 2256
Joined: Fri Oct 28, 2016 10:56 pm
Location: Kraków

Post

Na początku upewniamy się czy w Androidzie mamy Google Now. W tym celu przytrzymujemy długo "domek" i powinny się pokazać jakieś śmieciowe informacje. Jak uruchamiacie to pierwszy raz to będzie się pytać o jakieś pozwolenia to na wszystko tak.

Następnie klikamy w przycisk w lewym górnym rogu i idziemy do Ustawienia > Wyszukiwanie głosowe. Aby "Ok, Google" działało na każdym ekranie a nie tylko przy włączonej aplikacji Google Now, trzeba ustawić język angielski jako główny a dodatkowo język polski. W tym celu wybieramy "Języki", zaznaczamy oprócz polskiego także "English (UK)" i zatwierdzamy zmianę. Jeśli się zapyta czy chcemy ustawić angielski jako główny to tak, chcemy tak zrobić.

Image

Następnie wybieramy opcję niżej "Wykrywanie OK, Google" i zaznaczamy tam opcję "Na dowolnym ekranie" co tak jak opis mówi - umożliwi wykrywanie komend zawsze gdy ekran jest włączony lub gdy urządzenie się ładuje. W tym momencie aplikacja może poprosić o nagranie trzy razy wzorca "OK, Google" żeby was dobrze rozpoznawało. Próbowałem nagrać "OK, Supla" ale nie chciało :lol: Na dwóch urządzeniach miałem na tym etapie problem że nie chciało przechodzić do kolejnego kroku nagrywania - restart urządzenia pomaga i konfigurację można ukończyć. Na koniec zaznacz jeszcze następną opcję "Twoje wyniki", która umożliwi wykonywanie komend nawet gdy telefon jest zablokowany (jeśli oczywiście chcesz żeby tak było).

Wyjdź teraz do ekranu głównego i upewnij się że jak powiesz "OK, Google" to włącza się rozpoznawajka.

Teraz pobierz i skonfiguruj skrypty supla https://github.com/fracz/supla-scripts na swojej malinie / serwerze, tak jak do tej pory. Jak już masz zainstalowane to zrób tam git pull.

Oprócz podstawowej konfiguracji skryptów stwórz także plik voice/config.php w którym ustalisz na jaką komendę ma się co dziać. Przykład:

Code: Select all

<?php
return [
    [
        'commands' => [
            'włącz światło w sypialni',
            'ciemno jak w budzie'
        ],
        'action' => 'turnOn,123|turnOn,124',
        'feedback' => 'światło w sypialni zostało włączone',
    ],
    [
        'commands' => [
            'wyłącz światło w sypialni',
            'ale tu jara'
        ],
        'action' => 'turnOff,123',
    ],
    [
        'commands' => [
            'otwórz bramę wjazdową',
            'zatrzymaj bramę wjazdową',
            'zamknij bramę wjazdową',
        ],
        'action' => 'openClose,1234',
    ]
];
Jak widzicie, możemy zdefiniować wiele komend i akcji które na komendę mają się wykonać. Może też być wiele wariantów tej samej komendy, dzięki czemu można ustalić kilka komend głosowych z tym samym rezultatem. Przykład wyżej. Notacja akcji jak w scenach viewtopic.php?f=9&t=2059 czyli na jedną komendę może reagować kilka kanałów. Ważne, by kodowanie tego pliku było UTF-8, bo pewnie polskie znaki w komendach u nas się będą zdarzać.

Jak już mamy skrypty, pozostaje wysyłanie komendy powiedzianej do Google Now do skryptu i zacznie wszystko banglać.

W tym celu instalujemy Automate https://play.google.com/store/apps/deta ... b.automate Następnie wybieramy przycisk z ludkami na górze (automate na początku pyta się co chwile i chce "instalować" jakieś uprawnienia, do sieci, karty sd itp - pozwalać). Następnie klikamy przycisk lupy do szukania i szukamy "Supla". Powinno wyszkoczyć "SUPLA Voice" - instalujemy (https://llamalab.com/automate/community/flows/12342).

Jak się zainstaluje to z ekranu głównego aplikacji otwieramy SUPLA Voice, włączamy ołówek na górze (edytuj) > Flowchart, i powinny się pojawić trzy bloki algorytmu automate:
Screenshot_20170520-231919.png
W bloku o nazwie "Set variable scriptsUrl to..." wpisujemy w cudzysłowach adres, gdzie dostępne są zainstalowane skrypty bez slasha na końcu, np:

Code: Select all

"https://twojamalina.eu/supla-scripts
.

Jeżeli skrypty są chronione hasłem, należy login i hasło podać w konfiguracji drugiego widocznego bloku o nazwie "HTTP Request" w polu BASIC AUTHORIZATION ACCOUNT.

Zatwierdzamy wszystkie zmiany fajkami aż dochodzimy do ekranu SUPLA Voice:

Image

I tutaj z góry na dół wciskamy wszystkie "Install permission" oraz "Install accessibility service". To drugie jest po to by komendy działały na ekranie blokady. W okienku które się tam pojawi ma być "Automate - Włączone".

Wciskamy "Start". Od tej pory Automate obserwuje co "wgadujemy" do Google Now i wysyła to co wgadaliśmy do skryptu supla.

No to teraz
Ok, Google, dojeżdżam do domu
i niech się wam wszystkie bramy otworzą :D

Debugowanie:
Jeśli coś nie działa, zobaczcie logi w Automate (jak się otworzy szczegóły SUPLA Voice to tam są). Jeśli coś tam się pojawia to znaczy że komunikacja Google Now <-> Automate działa. Jeśli jest coś na czerwono to znaczy że jest jakiś problem po HTTP (złe hasło? zły adres?).
Jeśli tam jest ok - można w konfiguracji flowchart w tym samym bloku co wcześniej ustawić, żeby zapisywał odpowiedź skryptu do pliku. To też może pomóc.
You do not have the required permissions to view the files attached to this post.
Last edited by fracz on Mon May 22, 2017 6:15 am, edited 1 time in total.
User avatar
michael
Posts: 1299
Joined: Wed Nov 09, 2016 8:00 am
Location: Wojkowice

Post

Zrobiłem wszystko wg instrukcji, ale na hasło "OK, Google Włącz światło w salonie" otwierają mi się wyniki wyszukiwania słów kluczowych Google.
W logach niby wszystko OK, a nie bangla :(
Co może być nie tak?
:mrgreen: :mrgreen: :mrgreen:
User avatar
fracz
Posts: 2256
Joined: Fri Oct 28, 2016 10:56 pm
Location: Kraków

Post

Wyszukanie w Google nastąpi zawsze - tak. Google Now nie wie że wykorzystujemy go na lewo.

Jeśli logi Automate pokazują że request do skryptów sie wykonał, to upewnij sie że plik konfiguracyjny jest w UTF-8, lub na początku spróbuj komendę bez polskich znaków i zobacz czy wtedy zadziała.
User avatar
michael
Posts: 1299
Joined: Wed Nov 09, 2016 8:00 am
Location: Wojkowice

Post

Automate pokazuje, że request się wykonał, kodowanie to UTF-8, bez polskich znaków też próbowałem i cisza.
:mrgreen: :mrgreen: :mrgreen:
User avatar
fracz
Posts: 2256
Joined: Fri Oct 28, 2016 10:56 pm
Location: Kraków

Post

W ustawieniach bloczka Request w Automate wybierz opcję Response > Save to file i wskaż np. główny katalog karty pamięci. Potem, jak powiesz mu jakąś komendę i Automate wykona request, powinien na telefonie pojawić się plik o nazwie "voice" zawierający odpowiedź skryptu.

Return to “Pomysły i koncepcje”