Modules/devices/homebridgeSync inc php

Материал из MajorDoMo инфо

ᐂ В корневой раздел ᐃ В директорию расположения файла

 <?php
    // Благодарность автору https://github.com/cflurin/homebridge-mqtt
    // Если определено DISABLE_SIMPLE_DEVICES в файле конфигурации и равно 1, прекращаем выполнение скрипта
    if (defined('DISABLE_SIMPLE_DEVICES') && DISABLE_SIMPLE_DEVICES == 1) return;
    // Переменная для отладки синхронизации, инициализируется значением 0
    $debug_sync = 0;
    // Инициализация переменной $qry значением "1"
    $qry = "1";
    // Если переменная $device_id определена
    if ($device_id) {
        // Добавляем к $qry условие для выборки по ID устройства
        $qry .= " AND ID=" . $device_id;
    }
    // Выполняем SQL запрос для выборки устройств
    $devices = SQLSelect("SELECT * FROM devices WHERE $qry");
    // Подсчитываем общее количество устройств
    $total = count($devices);
    // Выводим сообщение о синхронизации устройств
    DebMes("Syncing devices (total: $total)", 'homebridge');
    // Начинаем цикл по всем устройствам
    for ($i = 0; $i < $total; $i++) {

        // Если у устройства нет связанного объекта
        if ($devices[$i]['LINKED_OBJECT'] == '') {
            // Пропускаем текущую итерацию цикла
            continue;
        }
        // Инициализируем массив $payload
        $payload = array();
        // Добавляем в $payload имя связанного объекта
        $payload['name'] = $devices[$i]['LINKED_OBJECT'];


        // Если устройство является системным или архивировано
        if ($devices[$i]['SYSTEM_DEVICE'] || $devices[$i]['ARCHIVED']) {
            // Если включена отладка синхронизации
            if ($debug_sync) {
                // Выводим сообщение о удалении устройства
                DebMes("HomeBridge.to_remove: " . json_encode($payload), 'homebridge');
            }
            // Отправляем команду на удаление устройства
            sg('HomeBridge.to_remove', json_encode($payload));
            // Пропускаем текущую итерацию цикла
            continue;
        }

        // Если включена принудительная перезагрузка
        if ($force_refresh) {
            // Если включена отладка синхронизации
            if ($debug_sync) {
                // Выводим сообщение о удалении устройства
                DebMes("HomeBridge.to_remove: " . json_encode($payload), 'homebridge');
            }
            // Отправляем команду на удаление устройства
            sg('HomeBridge.to_remove', json_encode($payload));
        }

        // Добавляем в $payload имя сервиса, обрабатывая заголовок устройства
        $payload['service_name'] = processTitle($devices[$i]['TITLE']);

        // Начинаем оператор switch для определения типа устройства
        switch ($devices[$i]['TYPE']) {
                // Если тип устройства - реле
            case 'relay':
                // Получаем тип нагрузки
                $load_type = gg($devices[$i]['LINKED_OBJECT'] . '.loadType');
                // Если тип нагрузки - свет, устанавливаем сервис "Lightbulb"
                if ($load_type == 'light') $payload['service'] = 'Lightbulb';
                // Если тип нагрузки - вентиляция, устанавливаем сервис "Fan"
                elseif ($load_type == 'vent') $payload['service'] = 'Fan';
                // Если тип нагрузки - переключатель, устанавливаем сервис "Switch"
                elseif ($load_type == 'switch') $payload['service'] = 'Switch';
                // В противном случае устанавливаем сервис "Outlet"
                else                          $payload['service'] = 'Outlet';
                // Отправляем команду на добавление устройства
                sg('HomeBridge.to_add', json_encode($payload));

                // Устанавливаем характеристику "On"
                $payload['characteristic'] = 'On';
                // Если статус устройства активен
                if (gg($devices[$i]['LINKED_OBJECT'] . '.status')) {
                    // Устанавливаем значение характеристики "On" в true
                    $payload['value'] = true;
                    // В противном случае
                } else {
                    // Устанавливаем значение характеристики "On" в false
                    $payload['value'] = false;
                }
                // Отправляем команду на установку значения характеристики
                sg('HomeBridge.to_set', json_encode($payload));
                // Выходим из оператора switch
                break;
                // Если тип устройства - открываемый
            case 'openable':
                // Получаем тип открытия
                $open_type = gg($devices[$i]['LINKED_OBJECT'] . '.openType');
                // Если тип открытия - ворота
                if ($open_type == 'gates') {
                    // Устанавливаем сервис "GarageDoorOpener"
                    $payload['service'] = 'GarageDoorOpener';
                    // Если тип открытия - дверь
                } elseif ($open_type == 'door') {
                    // Устанавливаем сервис "Door"
                    $payload['service'] = 'Door';
                    // Если тип открытия - окно
                } elseif ($open_type == 'window') {
                    // Устанавливаем сервис "Window"
                    $payload['service'] = 'Window';
                    // Если тип открытия - шторы
                } elseif ($open_type == 'curtains') {
                    // Устанавливаем сервис "WindowCovering"
                    $payload['service'] = 'WindowCovering';
                    // Если тип открытия - жалюзи
                } elseif ($open_type == 'shutters') {
                    // Устанавливаем сервис "WindowCovering"
                    $payload['service'] = 'WindowCovering';
                }
                // Если сервис установлен
                if ($payload['service']) {
                    // Отправляем команду на добавление устройства
                    sg('HomeBridge.to_add', json_encode($payload));
                    // Если тип открытия - ворота
                    if ($open_type == 'gates') {
                        // Устанавливаем характеристику "CurrentDoorState"
                        $payload['characteristic'] = 'CurrentDoorState';
                        // Если статус устройства активен
                        if (gg($devices[$i]['LINKED_OBJECT'] . '.status')) {
                            // Устанавливаем значение характеристики "CurrentDoorState" в "1"
                            $payload['value'] = "1";
                            // В противном случае
                        } else {
                            // Устанавливаем значение характеристики "CurrentDoorState" в "0"
                            $payload['value'] = "0";
                        }
                        // Отправляем команду на установку значения характеристики
                        sg('HomeBridge.to_set', json_encode($payload));
                        // Устанавливаем характеристику "TargetDoorState"
                        $payload['characteristic'] = 'TargetDoorState';
                        // Устанавливаем значение характеристики "TargetDoorState" в "1"
                        $payload['value'] = "1";
                        // Отправляем команду на установку значения характеристики
                        sg('HomeBridge.to_set', json_encode($payload));
                        // Если тип открытия - дверь, окно, шторы или жалюзи
                    } elseif ($open_type == 'door' || $open_type == 'window' || $open_type == 'curtains' || $open_type == 'shutters') {
                        // Устанавливаем характеристику "CurrentPosition"
                        $payload['characteristic'] = 'CurrentPosition';
                        // Если статус устройства активен
                        if (gg($devices[$i]['LINKED_OBJECT'] . '.status')) {
                            // Устанавливаем значение характеристики "CurrentPosition" в "0" (закрыто)
                            $payload['value'] = "0";
                            // В противном случае
                        } else {
                            // Устанавливаем значение характеристики "CurrentPosition" в "100" (открыто)
                            $payload['value'] = "100";
                        }
                        // Отправляем команду на установку значения характеристики
                        sg('HomeBridge.to_set', json_encode($payload));
                        // Устанавливаем характеристику "TargetPosition" для управления позицией устройства
                        $payload['characteristic'] = 'TargetPosition';
                        // Отправляем данные на сервер HomeBridge для установки характеристики
                        sg('HomeBridge.to_set', json_encode($payload));
                        // Устанавливаем характеристику "PositionState" для отображения состояния позиции устройства
                        $payload['characteristic'] = 'PositionState';
                        // Устанавливаем значение 0 - "Закрывается" 1 - "Открывается" 2 - нет отображения
                        $payload['value'] = "2";
                        // Отправляем данные на сервер HomeBridge для установки характеристики
                        sg('HomeBridge.to_set', json_encode($payload));
                        // Завершаем обработку данного случая
                    }
                    // Завершаем обработку всех случаев
                }
                // Переходим к следующему случаю
                break;
                // Обрабатываем случай, когда устройство является датчиком температуры
            case 'sensor_temp':
                // Устанавливаем сервис "TemperatureSensor" для устройства
                $payload['service'] = 'TemperatureSensor';
                // Устанавливаем минимальное значение температуры, которое может показать датчик
                $payload['CurrentTemperature']['minValue'] = -40;
                // Отправляем данные на сервер HomeBridge для добавления устройства
                sg('HomeBridge.to_add', json_encode($payload));

                // Устанавливаем характеристику "CurrentTemperature" для отображения текущей температуры
                $payload['characteristic'] = 'CurrentTemperature';
                // Получаем текущее значение температуры устройства
                $payload['value'] = gg($devices[$i]['LINKED_OBJECT'] . '.value');
                // Отправляем данные на сервер HomeBridge для установки характеристики
                sg('HomeBridge.to_set', json_encode($payload));
                // Переходим к следующему случаю
                break;
                // Обрабатываем случай, когда устройство является датчиком влажности
            case 'sensor_humidity':
                // Устанавливаем сервис "HumiditySensor" для устройства
                $payload['service'] = 'HumiditySensor';
                // Отправляем данные на сервер HomeBridge для добавления устройства
                sg('HomeBridge.to_add', json_encode($payload));

                // Устанавливаем характеристику "CurrentRelativeHumidity" для отображения текущей влажности
                $payload['characteristic'] = 'CurrentRelativeHumidity';

                $payload['value'] = gg($devices[$i]['LINKED_OBJECT'] . '.value');

                sg('HomeBridge.to_set', json_encode($payload));
                // Переходим к следующему случаю
                break;
                // Обрабатываем случай, когда устройство является датчиком углекислого газа
            case 'sensor_co2':
                // Устанавливаем сервис "CarbonDioxideSensor" для устройства
                $payload['service'] = 'CarbonDioxideSensor';
                // Отправляем данные на сервер HomeBridge для добавления устройства
                sg('HomeBridge.to_add', json_encode($payload));

                // Устанавливаем характеристику "CarbonDioxideLevel" для отображения уровня углекислого газа
                $payload['characteristic'] = 'CarbonDioxideLevel';
                // Получаем текущее значение уровня углекислого газа устройства
                $payload['value'] = gg($devices[$i]['LINKED_OBJECT'] . '.value');
                // Отправляем данные на сервер HomeBridge для установки характеристики
                sg('HomeBridge.to_set', json_encode($payload));

                // Устанавливаем характеристику "CarbonDioxideDetected" для отображения наличия углекислого газа
                $payload['characteristic'] = 'CarbonDioxideDetected';
                // Устанавливаем значение "0", что означает отсутствие углекислого газа
                $payload['value'] = "0";
                // Отправляем данные на сервер HomeBridge для установки характеристики
                sg('HomeBridge.to_set', json_encode($payload));

                // Переходим к следующему случаю
                break;

                // Обрабатываем случай, когда устройство является датчиком влажности
            case 'sensor_moisture':
                // Здесь должен быть код для обработки датчика влажности, но он еще не реализован
                break;

                // Обрабатываем случай, когда устройство является датчиком радиации
            case 'sensor_radiation':
                // Здесь должен быть код для обработки датчика радиации, но он еще не реализован
                break;

                // Обрабатываем случай, когда устройство является пылесосом
            case 'vacuum':
                // Здесь должен быть код для обработки пылесоса, но он еще не реализован
                break;

                // Обрабатываем случай, когда устройство является медиа устройством
            case 'media':
                // Здесь должен быть код для обработки медиа устройства, но он еще не реализован
                break;

                // Обрабатываем случай, когда устройство является телевизором
            case 'tv':
                // Здесь должен быть код для обработки телевизора, но он еще не реализован
                break;

                // Обрабатываем случай, когда устройство является датчиком движения
            case 'motion':
                // Устанавливаем сервис "MotionSensor" для устройства
                $payload['service'] = 'MotionSensor';
                // Отправляем данные на сервер HomeBridge для добавления устройства
                sg('HomeBridge.to_add', json_encode($payload));

                // Устанавливаем характеристику "MotionDetected" для отображения обнаружения движения
                $payload['characteristic'] = 'MotionDetected';
                // Получаем текущее значение статуса устройства
                $payload['value'] = (int)gg($devices[$i]['LINKED_OBJECT'] . '.status');
                // Отправляем данные на сервер HomeBridge для установки характеристики
                sg('HomeBridge.to_set', json_encode($payload));
                // Переходим к следующему случаю
                break;
                // Обрабатываем случай, когда устройство является датчиком дыма
            case 'smoke':
                // Устанавливаем сервис "SmokeSensor" для устройства
                $payload['service'] = 'SmokeSensor';
                // Отправляем данные на сервер HomeBridge для добавления устройства
                sg('HomeBridge.to_add', json_encode($payload));

                // Устанавливаем характеристику "SmokeDetected" для отображения обнаружения дыма
                $payload['characteristic'] = 'SmokeDetected';
                // Получаем текущее значение статуса устройства
                $payload['value'] = (int)gg($devices[$i]['LINKED_OBJECT'] . '.status');
                // Отправляем данные на сервер HomeBridge для установки характеристики
                sg('HomeBridge.to_set', json_encode($payload));
                // Переходим к следующему случаю
                break;
                // Обрабатываем случай, когда устройство является датчиком утечки
            case 'leak':
                // Устанавливаем сервис "LeakSensor" для устройства
                $payload['service'] = 'LeakSensor';
                // Отправляем данные на сервер HomeBridge для добавления устройства
                sg('HomeBridge.to_add', json_encode($payload));

                // Устанавливаем характеристику "LeakDetected" для отображения обнаружения утечки
                $payload['characteristic'] = 'LeakDetected';
                // Получаем текущее значение статуса устройства
                $payload['value'] = (int)gg($devices[$i]['LINKED_OBJECT'] . '.status');
                // Отправляем данные на сервер HomeBridge для установки характеристики
                sg('HomeBridge.to_set', json_encode($payload));
                // Переходим к следующему случаю
                break;
                // Обрабатываем случай, когда устройство является кнопкой
            case 'button':
                // Устанавливаем сервис "Switch" для устройства
                $payload['service'] = 'Switch';
                // Отправляем данные на сервер HomeBridge для добавления устройства
                sg('HomeBridge.to_add', json_encode($payload));
                // Переходим к следующему случаю
                break;
                // Обрабатываем случай, когда устройство является датчиком освещенности
            case 'sensor_light':
                // Устанавливаем сервис "LightSensor" для устройства
                $payload['service'] = 'LightSensor';
                // Устанавливаем минимальное значение освещенности, которое может показать датчик
                $payload['CurrentAmbientLightLevel']['minValue'] = 0;
                // Отправляем данные на сервер HomeBridge для добавления устройства
                sg('HomeBridge.to_add', json_encode($payload));

                // Устанавливаем характеристику "CurrentAmbientLightLevel" для отображения текущей освещенности
                $payload['characteristic'] = 'CurrentAmbientLightLevel';
                // Получаем текущее значение освещенности устройства
                $payload['value'] = (int)gg($devices[$i]['LINKED_OBJECT'] . '.value');
                // Отправляем данные на сервер HomeBridge для установки характеристики
                sg('HomeBridge.to_set', json_encode($payload));
                // Переходим к следующему случаю
                break;
                // Обрабатываем случай, когда устройство является датчиком открытия/закрытия
            case 'openclose':
                // Устанавливаем сервис "ContactSensor" для устройства
                $payload['service'] = 'ContactSensor';
                // Отправляем данные на сервер HomeBridge для добавления устройства
                sg('HomeBridge.to_add', json_encode($payload));

                // Устанавливаем характеристику "ContactSensorState" для отображения состояния датчика
                $payload['characteristic'] = 'ContactSensorState';
                // Получаем текущее значение статуса устройства и корректируем его в зависимости от настроек устройства
                $payload['value'] = (int)gg($devices[$i]['LINKED_OBJECT'] . '.ncno') == 'nc' ? 1 - gg($devices[$i]['LINKED_OBJECT'] . '.status') : gg($devices[$i]['LINKED_OBJECT'] . '.status');
                // Отправляем данные на сервер HomeBridge для установки характеристики
                sg('HomeBridge.to_set', json_encode($payload));
                // Переходим к следующему случаю
                break;
                // Обрабатываем случай, когда устройство является регулятором яркости
            case 'dimmer':
                // Устанавливаем сервис "Lightbulb" для устройства
                $payload['service'] = 'Lightbulb';
                // Устанавливаем значение яркости по умолчанию
                $payload['Brightness'] = 'default';
                // Отправляем данные на сервер HomeBridge для добавления устройства
                sg('HomeBridge.to_add', json_encode($payload));
                // Устанавливаем характеристику "On" для отображения состояния устройства
                $payload['characteristic'] = 'On';
                // Проверяем статус устройства и устанавливаем соответствующее значение
                if (gg($devices[$i]['LINKED_OBJECT'] . '.status')) {
                    $payload['value'] = true;
                } else {
                    $payload['value'] = false;
                }
                // Отправляем данные на сервер HomeBridge для установки характеристики
                sg('HomeBridge.to_set', json_encode($payload));
                // Устанавливаем характеристику "Brightness" для отображения текущей яркости
                $payload['characteristic'] = 'Brightness';
                // Получаем текущее значение яркости устройства
                $payload['value'] = (int)gg($devices[$i]['LINKED_OBJECT'] . '.level');
                // Отправляем данные на сервер HomeBridge для установки характеристики
                sg('HomeBridge.to_set', json_encode($payload));
                // Переходим к следующему случаю
                break;
                // Обрабатываем случай, когда устройство является RGB лампой
            case 'rgb':
                // Устанавливаем сервис "Lightbulb" для устройства
                $payload['service'] = 'Lightbulb';
                // Устанавливаем значения по умолчанию для характеристик Hue, Saturation и Brightness
                $payload['Hue'] = 'default';
                $payload['Saturation'] = 'default';
                $payload['Brightness'] = 'default';
                
                // Отправляем данные на сервер HomeBridge для добавления устройства
                sg('HomeBridge.to_add', json_encode($payload));

                // Устанавливаем характеристику "On" для отображения состояния устройства
                $payload['characteristic'] = 'On';
                // Проверяем статус устройства и устанавливаем соответствующее значение
                if (gg($devices[$i]['LINKED_OBJECT'] . '.status')) {
                    $payload['value'] = true;
                } else {
                    $payload['value'] = false;
                }
                // Отправляем данные на сервер HomeBridge для установки характеристики
                sg('HomeBridge.to_set', json_encode($payload));

                // Устанавливаем характеристику "Hue" для отображения оттенка устройства
                $payload['characteristic'] = 'Hue';
                // Получаем текущее значение оттенка устройства
                $payload['value'] = gg($devices[$i]['LINKED_OBJECT'] . '.hue');
                // Отправляем данные на сервер HomeBridge для установки характеристики
                sg('HomeBridge.to_set', json_encode($payload));

                // Устанавливаем характеристику "Saturation" для отображения насыщенности устройства
                $payload['characteristic'] = 'Saturation';
                // Получаем текущее значение насыщенности устройства
                $payload['value'] = gg($devices[$i]['LINKED_OBJECT'] . '.saturation');
                // Отправляем данные на сервер HomeBridge для установки характеристики
                sg('HomeBridge.to_set', json_encode($payload));

                // Устанавливаем характеристику "Brightness" для отображения яркости устройства
                $payload['characteristic'] = 'Brightness';
                // Получаем текущее значение яркости устройства
                $payload['value'] = gg($devices[$i]['LINKED_OBJECT'] . '.brightness');
                // Отправляем данные на сервер HomeBridge для установки характеристики
                sg('HomeBridge.to_set', json_encode($payload));
                // Переходим к следующему случаю
                break;

                // Обрабатываем случай, когда устройство является светодиодной лампой
            case 'ledlamp':
                // Устанавливаем сервис "Lightbulb" для устройства
                $payload['service'] = 'Lightbulb';
                // Устанавливаем значение яркости по умолчанию
                $payload['Brightness'] = 'default';
                // Отправляем данные на сервер HomeBridge для добавления устройства
                sg('HomeBridge.to_add', json_encode($payload));

                // Устанавливаем характеристику "On" для отображения состояния устройства
                $payload['characteristic'] = 'On';
                // Проверяем статус устройства и устанавливаем соответствующее значение
                if (gg($devices[$i]['LINKED_OBJECT'] . '.status')) {
                    $payload['value'] = true;
                } else {
                    $payload['value'] = false;
                }
                // Отправляем данные на сервер HomeBridge для установки характеристики
                sg('HomeBridge.to_set', json_encode($payload));
                // Устанавливаем характеристику "Brightness" для отображения яркости устройства
                $payload['characteristic'] = 'Brightness';
                // Получаем текущее значение яркости устройства
                $payload['value'] = gg($devices[$i]['LINKED_OBJECT'] . '.brightness');
                // Отправляем данные на сервер HomeBridge для установки характеристики
                sg('HomeBridge.to_set', json_encode($payload));
                // Переходим к следующему случаю
                break;

                // Обрабатываем случай, когда устройство является термостатом
            case 'thermostat':
                // Устанавливаем сервис "Thermostat" для устройства
                $payload['service'] = 'Thermostat';
                // Отправляем данные на сервер HomeBridge для добавления устройства
                sg('HomeBridge.to_add', json_encode($payload));

                // Устанавливаем характеристику "CurrentTemperature" для отображения текущей температуры
                $payload['characteristic'] = 'CurrentTemperature';
                // Получаем текущее значение температуры устройства
                $payload['value'] = gg($devices[$i]['LINKED_OBJECT'] . '.value');
                // Отправляем данные на сервер HomeBridge для установки характеристики
                sg('HomeBridge.to_set', json_encode($payload));

                // Устанавливаем характеристику "TargetTemperature" для отображения целевой температуры
                $payload['characteristic'] = 'TargetTemperature';
                // Получаем текущее значение целевой температуры устройства
                $payload['value'] = gg($devices[$i]['LINKED_OBJECT'] . '.currentTargetValue');
                // Отправляем данные на сервер HomeBridge для установки характеристики
                sg('HomeBridge.to_set', json_encode($payload));

                /*
                 код закомментирован на github
    // Устанавливаем характеристику "TemperatureDisplayUnits" для отображения единиц измерения температуры
    $payload['characteristic'] = 'TemperatureDisplayUnits';
    // Получаем текущее значение единиц измерения температуры устройства
    $payload['value']=gg($devices[$i]['LINKED_OBJECT'].'.currentTargetValue');
    // Отправляем данные на сервер HomeBridge для установки характеристики
    sg('HomeBridge.to_set',json_encode($payload));
    */
                // Устанавливаем характеристику "CurrentHeatingCoolingState" для отображения текущего состояния отопления/охлаждения
                $payload['characteristic'] = 'CurrentHeatingCoolingState'; //off = 0, heat = 1, and cool = 2
                // Проверяем, не отключен ли устройство
                if (!gg($devices[$i]['LINKED_OBJECT'] . '.disabled')) {
                    // Проверяем статус устройства
                    if (gg($devices[$i]['LINKED_OBJECT'] . '.status')) {
                        // Устанавливаем значение "1" для характеристики "CurrentHeatingCoolingState", что означает отопление
                        $payload['value'] = 1;
                    } else {
                        // Устанавливаем значение "2" для характеристики "CurrentHeatingCoolingState", что означает охлаждение
                        $payload['value'] = 2;
                    }
                } else {
                    // Устанавливаем значение "0" для характеристики "CurrentHeatingCoolingState", что означает выключено
                    $payload['value'] = 0;
                }
                // Отправляем данные на сервер HomeBridge для установки характеристики
                sg('HomeBridge.to_set', json_encode($payload));
                // Переходим к следующему случаю
                //TargetHeatingCoolingState


                //CoolingThresholdTemperature
                //HeatingThresholdTemperature
                //Name


                break;
                // Обрабатываем случай, когда устройство является камерой
            case 'camera':
                /*
    // Здесь должен быть код для обработки камеры, но он еще не реализован
            /*
            $cameraUsername = gg($devices[$i]['LINKED_OBJECT'].'.cameraUsername');
            $cameraPassword = gg($devices[$i]['LINKED_OBJECT'].'.cameraPassword');
            $snapshot_url = gg($devices[$i]['LINKED_OBJECT'].'.snapshotURL');
            $stream_url = gg($devices[$i]['LINKED_OBJECT'].'.streamURL');
            $stream_url_hq = gg($devices[$i]['LINKED_OBJECT'].'.streamURL_HQ');
            if ($snapshot_url) {
               $stream_url=$snapshot_url;
            } elseif (!$stream_url && $stream_url_hq) {
               $stream_url = $stream_url_hq;
            }
            $thumb_params ='';
            $thumb_params.= 'username="' . $cameraUsername . '" password="' . $cameraPassword . '"';
            $thumb_params.= ' width="1024"';
            $thumb_params.= ' url="' . $stream_url . '"';
            $streamTransport = gg($devices[$i]['LINKED_OBJECT'].'.streamTransport');
            if ($streamTransport!='auto' && $streamTransport!='') {
               $thumb_params.= ' transport="'.$streamTransport.'"';
            }
            $body = '[#module name="thumb" '. $thumb_params. '#]';
            $body = processTitle($body, $this);
            if (preg_match('/img src="(.+?)"/is',$body,$m)) {
               $snapshotPreviewURL=$m[1];
               $snapshotPreviewURL = preg_replace('/&w=(\d+?)/','', $snapshotPreviewURL);
               $snapshotPreviewURL = preg_replace('/&h=(\d+?)/','', $snapshotPreviewURL);
            } else {
               $snapshotPreviewURL='';
            }
            $snapshotPreviewURL='http://'.getLocalIP().$snapshotPreviewURL;

            $payload['service']='CameraRTPStreamManagement';
            sg('HomeBridge.to_add',json_encode($payload));

            $payload['characteristic'] = 'SupportedVideoStreamConfiguration';
            $payload['value']='';
            sg('HomeBridge.to_set',json_encode($payload));

            $payload['characteristic'] = 'SupportedAudioStreamConfiguration';
            $payload['value']='';
            sg('HomeBridge.to_set',json_encode($payload));

            $payload['characteristic'] = 'SupportedRTPConfiguration';
            $payload['value']='';
            sg('HomeBridge.to_set',json_encode($payload));

            $payload['characteristic'] = 'SelectedRTPStreamConfiguration';
            $payload['value']='';
            sg('HomeBridge.to_set',json_encode($payload));

            $payload['characteristic'] = 'StreamingStatus';
            $payload['value']='';
            sg('HomeBridge.to_set',json_encode($payload));

            $payload['characteristic'] = 'SetupEndpoints';
            $payload['value']='';
            sg('HomeBridge.to_set',json_encode($payload));
   */
                // Переходим к следующему случаю
                break;
                /*
                // Обрабатываем случай, когда устройство является датчиком батареи
            case 'sensor_battery':
    // Здесь должен быть код для обработки датчика батареи, но он еще не реализован

    $payload['service']='BatteryService';
    sg('HomeBridge.to_add',json_encode($payload));
    // Characteristic.BatteryLevel;
    // Characteristic.ChargingState; 0 - NOT_CHARGING, 1 - CHARGING, 2 - NOT_CHARGEABLE
    // Characteristic.StatusLowBattery;
    $payload['characteristic'] = 'BatteryLevel';
    $payload['value']=gg($devices[$i]['LINKED_OBJECT'].'.value');
    sg('HomeBridge.to_set',json_encode($payload));

    $payload['characteristic'] = 'ChargingState';
    $payload['value']=2;
    sg('HomeBridge.to_set',json_encode($payload));

    $payload['characteristic'] = 'StatusLowBattery';
    $payload['value']=gg($devices[$i]['LINKED_OBJECT'].'.normalValue') ? 0 : 1;
    sg('HomeBridge.to_set',json_encode($payload));
    break;
            */
            default:
                $addon_path = dirname(__FILE__) . '/addons/' . $devices[$i]['TYPE'] . '_homebridgeSync.php';
                if (file_exists($addon_path)) {
                    require($addon_path);
                }
        }
    }

    // Отправляем команду на сервер HomeBridge для получения всех устройств
    sg('HomeBridge.to_get', '{"name": "*"}');
    // Устанавливаем режим работы HomeBridge в "list"
    sg('HomeBridge.mode', 'list');
    // Устанавливаем таймер для сброса режима работы HomeBridge через 5 секунд
    setTimeout('HomeBridgeMode', "sg('HomeBridge.mode','');", 5);