Łączenie aplikacji z innym urządzeniem z systemem linux.

0

Cześć,
chciałbym połączyć moją aplikację na androida z oprogramowaniem które znajduję się na Raspberry (system linux). Jedyny sposób jaki mi przychodzi do głowy to wspólna baza danych i wysyłanie przez Raspberry cyklicznych zapytań do bazy (po odbiorze jakiejś informacji ma na tej podstawie wykonywać jakąś funkcję). Czy są jakieś inne prostsze sposoby na łączenie tego typu urządzeń?

Moja aplikacja to coś typu pilot , na Raspberry jest urządzenie którym chcę sterować np. włączanie i wyłączanie urządzenia itd.

4

Aplikacja webowa na raspberry która odbiera i przetwarza żądania HTTP

2

To że chcesz Androida niewiele tu zmienia. Najprościej po prostu wystawić interfejs webowy na rpi (tak jak to wygląda w większości routerów klasy domowej). Jak się upierasz na appke to endpoint.
btw. zrobiłem kiedyś coś podobnego: https://github.com/BartekLew/dver . Jest dedykowane bardziej komputerom i stawia na maksymalny dostęp bez użycia ssh. Jednak może ci się do czegoś przyda.

0

Sterowanie przez bazę to zły pomysł. Mam podobną zagwozdkę i myślę, że lepiej wystawić REST API na raspberry pi tylko w tym wypadku trzeba pamiętać o kwestii zabezpieczenia tego REST API przed kimś niepowołanym - więc przy REST API dochodzi nam kwestia implementacja security. Zastanawiałam się jeszcze nad protokołem SSH - wtedy nie trzeba implementować security, bo SSH nam to załatwia, przez SSH masz możliwość łatwego sterowania komputerem z linuxem i podobno są na Androida biblioteki pozwalające połączyć się przez SSH. Tutaj minusem jest elegancja takiego rozwiązania w porównaniu do RESTa.

0

SSH załatwia Ci szyfrowanie. Jeśli chcesz się połączyć z apki, która zainstalujesz gdzieś na komórce, to musisz w niej gdzieś zapisać hasło. To hasło może potem wydobyć z apki każdy, kto ma jej pakiet.
Podobnie jest z bazą danych. Też musisz zapisać hasło w aplikacji i to znów nie jest dobry pomysł.

Zatem, jeśli Twoja apka ma być publicznie dostępna, to najlepszym rozwiązaniem jest restowe API. Tam możesz zaimplementować tworzenie nowego konta, logowanie i autoryzacje np za pomocą oAuth.

Jeśli jednak robisz małą aplikacje dla siebie i nikomu nie będziesz jej publicznie udostępniał, to spokojnie możesz integrować się nawet i przez bazę. Nie jest to optymalne, ale jeśli apka ma tylko czytać jakieś dane z bazy, to czemu nie ? Będzie działać.

0

Słuszne rozwiązania to albo serwer rest na malinie, albo (jeśli tylko lokalnie ma działać), komunikacja przez Bluetooth lub wysyłanie komend przez udp ewentualnie z opcją wifi direct. Wszelkie pomysły jakiegokolwiek pośredniego sterowania przez bazę danych lub ssh to są złe pomysły.

Jeśli ma to być na zewnątrz, to oczywiście api rest musi być zabezpieczone, czyli:

  • rejestracja i logowanie przez api - bearer authentication
  • https + cert pinning, w Androidzie np przez NSC lub na poziomie klienta http (OkHttp ma taką możliwość)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.