Для того, чтобы запустить навык следует сказать или написать Алисе "Запусти навык Условия закипания воды", либо перейти по ссылке.
Появится сообщение
Определение температуры и давления закипания воды. Скажите «Помощь», чтобы узнать как использовать данный навык.
Запрос должен состоять из следующих частей:
1. Числовое значение (например, "Сто одна тысяча триста двадцать пять").
2. Размерность (например, "Паскаль" или "Цельсия").
3. Слово "Избыточное" если задаётся значение избыточного давления.
При задании температуры и давления в размерностях отличных от градусов Цельсия и Паскалей при выводе результата расчёта они переводятся в градусы Цельсия и Паскали.
Нецелые значения, например "Сто одна целая триста двадцать пять тысячных килопаскаль", можно попытаться задать голосом (первый запрос на скриншоте ниже), можно вводить в текстовом режиме, используя запятую в качестве десятичного разделителя (второй запрос).
Возможные размерности для температуры: градусы Цельсия, Кельвина, Фаренгейта.
Возможные размерности для давления: Паскаль, гектопаскаль (100 Па), миллиметры ртутного столба (133,3 Па), килопаскаль (1000 Па), атмосфера (98066,5 Па), бар (10^5 Па), мегапаскаль (10^6 Па).
Не обязательно говорить "градусов Кельвина" или "миллиметров ртутного столба", достаточно сказать "Кельвина" или "ртутного" соответственно.
Данный навык также может быть использован для определения температуры конденсации водяного пара. Например, при давлении в конденсаторе паровой турбины 10 кПа температура конденсата составит 45,8 градусов Цельсия.
Для вычисления температуры кипения воды по заданному давлению или давления по заданной температуре используется класс SaturationCurve, входящий в состав пакета wsprops.
Навык Алисы на Python
В Yandex Cloud есть сервис Yandex Cloud Functions, предоставляющий возможность запускать код в виде функции (которая может быть написана в том числе на Python) в безопасном, отказоустойчивом и автоматически масштабируемом окружении без создания и обслуживания виртуальных машин.
Изначально я намеривался использовать Yandex Cloud Functions для создания html-страниц с возможностью выполнения онлайн расчётов. Пользователь заполняет на странице форму, данные из формы передаются функции на Python, функция возвращает результат расчёта, страница обрабатывает полученные данные и отображает их.
На данном направлении имеются две проблемы:
1. Нужно вспоминать HTML и изучать JavaScript.
2. Сервиз Yandex Cloud Functions платный. И хотя там предусмотрен бесплатный лимит в 1 000 000 вызовов функций в месяц, которого мне (приняв во внимание посещаемость моего ресурса) точно бы хватило, существует риск, что кто-то из вредности создаст робота, который будет постоянно вызывать мою функцию и бесплатный лимит будет превышен.
Если вызывать облачную функцию из навыка Алисы (который можно создать в сервисе Яндекс Диалоги), то данные вызовы не тарифицируются.
Навык Алисы передаёт в функцию текст, который наговорил или напечатал пользователь, и принимает от функции тоже текст, выводимый на экран в отдельном сообщении.
Таким образом, достаточно, чтобы наша функция на Python умела вычленить из полученного текста нужные исходные данные и передавать в виде текста результат своей работы.
Алиса передаёт текст пользователя, вызывая функцию
handler(event, context)
передаваемый текст содержится в
event['request']['original_utterance'] и event['request']['command']
В первом словаре находится оригинальный текст, во втором - текст, обработанный Яндекс Диалоги.
Если мы скажем или напишем "Температура сто.", то этот текст помещается в первую переменную, а вторая переменная будет содержать текст "температура 100", и именно этот текст следует разбирать для извлечения входных данных.
При запуске навыка в функцию передаётся пустая строка '', поэтому при получении пустой строки следует в ответ направить текст с описанием навыка и инструкцию по его использованию.
Условия закипания воды
Вода закипает при определённой комбинации значений температуры и давления. На бытовом уровне известно, что вода закипает при температуре 100 градусов Цельсия, так как большинство людей кипятит воду при давлении близком к нормальному атмосферному давлению 760 мм ртутного столба (101325 Па).
Среднегодовое значения давление в Москве составляет 748 мм рт. ст., которому соответствует температура кипения 99,5 С.
В Москве 31 октября 2017 года был установлен рекорд минимального атмосферного давления 718,6 мм рт. ст. В этот день вода в Москве закипала при температуре 98,4 C.
На вершине Эвереста давление составляет 250 мм рт. ст., а температура кипения 71,5 C.