Приложение для определения присутствия и голосовых оповещений на Android

Материал из Sprut.hub Wiki

Для работы сервиса присутствия, который использует mDNS и механизмы определения подключения устройства к сети от Apple, в качестве базового приложения можно использовать Remote Speak.

Оно позволяет во первых подключить ваш Android смартфон в качестве датчика присутствия в Sprut.hub, чтобы при подключении к домашней сети, ваш хаб определял, что вы дома.

Для разных моделей Android, таймаут могут отличаться и стандартных 300 секунд может быть недостаточно, чтобы система не "теряла" ваш телефон, даже если он находится дома и на зарядке, так как различные версии Android периодически отключают телефон от WiFi сети, что может послужить триггером для перевода датчика присутствия в режим "не дома". Таймаут подбирается индивидуально.

Чтобы Android смартфон, мог работать в качестве датчика присутствия, в приложении Remote Speak необходимо включить службу mDNS.

Голосовые уведомления

Для отправки голосовых уведомлений на ваш Android смартфон, необходимо создать глобальный сценарий со следующим кодом:

var rsLocales = ["bn-BD", "bn-IN", "cs-CZ", "da-DK", "de-DE", "el-GR", "en-AU", "en-GB", "en-IN", "en-US", "es-ES", "es-US", "fi-FI", "fil-PH", "fr-BE", "fr-FR", "hi-IN", "hu-HU", "in-ID", "it-IT", "ja-JP", "km-KH", "ko-KR", "nb-NO", "ne-NP", "nl-NL", "pl-PL", "pt-BR", "pt-PT", "ru-RU", "si-LK", "sv-SE", "th-TH", "tr-TR", "uk-UA", "vi-VN", "yue-HK"];

// Токен из приложения https://play.google.com/store/apps/details?id=org.makesimple.remotespeak
var rsTokens = [
    "ваш_токен_из_приложения_Remote_Speak_App_на_первом_смартфоне",
    "ваш_токен_из_приложения_Remote_Speak_App_на_втором_смартфоне"

]

function sayToAndroid(id, text) {
    sayToAndroidLang(id, "ru-RU", text);
}

function sayToAndroidLang(id, lang, text) {
    try {
//        token = rsTokens
        const postData = {
            to: rsTokens[id],
            priority: 'high',
            data: {
                lang: lang,
                msg: text
            }
        };
        HttpClient.POST("https://fcm.googleapis.com")
            .path("/fcm/send")
            .header("Content-Type", "application/json")
            .header("Authorization", "key=AIzaSyCau_csJXUd5RFFjdKGKH6h9Tvaz4sLj5Y")
            .body(JSON.stringify(postData))
            .send().getStatusText()
    } catch (e) {
        log.error(e.message);
    }
}

sayToAndroid(0, "Хаб успешно запущен")

В данном сценарии, можно указывать несколько токенов от нескольких смартфонов на базе Android, чтобы можно было отправлять разные сообщения на несколько разных смартфонов. Отправка уведомлений на смартфон, осуществляется уже в блочном сценарии с помощью блока кода, в который вы вставляете следующую команду

global.sayToAndroid(0, "Текст который надо проговорить")

Где 0 - это порядковый номер вашего токена (смартфона). То есть первый по порядку токен в глобальном сценарии - имеет идентификатор "0", второй токен - имеет идентификатор "1" и так далее. Если у вас два смартфона, то для отправки на второй надо в блоке кода, указать уже

global.sayToAndroid(1, "Сообщение для второго смартфона")