локально, в дальнейшем думаю будет через инет, но пока что хочу разобраться локальноSilowar писал(а):Как у Вас подключена ССU? Можно начать с этого.
Подружить GSM-сигнализацию и умный дом по JSON
Модератор: immortal
-
- Сообщения: 17
- Зарегистрирован: Пн май 15, 2017 9:15 pm
- Благодарил (а): 0
- Поблагодарили: 2 раза
Re: Подружить GSM-сигнализацию и умный дом по JSON
-
- Сообщения: 85
- Зарегистрирован: Пт фев 06, 2015 10:19 am
- Благодарил (а): 16 раз
- Поблагодарили: 9 раз
Re: Подружить GSM-сигнализацию и умный дом по JSON
Самый простой способ управлять выходами и состоянием это getUrl:
или так
Дальше можно считывать состояние и разбирать JSON.
В скрипте если надо ставим setglobal для тех переменных, которые нас интересуют и практически все.
Для полноценной работы в МДМ из скрипта надо убрать echo и писать в Debmes. Ну и добавить вызов самого себя с выжиданием паузы, которая вас устраивает.
Наверное как-то так.
Может кто решиться оформить в модуль, или подскажет как это сделать,я пока не смог.
Уже год, у меня работает управление выходами, к которым подключен привод ворот. Вроде стабильно. Задержка срабатывания 3-5 секунд.
Первоначальную информацию как работать с ССU нашел на просторах инета, вот тут http://4ham.ru/grafiki_gsm_kontroller_ccu825/
Все взято от туда.
Вроде была где-то тема отдельная про CCU, но я не нашел её. Можно будет отдельную тему создать, где будет название контроллера CCU825.
Код: Выделить всё
Устанавливаем выход 3 в состояние 1
getUrl('http://localhost:8080/data.cgx?cmd={"Command":"SetOutputState","Number":3,"State":1}',0,'admin','pass')
СпойлерПоказать
Код: Выделить всё
# Имя пользователя для доступа к серверу ccu.sh.
$jsonUser = "admin";
# Пароль для доступа к серверу ccu.sh
$jsonPass = "pass";
# Функция HTTP Basic аутентификации и обращения к JSON.
function http_auth_get($url,$username,$password){
$cred = sprintf('Authorization: Basic %s',
base64_encode("$username:$password"));
$opts = array('http'=>array('method'=>'GET','header'=>$cred));
$ctx = stream_context_create($opts);
$handle = fopen ( $url, 'r', false,$ctx);
return stream_get_contents($handle);
}
# Устанавливаем 3 выход в состояние 1, на самом деле исполняется сценарий
$json = http_auth_get('http://localhost:8080/data.cgx?cmd={"Command":"SetOutputState","Number":3,"State":1}',$jsonUser,$jsonPass);
СпойлерПоказать
Код: Выделить всё
<?php
# Имя пользователя для доступа к серверу ccu.sh должно быть введено в формате user@IMEI.
# IMEI должен состоять из 15 десятичных цифр и совпадать с IMEI контроллера.
# Имя для локального доступа вводиться без IMEI.
$jsonUser = "admin";
# Пароль для доступа к серверу ccu.sh
$jsonPass = "pass";
# Функция HTTP Basic аутентификации и обращения к JSON.
function http_auth_get($url,$username,$password){
$cred = sprintf('Authorization: Basic %s',
base64_encode("$username:$password"));
$opts = array('http'=>array('method'=>'GET','header'=>$cred));
$ctx = stream_context_create($opts);
$handle = fopen ( $url, 'r', false,$ctx);
return stream_get_contents($handle);
}
# Устанавливаем 5 выход в состояние 1, на самом деле исполняется сценарий
$json = http_auth_get('http://localhost:8080/data.cgx?cmd={"Command":"GetStateAndEvents"}',$jsonUser,$jsonPass);
$obj = json_decode($json, TRUE);
# Если массив пустой (нет связи с контроллером) тогда выжидаем паузу в 10 секунд и делаем ещё запрос (бывает, что из-за плохого GPRS, контроллер не может ответить с первого раза).
/*if( empty($obj) ) {
echo "\nНет связи с контроллером!\n\n";
echo "\nВторая попытка JSON запроса. Пауза 10 сек.\n\n";
sleep(10);
$json = http_auth_get('http://localhost:8080/data.cgx?cmd={"Command":"GetStateAndEvents"}',$jsonUser,$jsonPass);
$obj = json_decode($json, TRUE);
}*/
# Если ЕСТЬ связь с контроллером (массив непустой), то обрабатываем массив полученный из JSON.
if( !empty($obj) ) {
# Извлекам данные из массива.
$input = $obj['Inputs'];
# Вход 1. Датчик RTD-03, температура в помещении.
$input1 = $input['0'];
# Преобразуем дискреты на входе контроллера в напряжение.
$inputVoltage1 = $input1['Voltage']*10/4095;
# Используя формулу из uGuard преобразуем напряжение в градусы и округляем до десятых.
$inputVoltageRtd1 = round(($inputVoltage1/5-0.5)/0.01,1);
# Вход 2. Датчик RTD-03, температура на улице.
$input2 = $input['1'];
# Преобразуем дискреты на входе контроллера в напряжение.
$inputVoltage2 = $input2['Voltage']*10/4095;
# Используя формулу из uGuard преобразуем напряжение в градусы и округляем до десятых.
$inputVoltageRtd2 = round(($inputVoltage2/5-0.5)/0.01,1);
# Вход 3. Датчик RTD-03, температура .
$input3 = $input['2'];
# Преобразуем дискреты на входе контроллера в напряжение.
$inputVoltage3 = $input3['Voltage']*10/4095;
# Используя формулу из uGuard преобразуем напряжение в градусы и округляем до десятых.
$inputVoltageRtd3 = round(($inputVoltage2/5-0.5)/0.01,1);
# Вход 9. Датчик Digital, Датчик движения.
$input9 = $input['8'];
# Присваиваем статус Active .
$inputActive9 = $input9['Active'];
# Вход 10. Датчик Digital, Датчик движения.
$input10 = $input['9'];
# Присваиваем статус Active
$inputActive10 = $input10['Active'];
# Вход 11. Датчик Digital, Датчик движения.
$input11 = $input['10'];
# Присваиваем статус Active.
$inputActive11 = $input11['Active'];
# Вход 12. Датчик Digital, Датчик движения.
$input12 = $input['11'];
# Присваиваем статус Active.
$inputActive12 = $input12['Active'];
# Вход 13. Датчик Digital, Датчик движения.
$input13 = $input['12'];
# Присваиваем статус Active.
$inputActive13 = $input13['Active'];
# Вход 14. Датчик Digital, Геркон.
$input14 = $input['13'];
# Присваиваем статус Active.
$inputActive14 = $input14['Active'];
# Заряд аккумулятора.
$battery = $obj['Battery'];
$batteryCharge = $battery['Charge'];
# Состояние охраны.
$Partitions = $obj['Partitions'];
$PartitionsState = $Partitions['0'];
# Температура CCU.
$ccuTemp = round($obj['Temp'],1);
# Напряжение питания CCU.
$ccuVolt = round($obj['Power'],1);
# Баланс на SIM карте.
$ccuBalance = $obj['Balance'];
} else {
# Если нет связи с сконтроллером (массив пустой), то все переменные обунляем.
$inputVoltageRtd1 = 0;
$inputVoltageRtd2 = 0;
$inputVoltageRtd3 = 0;
$inputActive9 = 0;
$inputActive10 = 0;
$inputActive11 = 0;
$inputActive12 = 0;
$inputActive13 = 0;
$inputActive14 = 0;
$batteryCharge = 0;
$ccuTemp = 0;
$ccuVolt = 0;
$ccuBalance = 0;
echo "\nNo connection to CCU!\n\n";
}
# Отображение полученных значений (для диагностики проблем).
echo "Temp: $inputVoltageRtd1:$inputVoltageRtd2:$ccuTemp \n";
echo "Active: $inputActive9:$inputActive10:$inputActive11:$inputActive12:$inputActive13:$inputActive14 \n";
echo "Voltage: $ccuVolt \n";
echo "Balance: $ccuBalance \n";
echo "BatteryCharge: $batteryCharge \n";
echo "PartitionsState: $PartitionsState \n";
?>
Для полноценной работы в МДМ из скрипта надо убрать echo и писать в Debmes. Ну и добавить вызов самого себя с выжиданием паузы, которая вас устраивает.
Наверное как-то так.
Может кто решиться оформить в модуль, или подскажет как это сделать,я пока не смог.
Уже год, у меня работает управление выходами, к которым подключен привод ворот. Вроде стабильно. Задержка срабатывания 3-5 секунд.
Первоначальную информацию как работать с ССU нашел на просторах инета, вот тут http://4ham.ru/grafiki_gsm_kontroller_ccu825/
Все взято от туда.
Вроде была где-то тема отдельная про CCU, но я не нашел её. Можно будет отдельную тему создать, где будет название контроллера CCU825.
- Рейтинг: 1.16%
- nick7zmail
- Сообщения: 7573
- Зарегистрирован: Пн окт 28, 2013 8:14 am
- Откуда: Екатеринбург
- Благодарил (а): 121 раз
- Поблагодарили: 2010 раз
Re: Подружить GSM-сигнализацию и умный дом по JSON
https://www.youtube.com/watch?v=_NL3r_CzwzYSilowar писал(а): Может кто решиться оформить в модуль, или подскажет как это сделать,я пока не смог.
Вот, давно записывал.
Сейчас есть модульбилдер http://majordomo.smartliving.ru/mbuilder/
Скелет модуля за вас создаёт, ничего не надо переименовывать. Но суть осталась та же...и функции тоже. Так же можете глянуть примеры модулей из маркета (по кнопке Src в маркете качаются исходники)
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<