Найти тему

Навык Алисы "Условия закипания воды"

Оглавление

Для того, чтобы запустить навык следует сказать или написать Алисе "Запусти навык Условия закипания воды", либо перейти по ссылке.

Появится сообщение

Определение температуры и давления закипания воды. Скажите «Помощь», чтобы узнать как использовать данный навык.

Запрос должен состоять из следующих частей:

1. Числовое значение (например, "Сто одна тысяча триста двадцать пять").

2. Размерность (например, "Паскаль" или "Цельсия").

3. Слово "Избыточное" если задаётся значение избыточного давления.

При задании температуры и давления в размерностях отличных от градусов Цельсия и Паскалей при выводе результата расчёта они переводятся в градусы Цельсия и Паскали.

Нецелые значения, например "Сто одна целая триста двадцать пять тысячных килопаскаль", можно попытаться задать голосом (первый запрос на скриншоте ниже), можно вводить в текстовом режиме, используя запятую в качестве десятичного разделителя (второй запрос).

-2

Возможные размерности для температуры: градусы Цельсия, Кельвина, Фаренгейта.

Возможные размерности для давления: Паскаль, гектопаскаль (100 Па), миллиметры ртутного столба (133,3 Па), килопаскаль (1000 Па), атмосфера (98066,5 Па), бар (10^5 Па), мегапаскаль (10^6 Па).

Не обязательно говорить "градусов Кельвина" или "миллиметров ртутного столба", достаточно сказать "Кельвина" или "ртутного" соответственно.

Данный навык также может быть использован для определения температуры конденсации водяного пара. Например, при давлении в конденсаторе паровой турбины 10 кПа температура конденсата составит 45,8 градусов Цельсия.

-3

Для вычисления температуры кипения воды по заданному давлению или давления по заданной температуре используется класс SaturationCurve, входящий в состав пакета wsprops.

В 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.

Зависимость температуры кипения вода от давления
Зависимость температуры кипения вода от давления