Задать вопрос

Как отправить смс с raspberry pi при срабатывании датчика движения ?

Приветствую Вас.
Собственно сам вопрос в заголовке.
У меня уже имеется приложение способное отправлять смс на указанный номер с нужными мне данными . Данное приложение написано на с++ и библиотеке Qt.
Хочу приобрести raspberry pi . В отличии от arduino понравился возможностью работы из-под linux'а. Предположим установил я на него Qt библиотеки (хотя можно и без этого. Собрать прогу статически не так уж и сложно). Подключил датчик движения . Как мне теперь отловить данные с датчика ? а именно тот момент когда кто то прошёл мимо .
Спасибо за внимание .

P.S.: может и глупо задавать такие вопросы . но не сталкивался я ещё с raspberry pi да и программирование микроконтроллеров в общем.
  • Вопрос задан
  • 7166 просмотров
Подписаться 6 Оценить Комментировать
Решения вопроса 2
Salavat
@Salavat
Пример подключения датчиков: habrahabr.ru/post/167459
или linux.cpms.ru/?p=7774
а смс я бы сделал через api замечательного сервиса, будет строчка http запроса:
sms.ru/sms/send?api_id=xxx_key_xxx&to=7906xxxxxxx&...
Тем более на свой номер - бесплатно.
Ответ написан
LittleBuster
@LittleBuster
Я делаю так:
#include <stdio.h>
#include <curl/curl.h>
#include <bcm2835.h>

#define PIN 4 //GPIO куда включен датчик

void send_sms( const char *text, const char *phone, const char *api_key ) {
	char url[1024];
	char out_text[2048];
	CURL *curl_handle;

	strcpy(out_text, "text=");
	strcat(out_text, text);
	strcpy(url, "http://sms.ru/sms/send?api_id=");
	strcat(url, api_key);
	strcat(url, "&to=");
	strcat(url, phone);	

	curl_handle = curl_easy_init();
	curl_easy_setopt(curl_handle, CURLOPT_URL, url);
	curl_easy_setopt(curl_handle, CURLOPT_POST, 1);
	curl_easy_setopt(curl_handle, CURLOPT_POSTFIELDS, out_text);
	curl_easy_perform(curl_handle);
	curl_easy_cleanup(curl_handle);
}

int main(int argc, char **argv) {
	unsigned isDetect = 0;

	bcm2835_init();
	bcm2835_gpio_fsel(PIN, BCM2835_GPIO_FSEL_INPT);

	while(1) {
		int lev = bcm2835_gpio_lev(PIN); //1 - если обнаружено движение

		if ((lev == 1) && (isDetect == 0)) {
			send_sms("Обнаружен вор!", "7913482*****", "6fc2ba57-f75e-4e84-******-***");
			isDetect = 1;
		}
		bcm2835_delay(1000);
	}
	bcm2835_close();
}

gcc main.c -O3 -Wall -o app -lbcm2835 -lcurl
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы