March 23, 2016

Combining OpenHAB and Traccar for monitoring vehicle pings

I have the following task:

  1. I have installed a GPS tracker in car. While not moving the tracker sends to server a ping every 3 minutes.
  2. On server I am using traccar
  3. I have configured traccar to store its data in mysql
  4. Now each time when I receive a ping or location info from the tracker I have to notify OpenHab
  5. If there is not ping for approximately 20 minutes I have to send and alarm notification
So, here is what I have to do
(Useful article for reference)

1. Configure items and rules on OpenHab

Items


Group Car  (All)

DateTime Car_Last_ping   "Last Update [%1$td.%1$tm %1$tH:%1$tM]" (Car)
Switch Car_ping "Ping from car" (Car)

Rules

val Number NO_PING_DELAY = 20 // Minutes

  rule "Set last ping date"
  when
    Item Car_ping received update
  then
        postUpdate(Car_Last_ping, new DateTimeType())

  rule "Notify on car ping delay"
  when
    Time cron "0 0/10 * * * ?" // Every 10 minutes
  then
    var DateTimeType lastPingTime = Car_Last_ping.state as DateTimeType
    var Number delay = (now.millis - lastPingTime.getCalendar.getTimeInMillis) / 60000

    // logInfo("Solvek", "Lasted time "+delay)
    if delay>NO_PING_DELAY {
      sendTelegram("bot1", "No ping from car for a long time")
    }
  end

2. Install lib_mysqludf_sys library

In order to execute system commands from MySQL triggers we need UDF "sys_exec". It is defined in this library.

2.1. Install dependent library: sudo apt-get install libmysqlclient15-dev
2.2. Grab sys library sources: git clone https://github.com/mysqludf/lib_mysqludf_sys.git
2.3. cd lib_mysqludf_sys
2.4. Install using sudo ./install.sh
2.5. If you are getting errors during compilation modify Makefile as described here and goto 2.4.
2.6. If no errors happens then goto 2.9. However if you get error: "ERROR 1126 (HY000) at line 29: Can't open shared library 'lib_mysqludf_sys.so' (errno: 0 /usr/lib/mysql/plugin/lib_mysqludf_sys.so: cannot open shared object file: No such file or directory) ERROR: unable to install the UDF" do the following steps.

2.7. Copy lib_mysqludf_sys.so from usr/lib to usr/lib/mysql/plugins
2.8. Return back to lib_mysqludf_sys sources directory and manually install UDF by running command: mysql -u root -p mysql < lib_mysqludf_sys.sql

You may test UDF function by quiring SELECT sys_exec('curl 
http://localhost:8080/CMD?Car_ping=ON')

2.9. If you get 0 in result then it is ok.
On Ubuntu apparmor can prevent executing of UDF (and you get 32512 instead of 0). In this case you have to disable apparmor it for mysql:
sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/
sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld

More details here.

3. Create a trigger on positions table in traccar database

DROP TRIGGER IF EXISTS `insert_positions`;
CREATE DEFINER=`root`@`localhost` TRIGGER `insert_positions` 
AFTER INSERT ON `positions` 
FOR EACH ROW
 IF NEW.device_id = 2 THEN
 SET @exec_var = sys_exec('curl http://localhost:8080/CMD?Car_ping=ON');
 END IF

Note here NEW.device_id =2. "2" is the id of your device to monitor, you have to replace it with actual value.
Also shell command curl http://localhost:8080/CMD?Car_ping=ON allows to update an item on OpenHAB.

March 7, 2016

Система оцінювання якості повітря в кімнаті



Властивості системи

  1. Вимірює концентрацію CO2 (вплив концентраії CO2 на людину)
  2. Вимірює темературу
  3. Вимірює вологість
  4. Вимірює атмосферний тиск
  5. Відправляє дані у мережу (по UDP)
З боку сервера розумний дім на базі OpenHAB
  1. Відображає всі показники
  2. Відображає графіки деяких показників
  3. Є правило для оповіщення про необхідність провітрити кімнату
  4. Є правило для оповіщення про необхідність зменшити подачу тепла

January 21, 2016

Приборкування китайського автомобільного GPS трекера

Є ось такий GPS трекер.
Продавець позиціонує його як GPS103B, але інструкція в комплекті приходить для пристрою GPS102B, крім того в комплекті є диск з різними інструкціями, в т.ч. і для GPS103B. В принципі ні одна ні інша в точності не підходять, команди визначав методом тику :)
Більше того, протокол, за яким пристрій відпавляє дані на сервер взагалі зовсім інший і більше схожий на GT06 чи GT07 (це треба враховувати при виборі типу девайсу на сайтах).

Команди

Конфігурувати можливо тільки через СМС. USB порт можна використовувати тільки для перепрошивки. Початковий пароль 123456.
  • begin{password} - переведення телефону в режим настройки
  • password123456 {password} - змінити пароль, 123456 - тут це старий пароль
  • admin{password} {phone_number} - додати адмінський номер телефону, їх можна додати кілька, на кожен з цих номерів відправлятиметься СМС (наприклад при натисканні кнопки SOS). Наприклад "admin123456 +380501234567".
  • noadmin{password} {phone_number} - видалити телефон з адмінських
  • fix030s***n{password} - задати періодичність відправки даних на сервер, тут 030 - це 30 секунд. Фактично це інтервал відправки під час руху, якщо машина стоїть, то вона просто відправляє пінг (інформацію про статус без координат) кожні 3 хвилини. Інформація про статус містить силу GPS та GSM сигналу.
  • APN{password} {apn_name} - задати ім’я APN. Наприклад для MTS "APN123456 internet"
  • up{password} {apn_username} {apn_password} - логін та пароль для налаштування мобільного інтернету. Для багатьох операторів їх задавати не потрібно
  • adminip{password} {ip} {port} - задати дані сервера, на який періодично відправляються дані про місцерозсташування. Наприклад "adminip123456 88.198.136.232 10127"
  • time zone{password} {tz} - задати часовий пояс. Наприклад для України це "time zone123456 2". У фразі "time zone" має бути пробіл.
  • check{password} - отримати поточний статус з пристрою 
  • imei{password} - отримати IMEI 
  • monitor{password} - переверти в режим монітору. В цьому режимі, якщо дзвонити на трекер, він буде піднімати трубку і можна буде слухати, що відбувається в салоні (через мікрофон)
  • tracker{password} - переверти в режим трекера. В цьому режимі, якщо дзвонити на трекер прозвучить два довгих гудки, після чого дзвінок відіб’ється і у відповідь прийде інформація про поточне місцерозсташування.
  • GPRS{password} - задати відправку даних через GPRS
  • SMS{password} - задати відправку даних через SMS 

Параметри
  • {password} - пароль, 6 цифр
  • {phone_number} - номер телефону в міжнародному форматі, з плюсом, наприклад +380501234567
  • {apn_name} - ім’я APN. Залежить від оператора мобільного зв’язку.

Підключення до сайту

Вдалось підключити до сервісу http://gps-tracker.com.ua. На цьому сайті можна безкоштовно підключити один пристрій, у бесплатній версії для звітів доступні дані тільки за останню добу.
Для пристрою потрібно задати сервер 88.198.136.232 та IP 10127 (див команду adminip), при додаванні пристрою на сайті вибрати тип пристрою GT06 (Concox).
На самому пристрої виписаний його IMEI, його потрібно буде ввести на сайті для пристроя.

Інший сайт для трекінга, до нього мені не вдалось підключитись: http://gps-trace.com/.

Документацію для протоколів GT06 і GT07 можна знайти тут.