Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Bramka SMS z interfejsem webowym na Raspberry Pi

ghost666 15 May 2017 19:20 22524 8
  • Bramka SMS z interfejsem webowym na Raspberry Pi
    Poniższy opis pokazuje w jaki sposób można przekształcić Raspberry Pi z modemem GSM na USB w bramkę do wysyłania wiadomości SMS poprzez interfejs webowy. Projekt stworzony został wykorzystaniem PHP oraz C#. Oprogramowanie, które komunikuje się z modemem napisane zostało w C#, a front-end webowy w PHP. Dodatkowo system wyposażony jest w bazę PostgreSQL, która służy do przechowywania historii wysyłanych SMSów. Modem GSM wymaga karty SIM - koszt karty i wysyłanych wiadomości zależny jest od operatora.

    Krok 1: Potrzebne elementy

    Potrzebne będą tylko dwa urządzenia: Raspberry Pi oraz modem GSM na USB z aktywną kartą sieciową.

    Krok 2: Wymagania programowe

    Zanim rozpoczniemy zmagania z programem na Raspberry Pi zainstalować musimy:

    * Apache2
    * PHP
    * PHP PDO
    * PHP PostgreSQL
    * Mono dla C#

    Aby zainstalować pakiety Apache2 w konsoli wpisujemy:

    Code: bash
    Log in, to see the code


    Następnie insyalujemy PHP:

    Code: bash
    Log in, to see the code


    Zaraz potem bazę danych PostgreSQL:

    Code: bash
    Log in, to see the code


    Oraz mono:

    Code: bash
    Log in, to see the code


    Krok 3: Modem GSM na USB i Raspberry Pi

    W pierwszej kolejności podłączamy do wolnego portu USB modem GSM i w konsoli wpisujemy polecenie lsusb. Powinniśmy zobaczyć nasz modem; na przykład:

    Code:
    Bus 001 Device 005: ID 12d1:1506 Huawei Technologies Co., Ltd. E398 LTE/UMTS/GSM Modem/Networkcard


    Port szeregowy z jakiego korzysta modem opisany będzie jako /dev/ttyUSB0, więc jeśli wykorzystamy komendę:

    Code: bash
    Log in, to see the code


    zobaczymy listę urządzeń tego rodzaju:

    Code:
    /dev/ttyUSB0 /dev/ttyUSB1 /dev/ttyUSB2


    Możemy przetestować teraz komendy AT na naszym modemie USB. W tym celu zainstalujemy program minicom, który pozwoli nam wysłać do niego komendy. W terminalu wpisujemy:

    Code: bash
    Log in, to see the code


    Po zainstalowaniu minicoma musimy go skonfigurować. Wpisujemy w terminalu następującą komendę:

    Code: bash
    Log in, to see the code


    W ustawieniach wybieramy "Serial port setup" i jeżeli wszystkie konfiguracje się zgadzają, naciskamy "OK".



    Krok 4: Utworzenie bazy danych

    Teraz musimy utworzyć bazę danych PostgreSQL, w której przechowywać będziemy informacje o wysłanych SMSach. Tabela posiada następujące pola:

    Nazwa polaOpis
    sms_idNumer ID wiadomości
    date_insertData dodania wpisu
    date_sendData wysłania SMSa
    numberNumer telefonu odbiorcy
    messageTreść wiadomości
    date_errorJeśli wystąpił błąd - data jego wystąpienia
    date_cancelPole informujące o anulowaniu wysyłania SMSa


    I zdefiniowana jest w następujący sposób:

    Code: sql
    Log in, to see the code


    Krok 5: Formularz do wysyłania wiadomości tekstowych

    Zanim zaczniemy korzystać z poniższego skryptu musimy skonfigurować połączenie z serwerem bazy danych. Autor konstrukcji korzysta z zewnętrznego serwera, ale nie ma problemu aby hostować bazę danych lokalnie na Raspberry Pi.

    Musimy uzupełnić następujące dane w skrypcie:

    Code: php
    Log in, to see the code


    Sam skrypt jest bardzo prosty - zawiera formularz do wysłania SMSa. Wysłane wiadomości zapisywane są w tabeli "sms" opisanej powyżej.

    Code: php
    Log in, to see the code


    Krok 6: Oprogramowanie do wysyłania SMSów

    Oprogramowanie obsługujące modem GSM napisane zostało w C#. Aby móc korzystać z stworzonych w tym języku programów pod Linuxem musimy posiadać zainstalowane Mono. W pierwszej kolejności musimy skonfigurować w programie kilka stałych z danymi do logowania do bazy danych:

    Code: csharp
    Log in, to see the code


    Cały projekt w C# pobrać można tutaj.

    Projekt skompilowany został w MonoDevelop pod Windowsem, a następnie skopiowany na 'Malinę'. Po kompilacji tworzymy folder SMS-cronb w folderze domowym i kopiujemy tam następujące pliki z projektu: Mono.Security.dll, Npgsql.dll oraz SMS-cron.exe.

    Następnie otwieramy crontaba:

    Code: bash
    Log in, to see the code


    i dodajemy tam jednolinijkowy wpis i zapisujemy:

    Code:
       * * * * * ./home/pi/SMS-cron/SMS-cron.exe
    \

    Dzięki temu co minutę SMS-cron będzie się uruchamiał i sprawdza i tablicę "sms"z nowymi SMSami do wysłania.

    Bramka SMS jest już gotowa

    Bramka SMS z interfejsem webowym na Raspberry Pi


    Źródło: http://geek.adachsoft.com/home/article/id/20/n/Raspberry-PI-SMS-sender/refid/fb

    Cool? Ranking DIY
    Can you write similar article? Send message to me and you will get SD card 64GB.
    About Author
    ghost666
    Translator, editor
    Offline 
    Fizyk z wykształcenia. Po zrobieniu doktoratu i dwóch latach pracy na uczelni, przeszedł do sektora prywatnego, gdzie zajmuje się projektowaniem urządzeń elektronicznych i programowaniem. Od 2003 roku na forum Elektroda.pl, od 2008 roku członek zespołu redakcyjnego.
    ghost666 wrote 11108 posts with rating 9417, helped 157 times. Live in city Warszawa. Been with us since 2003 year.
  • #2
    eDZio
    Level 16  
    Nie widzę by ta bramka miała możliwość odbierania smsów, jedynie wysyłanie. Na Linuxa już chyba lepiej użyć Gammu SMSD, może działać jako deamon, obsługuje różne bazy danych, może zamiast bazy korzystać z plików. To wyżej to tylko ciekawostka, dowód, że się da.
  • #3
    perfi
    Level 13  
    Jakiś czas temu napisałem soft który pozwala zamienić telefon z Androidem w bramkę SMS (polecenia wysyła się za pomocą REST). Zainteresowanych odsyłam do https://www.elektroda.pl/rtvforum/topic3253249.html

    Piszę o tym, gdyż wydaje mi się to prostsze niż powyższe rozwiązanie, choć trzeba mieć kompa do wydawania komend REST...
  • #5
    serafo
    Level 13  
    Witam,

    jako projekt edukacyjny - OK
    do praktycznego zastosowania - polecam smstools i kilka tricków oszczędzających kartę pamięci w Rpi.

    Ser@fin
  • #6
    cypeks
    Level 11  
    Hetii wrote:
    A czy czasem nie prościej i taniej zastosować taki moduł?
    Koszt 3.41$ + 2$ za esp8266 w roli serwera http/rest.

    Jeszcze trzeba do tego soft napisać.
  • #7
    Hetii
    Level 16  
    cypeks wrote:
    Hetii wrote:
    A czy czasem nie prościej i taniej zastosować taki moduł?
    Koszt 3.41$ + 2$ za esp8266 w roli serwera http/rest.

    Jeszcze trzeba do tego soft napisać.


    A proszę bardzo, Sim800l tam jest proste sterowanie po AT, a co do esp to polecam esp-open-rtos.

    Pozdrawiam.
  • #8
    cypeks
    Level 11  
    Komendy AT to nie problem, ale do tego trzeba jeszcze dorobić interfejs, najlepiej z książką adresową, listami korespondencyjnymi itp. przy większej ilości ESP może wymięknąć, tym bardziej, że pamięć SPIFFS na której można b trzymać te dane jest koszmarnie wolna.
  • #9
    sebapulawy
    Level 12  
    czy gdzies można zakupic jedno z powyższych rozwiązań ?