ITСooky

IT-рецепты съедобные и не очень!

Храним данные в SAP Cloud Platform![на самом деле нет]

дата 21.04.2017

ААААААА! Не смогу пройти мимо этой статьи habrahabr.ru/company/sap/blog/326526/ это же тот самый SAP lurkmore.to/SAP (осторожно МИДовская лексика)(можете смеяться читая, но там каждое слово правда). И вот никак не ждешь от SAP ничего бесплатного и работающего(только 30 дней) и вот на тебе, это как прям купить брелок Ferrari или кепку Porsche!!! Сразу скажу что trial(если его делать как по ссылке в хабрахабр) решение не рабочее, база останавливается каждые 12 часов, запуск в ручную, хочешь чтобы не останавливать 400 БАКСОВ в месяц!

В статье все хорошо разжованно, как всегда увидел возможность сделать все за 3 копейки и не устоял. Arduino Yun у меня нет, да и от куда она даже у китайцев стоит пол мрот и что?! вешать её на каждый датчик!!! Да и это решение вроде как специально для IoT значит всем подойдет!

Поехали по инструкции «Для того, чтобы зарегистрироваться в SAP Cloud Platform, нужно пройти по ссылке:
https://hcp.sap.com » и попробуйте не заглядывая в инструкцию зарегиться (да это уже началься тот самый SAP)

Идем дальше активируем Internte of Things модуль
идем на Home -> Services -> и тут крутим до Internte of Things

Тут нажмем Enable после того как она станет зеленой нажмем Go to services
Следующим появится окно где много чего

Жмем на Message Type и делам там как на картинке

Жмем Devices Type и делаем как на картинке

Жмем (есть нюанс) Device и делаем как на картинке

После нажатия Create появится токен который надо записать, если этот токен потеряется его не где смотреть, его надо будет генерировать занова

И еще нам нужны будут два ID из Message Type и Devices.

Далее надо нажать Deploy Message и там нажать Deploy

Протестировать у меня не получилось раздел Send and view messages,… пока не работает, чтобы он заработал надо пойти назад, я обычно жму на свой ID сверху от туда можно двигаться дальше

p1942561135trial > Java Applications > iotmms > Security > Roles

И добиваемся как на этой картине Assign и тут ручками, выбора не предлогается, вписывваем свой ID обязательно без слова trial. Это нам нужно было чтобы заработал раздел Send and view messages,….

Уже можно передавать в САП Облако данныеееее, но мне понадобиться следующее:

arduino_ch340_temp_ehernet_020 Метео станция на Arduino Uno которая просто генерирует сайт со строкой данных, вот по это статье Мониторим по сети — свет, температуру, движение с Arduino Uno R3 CH340G и строим графики!

и

Компьютер на Linux для сбора и передачи данных, подойдет любой но у меня вот этот, многострадальный Обзор-тестирование[пришлось еще одну купить] Orange Pi Zero 512Mb с коробкой и платой расширения!

И так сбор статистики на Orange Pi Zero

Ставим консольный браузер
sudo apt-get install lynx

Читаем сайт который нам генерирует Arduino с данными датчиков
lynx -source 192.168.1.177

Делаем скрипт, беру тот что у меня работал в FreeBSD только проверяю пути команд, . Работает не совсем так как на FreeBSD появляется сообщение Looking for не отключаемое, режу его awk. И сразу вставляю туда команду писать в облако. Скрипт сначала пишет данные в файл потом отдельно в облако (немного коряво потому что перед этим читаю файл).

vi andmon.sh
вставляю

#!/bin/bash
d=`/usr/bin/lynx -source -connect_timeout=10 192.168.1.177 | awk 'NR==2'`
if [ -z "$d" ]
then
t=`/bin/date +%Y"."%m"."%d"-"%H":"%M" "`
data=`/bin/cat /root/mon.log | /usr/bin/tail -n -1 | /usr/bin/awk '{print $2,
$3,$4,$5,$6}'`
/bin/echo "${t}${data}" >> /root/mon.log
exit
elif ! [ -z "$d" ]
then
t=`/bin/date +%Y"."%m"."%d"-"%H":"%M" "`
/bin/echo "${t}${d}" >> /root/mon.log
temp=`/bin/cat /root/mon.log | /usr/bin/tail -n -1 | /usr/bin/awk '{print $2}'`
humd=`/bin/cat /root/mon.log | /usr/bin/tail -n -1 | /usr/bin/awk '{print $3}'`
leig=`/bin/cat /root/mon.log | /usr/bin/tail -n -1 | /usr/bin/awk '{print $4}'`
/usr/bin/curl --header 'Authorization: Bearer b9f746c1edd6c319e0b5e201a9db6' --header 'Content-Type:application/json;charset=UTF-8' -k -X POST https://iotmmsp1942561135trial.hanatrial.ondemand.com/com.sap.iotservices.mms/v1/api/http/data/024c4240-c405-4431-9290-736f92098896 --data '{"mode":"async","messageType":"633509c4e7ccc5b082d4","messages":[{"Temperature":'$temp', "Light":'$leig', "Humidity":'$humd'}]}'
fi

Вот это надо заменить на ваши данные, смотрим в p1942561135trial > Services > Internet of Things — Overview > Go to services полезная ссылка надо её выучить наизусть
b9f746c1edd6c319e0b5e201a9db6 — секретный токен который показывают один раз при генерации в Device
024c4240-c405-4431-9290-736f92098896 — это ID в Devices
633509c4e7ccc5b082d4 — это ID в Message Types

Делаем скрипт исполняемым
chmod +x andmon.sh
И засовываем в крон
crontab -e
срочку

*/1 * * * * /root/andmon.sh

Это все теперь ждем пару дней и идем в облако смотреть. Просто 10 раз нажимаем мышкой по следующим пунктам меню, кстати меня всегда удивляло как SAP удалось сделать тормозящее текстовое меню, это не только тут и везде у них!

p1942561135trial > Services > Internet of Things — Overview > Go to services > Send and view messages, or perform other acctions > Display stored messages > нажимаю строку где упомянут ID Message Types(у меня 633509c4e7ccc5b082d4) > значок с графиками

Настройки по-умолчнаию ничего не позволяют увидеть, на настройки по-умолчанию сбрасывает каждый раз по закрытию страницы. Тут просто еще 5-10 щелчков мыши и мы сразу увидим график

И вот тут меня постигло главное разочарование, нет не то когда я узнал что всего 30 дней будет работать, нет не то когда я выучил наизусть беспорядочное и хаотичное меню(у них все так чесна чесна) а вот сейчас все ради чего это делалось — этот график показывает только последние 500 значений и все ничего не сделать!!!!

Но статья писалась не для практического использования а для знакомства с SAP о котором все так много говорят, опыт использвания SAP Cloud Platform можно экстраполировать на другие SAP продукты! Но вы не отчаивайтесь покупайте SAP облако за 400 бакс в месяц и комманду разработчиков и через пол года у вас будут такие же красивые графики, какие может сделать с gnuplot любой школьник за час!