Monitorowanie Raspberry Pi Poprzez Komunikator Internetowy
Total Page:16
File Type:pdf, Size:1020Kb
PROJEKTY SOFT Monitorowanie Raspberry Pi poprzez komunikator internetowy Raspberry Pi to świetna platforma do stworzenia np. systemu automatyki ma serca ani talentu (ani czasu) do opraco- domowej. Duża liczba gotowych modułów oraz liczne przykładowe aplika- wywania GUI, wykorzystanie komunikatora cje pozwalają niemal błyskawicznie zestawić dosyć złożony system nadzo- może być zbawieniem. rujący mieszkanie lub dom. Problem pojawia się dopiero na etapie tworze- Który komunikator wybrać? nia interfejsu użytkownika. Umieszczenie w nim wszystkich funkcji oraz Na wstępie warto zdecydować się na któryś wbudowanie mechanizmu powiadomień jest po prostu mocno czasochłon- z dostępnych komunikatorów internetowych. ne. Zamiast tego można swój bezinterfejsowy system wzbogacić o obsługę Wybór nie jest mały, ale jeśli skoncentrować komunikatora internetowego i sterować domem w sposób tekstowy. się na jego uniwersalności, niezawodności lub otwartości oraz dostępności narzędzi dla Raspberry Pi, można go szybko ograniczyć. Na wstępie należy przyznać – sterowanie Natomiast używanie komunikatora inter- Ostateczna decyzja zależy od tego, kto i za urządzeniami za pomocą komend teksto- netowego w aplikacji przemysłowej to po- pomocą jakiego urządzenia będzie łączył się wych to obecnie archaizm, który w komercyj- myłka (z zastrzeżeniem, o którym piszemy z Raspberry Pi. Dobrym wyborem wydaje się nych rozwiązaniach konsumenckich raczej później). Ale dla majsterkowicza, który zna użycie bardzo popularnej usługi WhatsApp, nigdy nie będzie miał już zastosowania. się na elektronice i programowaniu, ale nie które nie tylko dostępna jest prawie na całym Tabela 1. Biblioteki XMPP dostępne w różnych językach Tabela 1. cd. programowania Nazwa Język programowania Nazwa Język programowania jabber.net C# / .net / Mono agsXMPP SDK C# / .net / Mono jabber.py Python Aioxmpp Python JabberLib Tcl AnyEvent::XMPP Perl Jabber Stream Objects (JSO) Java as3xmpp Flash / ActionScript JAXL PHP AXMPP Ada jQuery-XMPP-plugin JavaScript Babbler Java Jreen C++/Qt Blather Ruby JSJaC JavaScript cl-xmpp Lisp Libstrophe C Coversant SoapBox SDK Studio C# / .net / Mono / C++ Libpurple C/C++ dojox.xmpp JavaScript Lightr PHP Dxmpp C++ Loudmouth C Echomine Feridian Java MatriX C# / .net / Mono Eiffel PHP net::XMPP Perl Emite Java node-xmpp JavaScript Escalus Erlang Oajabber C++ Exmpp Erlang Pontarius XMPP Haskell Frabjous JavaScript Pyxmpp Python Gloox C++ pyxmpp2 Python Headstock Python QXmpp C++ Hsxmpp Haskell seesmic-as3-xmpp Flash / ActionScript Hxmpp haXe Sharp.Xmpp C# / .net / Mono Iksemel C Skates Ruby IP*Works Internet Toolkit ActiveX, C++, C#, SleekXMPP Python Iris C++ Slixmpp Python ELEKTRONIKA PRAKTYCZNA 3/2017 47 PROJEKTY SOFT Tabela 1. cd. Tabela 2. Serwery XMPP dla różnych systemów opera- cyjnych Nazwa Język programowania Nazwa Platforma (System operacyjny) Smack Java (Java SE 7 and Android) Apache Vysper Windows / Linux stanza.io JavaScript Citadel Linux strophe.js JavaScript CommuniGate Pro Linux / Mac OS X / Windows StropheCappuccino Objective-J Coversant SoapBox Server Windows Swiften C++ Djabberd Linux Tinder Java Ejabberd Linux / Mac OS X / Solaris / Windows Txmpp C++ IceWarp Linux / Windows Twisted Words Python iChat Server Mac OS X Ubeity C# in.jabberd Linux Verse Lua Isode M-Link Linux / Solaris / Windows XIFF Flash / ActionScript Jabber XCP Linux / Solaris / Windows xmpp-psn Python jabberd 1.x Linux Java / Android / Google Web jaxmpp2 Toolkit jabberd 2.x Linux / *BSD / Solaris / Windows xmpp4js JavaScript Jerry Messenger Linux / Windows XMPP4R Ruby Kwickserver Windows xmpp4r-simple Ruby Metronome IM Linux / Mac OS X Xmppframework Objective C MongooseIM Linux / Mac OS X Xmpphp PHP Openfire Linux / Mac OS X / Solaris / Windows Xmpppy Python Oracle Communications IM Server Linux / Solaris / Windows XMPP-FTW JavaScript Prosody IM Linux / Mac OS X / Windows Z-XMPP JavaScript Psyced Linux / Mac OS X / Windows świecie, ale także oprogramowanie klienc- w aplikacjach In- Siemens OpenScape Linux kie zostało przygotowane na różne systemy ternetu Rzeczy. Tigase Linux / Solaris / Mac OS X / Windows operacyjne, a nawet można z niego korzystać Biblioteki XMPP Vines Linux / Mac OS X przez przeglądarkę internetową. Zaletą jest są dostępne m.in. Wokkel Linux / Solaris / Mac OS X też szyfrowanie komunikacji w trybie „end- w Pythonie, Ja- -to-end”, co oznacza – jeśli wierzyć usługo- vaScripcie, C++, dawcy, że przesyłane wiadomości są czytelne PHP i w Javie, przy czym w wielu przy- python3-dateutil, a w przypadku chęci za- tylko dla nadawcy i adresata, a potencjalni padkach istnieje więcej niż jedno rozwią- pewnienia szyfrowania: protobuf, pycrypto włamywacze musieliby zastosować silne zanie dla danego języka (tabela 1). Wybór i python3-axolotl-curve25519. Jeśli biblioteka maszyny deszyfrujące lub niezłą socjotech- serwerów też jest bardzo duży (tabela 2), ma być obsługiwana z linii komend, należy nikę. Pewnym problemem jest natomiast to, nie mówiąc już o liście gotowych aplikacji też doinstalować argparse, readline i ew. pil- że WhatsApp wymaga aktywnego numeru te- klienckich (tabela 3). low, który pozwala przesyłać obrazy. lefonu do rejestracji urządzenia klienckiego Teoretycznie, po pobraniu obrazu pełnego oraz że jeden numer może być wykorzysty- WhatsApp przez Yowsup Raspbiana instalacja Yowsupa powinna być wany przez maksymalnie jedno urządzenie W niniejszym przykładzie pokażemy, jak naj- prosta. Powinno wystarczyć polecenie pip w danej chwili. To uproszczenie może spra- szybciej podłączyć Raspberry Pi do popular- install yowsup2, ale już w wypadku obrazu wiać pewne trudności, ale w obecnych cza- nego komunikatora, a więc do WhatsAppa. Raspbiana w wersji lite, programu python- sach całkiem łatwo jest choćby na chwilę W dalszej części artykułu pokażemy, jak sko- -pip nie ma domyślnie zainstalowanego. zdobyć numer telefonu, za pomocą którego rzystać z czystego XMPP. Można go doinstalować poleceniem sudo można zarejestrować się w WhatsApp. By obsłużyć WhatsApp, użyjemy otwar- apt-get install python-pip lub gdy chcemy Alternatywnym sposobem będzie użycie tej biblioteki Yowsup w wersji 2.5.0, której korzystać z Pythona 3 (u nas dopiero tak własnego (lub gotowego, bezpłatnego) ser- szczegóły można poznać na GitHubie, pod działało) sudo apt-get install python3-pip. wera XMPP, a więc standardu bazującego adresem https://github.com/tgalal/yowsup. Wraz z programem python-pip doinstaluje na dawniej popularnym Jabberze. Aktualnie Biblioteka Yowsup została napisana w Py- się szereg narzędzi dla Pythona, które też XMPP też wspiera szyfrowanie, a możliwość thonie – i jak chwalą się jej autorzy – po- mogą się przydać. postawienia własnego serwera sprawia, że da służyła m.in. do utworzenia nieoficjalnej Ponadto instalator programu Yowsup2 się w pełni panować nad stanem komunika- aplikacji klienckiej Wazapp na telefon No- kończy działanie poleceniem setup.py in- cji. Co więcej, XMPP jest otwartym standar- kia N9 a także na system operacyjny Black- stall, które wymaga uprawnień roota, by móc dem, opartym na XML-u i sformalizowanym berry 10. Yowsup teoretycznie wymaga Py- zmodyfikować wszystkie potrzebne pliki. przez organizację Internet Engineering Task thona 2.6 lub 3.0 albo ich nowszych wersji, Stąd instalację najlepiej wywołać za pomocą Force. Lata doświadczeń dużych firm spra- przy czym w trakcie naszych testów okazało sudo pip3 install yowsup2. Gdyby instalacja wiły, że XMPP uważa się za sprawdzony się, że działa dopiero z Pythonem 3. Ponadto, nie powiodła się z jakiegoś powodu, można protokół, który można wykorzystać w prze- konieczne jest zainstalowanie dodatko- pobrać źródła programu yowsup i samodziel- myśle i świetnie nadaje się on do zastosowań wych pakietów. Będzie to przede wszystkim nie go skompilować. W tym celu należy: 48 ELEKTRONIKA PRAKTYCZNA 3/2017 Monitorowanie Raspberry Pi poprzez komunikator internetowy Tabela 3. Aplikacje klienckie XMPP dla różnych syste- Tabela 3. cd. mów operacyjnych Nazwa Platforma (System operacyjny) Nazwa Platforma (System operacyjny) Kopete Linux Adium OSX Mcabber Console / Text-Mode Apple Messages OSX Miranda IM Windows AQQ Windows Miranda NG Windows Mobile (Android, iOS) / Linux / OSX / AstraChat Windows Monal IM Mobile (iOS) Beem Mobile (Android) Movim Przeglądarka BitlBee Linux Mozilla Thunderbird Linux / OSX / Windows Mobile (Android, Blackberry (BBOS), OneTeam for iPhone Mobile (iOS) BlueJabb Nokia Symbian S40/S60 i Asha) OneTeam Linux / OSX / Windows Boogie Chat Mobile (iOS) Pidgin Linux / OSX / Windows Buddycloud Mobile / Web / Console Poezio Console / Text-Mode Candy Przeglądarka Profanity Console / Text-Mode ChatSecure Mobile (Android, iOS) Psi+ Linux / OSX / Windows Coccinella Linux / OSX / Windows Psi Linux / OSX / Windows Conversations Mobile (Android) Quiet Internet Pager Windows Converse.js Przeglądarka qutIM Linux / OSX / Windows Coversant SoapBox Linux / Console / Text-Mode / Communicator Windows Salut à Toi Przeglądarka eM Client Windows Sim-IM Linux Empathy Linux Spark Linux / OSX / Windows Finch Console / Text-Mode SparkWeb Przeglądarka Gajim Linux / Windows Swift Linux / OSX / Windows GNU Freetalk Console / Text-Mode Talkonaut Mobile GreenJab IBM i Tigase Messenger Przeglądarka IM+ Mobile Tigase Minichat Przeglądarka Instantbird Linux / OSX / Windows Tkabber Linux / OSX / Windows irssi-xmpp Console / Text-Mode Trillian Windows/ OSX / Mobile / Przeglądarka jabber.el Linux V&V Messenger Windows Jabbim Linux / OSX / Windows Vayusphere Mobile (BlackBerry) JAJC Windows VSTalk Windows Jappix Przeglądarka WTW Windows Jitsi Linux / OSX