Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Kategoria: Kamery IP / Alarmy / Automatyka Bram
Montersi
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Bramka SMS z interfejsem webowym na Raspberry Pi

ghost666 15 Maj 2017 19:20 10128 7
  • 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:

    Kod: bash
    Zaloguj się, aby zobaczyć kod


    Następnie insyalujemy PHP:

    Kod: bash
    Zaloguj się, aby zobaczyć kod


    Zaraz potem bazę danych PostgreSQL:

    Kod: bash
    Zaloguj się, aby zobaczyć kod


    Oraz mono:

    Kod: bash
    Zaloguj się, aby zobaczyć kod


    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ę:

    Kod: bash
    Zaloguj się, aby zobaczyć kod


    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:

    Kod: bash
    Zaloguj się, aby zobaczyć kod


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

    Kod: bash
    Zaloguj się, aby zobaczyć kod


    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:

    Kod: sql
    Zaloguj się, aby zobaczyć kod


    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:

    Kod: php
    Zaloguj się, aby zobaczyć kod


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

    Kod: php
    Zaloguj się, aby zobaczyć kod


    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:

    Kod: csharp
    Zaloguj się, aby zobaczyć kod


    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:

    Kod: bash
    Zaloguj się, aby zobaczyć kod


    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


    Fajne!
  • #2 16 Maj 2017 08:48
    eDZio
    Poziom 15  

    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 16 Maj 2017 21:00
    perfi
    Poziom 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 http://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...

  • #4 17 Maj 2017 12:44
    Hetii
    Poziom 14  

    A czy czasem nie prościej i taniej zastosować taki moduł?
    Koszt 3.41$ + 2$ za esp8266 w roli serwera http/rest.

    Bramka SMS z interfejsem webowym na Raspberry Pi

  • #5 03 Cze 2017 23:29
    serafo
    Poziom 12  

    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 08 Cze 2017 09:04
    cypeks
    Poziom 10  

    Hetii napisał:
    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 13 Cze 2017 14:06
    Hetii
    Poziom 14  

    cypeks napisał:
    Hetii napisał:
    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 15 Cze 2017 12:46
    cypeks
    Poziom 10  

    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.

 
Promocja -20%
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME
tme