{
    "version": "https:\/\/jsonfeed.org\/version\/1.1",
    "title": "Блоги: заметки с тегом Сайт",
    "_rss_description": "Автоматически собираемая лента заметок, написанных в блогах на Эгее",
    "_rss_language": "ru",
    "_itunes_email": "",
    "_itunes_categories_xml": "",
    "_itunes_image": false,
    "_itunes_explicit": "no",
    "home_page_url": "https:\/\/blogengine.me\/blogs\/tags\/sayt\/",
    "feed_url": "https:\/\/blogengine.me\/blogs\/tags\/sayt\/json\/",
    "icon": false,
    "authors": [
        {
            "name": "Илья Бирман",
            "url": "https:\/\/blogengine.me\/blogs\/",
            "avatar": false
        }
    ],
    "items": [
        {
            "id": "134734",
            "url": "https:\/\/kini24.ru\/all\/poluchaem-dannye-s-sayta-sgk-dlya-home-assistant\/",
            "title": "Получаем данные с сайта СГК для Home Assistant",
            "content_html": "<p>В Home Assistant у меня было отслеживание почти всех счетов по квартире: электроэнергия, коммунальные платежи, ТКО, капитальный ремонт и т. д. Проблема была только с сайтом компании СГК, которая занимается предоставлением горячей и холодной воды, отоплением и водоотведением. При помощи таких интеграций, как scrape и multiscrape загрузить данные с их сайта не получалось, поэтому пришлось пойти более сложным путем и написать свой скрипт. На деле он оказался совсем простым, требует доработки в плане проверок ответов сервера, но даже в таком виде он вполне работоспособен. Чтобы не перечислять все данные, возьму только отопление.<\/p>\n<code python>\nimport requests\nimport json\n\nlogin = data.get(\"username\", \"\")\npassword = data.get(\"password\", \"\")\nlogin_url = 'https:\/\/krk.sibgenco.services\/Account\/Auth'\ndata_url = 'https:\/\/krk.sibgenco.services\/fl\/accounts\/getAccounts'\n\nheaders = {\n    \"Content-Type\": \"application\/x-www-form-urlencoded; charset=UTF-8\",\n    \"User-Agent\": \"Mozilla\/5.0 (Windows NT 6.1; Win64; x64; rv:109.0) Gecko\/20100101 Firefox\/115.0\",\n}\n\n# Создаем новую сессию\nsession = requests.Session()\n# Авторизуемся на сервере\nresult = session.post(login_url, data = 'login=' + login + '&password=' + password, headers = headers)\n# print(result.text)\n\n# Получаем данные в JSON формате\nresult = session.get(data_url, headers = headers).json()\nsession.close()\n\n# Перекодируем текст в читаемый\nresult = result.encode().decode('unicode-escape', 'ignore')\nresult = json.dumps(result)\nresult = json.loads(result)\n\n# Убираем лишние кавычки в разделе \"Cards\" (откуда взялись?)\nresult = result.replace('\"Cards\":\"', '\"Cards\":').replace('}]\"}', '}]}')\n# print(type(result))\n# print(result)\n\nif len(result) > 0:\n    logger.info(\"Данные от СКГ получены\")\nelse:\n    logger.warning(\"Ошибка получения данных от СГК\")\n# print(result.encode().decode('unicode-escape', 'ignore'))\n\n# Преобразуем строку данных в JSON объект\njson_data = json.loads(result)[\"Accounts\"][0][\"CalcData\"][\"Products\"]#[0][\"ToPay\"]\n\n# print(json_data, '\\n')\n# print(json.dumps(json_data), '\\n')\n\n# for product in json_data[\"Accounts\"][0][\"CalcData\"][\"Products\"]:\n#     print(product[\"ItemName\"] + \": \" + str(product[\"ToPay\"]) + \" руб.\")\n\nif json_data[0][\"ToPay\"] > 0:\n    hass.states.set('sensor.sgk_heating', json_data[0][\"ToPay\"] * -1)\nelse:\n    hass.states.set('sensor.sgk_heating', json_data[0][\"ToPay\"])\n<\/code>\n<p>В ходе работы скрипта получаем несколько секций для каждой из услуг, которые выглядят вот так:<\/p>\n<code json>\n  - IsFine: false\n    Item: 13\n    ContractId: 307015\n    ItemName: Отопление\n    SaldoBegin: 4228.65\n    Paid: 4228.65\n    SaldoEnd: 0\n    FineEndCheck: true\n    FineEnd: 0\n    AccrualsCheck: false\n    Accruals: 0\n    Recalculation: 0\n    ToPayCheck: true\n    ToPay: 0\n    ChargeDetails: \"\"\n    PayDetails: 08.02.2025 4228.65;\n    FinePayDetails: \"\"\n    WebPayDetails: 08.02.2025=5338.65=20250208171312-99240-6764617.585349\n<\/code>\n<p>Далее просто создаем автоматизацию в Home Assistant, которая будет запускать этот скрипт. Для надежности перед первым запуском создаем несколько новых сенсоров в примерно таком формате:<\/p>\n<code python>\n    # Задолженность за отопление, итого\n    heating_debt_summary:\n      unique_id: <тут ваш ID сенсора>\n      attribute_templates:\n        Пеня: \"{{ states('sensor.sgk_heating_penya') }} ₽\"\n      device_class: monetary\n      friendly_name: Задолженность за отопление\n      unit_of_measurement: \"RUB\"\n      # value_template: \"{{ states('sensor.sgk_heating') | float(0) + states('sensor.sgk_heating_penya') | float(0) }}\"\n      value_template: \"{{ states('sensor.sgk_heating') | float(0) }}\"\n<\/code>\n<p>Как видно, в сенсоре будет также атрибут «пеня». Можно вывести суммарную задолженность — долг+пеня, можно вывести только основную — на выбор.<br \/>\nИ вот после сайта СГК меня слегка «понесло» и сделал схожие скрипты для получения информации с сайтов ФНС, капремонта, энергосбыта и регистратора доменов. С ФНС было интересно — там сначала нужно пройти basic-авторизацию, получить токен безопасности, авторизоваться еще раз и слать его при каждом запросе данных. А дальше было уже намного легче — у ФНС существует API, которое они активно используют. Официальной документации по нему нет, но, покопавшись на сайте, можно легко получить все запросы. Для чего нужны эти данные? Например, чтобы отслеживать задолженность по налогам (в том числе и самозанятого), недвижимость и банковские счета. Сейчас такое время, что на тебя могут открыть какой-то счет в банке, сделать тебя «начальником» какой-то конторы, а ты даже будешь не в курсе. Но стоит отметить, что в налоговой отображаются только обычные, дебетовые счета, информации по кредитам там нет.<\/p>\n",
            "date_published": "2025-02-20T08:22:01+05:00",
            "date_modified": "2025-03-27T09:18:56+05:00",
            "tags": [
                "home assistant",
                "python",
                "Вода",
                "данные",
                "налоговая",
                "отопление",
                "получение",
                "Сайт",
                "сгк",
                "скрипт"
            ],
            "author": {
                "name": "Копытов Иван",
                "url": "https:\/\/kini24.ru\/",
                "avatar": ""
            },
            "_date_published_rfc2822": "Thu, 20 Feb 2025 08:22:01 +0500",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "134734",
            "_rss_enclosures": [],
            "_e2_data": {
                "is_favourite": false,
                "links_required": null,
                "og_images": []
            }
        },
        {
            "id": "130602",
            "url": "https:\/\/artjom.one\/blog\/all\/sayt-v-2024\/",
            "title": "Сайт в 2024",
            "content_html": "<p>Итак, прошёл ещё один год. Спустя 2 года после запуска я, наконец-то, полностью переделал тему сайта. Теперь она но-настоящему моя. Я пошёл по пути упрощения: меньше значит больше. Только CSS, никаких плагинов и библиотек для модных менюшек (движок блога по-прежнему их использует, но это отдельно). Сам сайт и его меню — простой код, минимум строк, максимум смыла. Ну и, конечно, новый шрифт. Прикреплю снизу скрины из серии Было vs. Стало.<br \/>\nНу и для тех, кто хочет посмотреть вживую — <a href=\"https:\/\/www.artjom.one\/index_2022.html\", target=\"_blank\"> вот ссылка<\/a> на версию главной страницы 2022 года.<\/p>\n<div class=\"e2-text-picture\">\n<div class=\"fotorama\" data-width=\"2172\" data-ratio=\"1.7920792079208\">\n<img src=\"https:\/\/artjom.one\/blog\/pictures\/site-map-2022.png\" width=\"2172\" height=\"1212\" alt=\"\" \/>\n<img src=\"https:\/\/artjom.one\/blog\/pictures\/site-map-2024.png\" width=\"2178\" height=\"1034\" alt=\"\" \/>\n<\/div>\n<div class=\"e2-text-caption\">Было (2022) \/ Стало (2024)<\/div>\n<\/div>\n",
            "date_published": "2024-09-14T19:40:55+05:00",
            "date_modified": "2024-09-14T19:45:17+05:00",
            "tags": [
                "2024",
                "Сайт"
            ],
            "author": {
                "name": "Артём",
                "url": "https:\/\/artjom.one\/blog\/",
                "avatar": "https:\/\/artjom.one\/blog\/pictures\/userpic\/userpic@2x.jpg?1659886788"
            },
            "_date_published_rfc2822": "Sat, 14 Sep 2024 19:40:55 +0500",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "130602",
            "_rss_enclosures": [],
            "_e2_data": {
                "is_favourite": false,
                "links_required": null,
                "og_images": []
            }
        },
        {
            "id": "125519",
            "url": "https:\/\/kini24.ru\/all\/dvizhenie-avtobusov-v-home-assistant\/",
            "title": "Движение автобусов в Home Assistant",
            "content_html": "<h3>Добавление движения общественного транспорта в Home Assistant<\/h3>\n<p>Наконец-то у меня получилось. Как обычно, делал всё сильно неспешно при наличии свободного времени и желания. «Воды» не будет, поэтому поехали.<br \/>\nСейчас не вспомню как, но как-то я вышел на адрес сайта, который отдает данные в формате JSON. Так как меня интересовал в первую очередь конкретный маршрут трамвая, то я получил вот такой вот адрес:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">https:\/\/mu-kgt.ru\/informing\/wap\/marsh\/?m=6%F2%F0&amp;action=getMarshData<\/code><\/pre><p>Что здесь интересного?<\/p>\n<ul>\n<li><i>m=6%F2%F0<\/i> — номер маршрута и обозначение типа транспорта. В данном случае часть «%F2%F0» — это всего лишь русские буквы «тр», то есть трамвай. Для троллейбуса это будет просто «т» или «%F2», для автобуса это либо «а», либо вообще без буквы — если честно, не пробовал, да и лень было.<\/li>\n<li><i>action=getMarshData<\/i> — вызывает одноименную функцию в скрипте.<br \/>\nПереходим в Home Assistant. Здесь я создал новый сенсор в configuration.yaml такого вида:<\/li>\n<\/ul>\n<pre class=\"e2-text-code\"><code class=\"\">sensor:\r\n  - platform: rest\r\n    resource: https:\/\/mu-kgt.ru\/informing\/wap\/marsh\/?m=6%F2%F0&amp;action=getMarshData\r\n    name: Трамвай 6 прибытие\r\n    unique_id: tram6_arrival\r\n    value_template: &quot;{{ value_json.ts_line.A[-1].st_arrive }}&quot;\r\n    scan_interval: 120<\/code><\/pre><p>Самое важное здесь — value_template, в котором содержится путь до нужной остановки, по которой получаем информацию о времени прибытия. Буквой «А» закодировано направление движения транспорта, которое вы видите в левой части экрана, а буквой «В» — в правой части экрана.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/kini24.ru\/pictures\/Snimok-ekrana-ot-2024-01-17-23-04-37@2x.png\" width=\"656\" height=\"329\" alt=\"\" \/>\n<div class=\"e2-text-caption\">Такие же буквы присутствуют на самом сайте и в приложении.<\/div>\n<\/div>\n<p>Я сделал два сенсора: прибытие и убытие, чтобы ориентироваться когда придет следующий трамвай на конечную остановку. Можно оформить и получше, но это — не главное.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/kini24.ru\/pictures\/Snimok-ekrana-ot-2024-01-17-21-16-28@2x.png\" width=\"243\" height=\"85\" alt=\"\" \/>\n<div class=\"e2-text-caption\">Вид сенсоров в Home Assistant<\/div>\n<\/div>\n<p>Ах да, чуть не забыл. Как посмотреть номер нужной остановки? Открываем страницу по <a href=\"https:\/\/mu-kgt.ru\/informing\/wap\/online\/\">ссылке<\/a>, выбираем тип транспорта, маршрут и направление движения. Затем щелкаем на нужной остановке, чтобы открыть прогноз движения транспорта. Среди прочей информации будет строка вида:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">Остановка: Детский кинотеатр «Мечта» (код 336)<\/code><\/pre><p>В скобках мы и увидим код остановки. В данных, которые нам отдает скрипт по запросу, это код содержится в поле <i>st_regnum<\/i>.<\/p>\n<p>И еще небольшое дополнение. Значения «0» и «-1», конечно, хороши для выбора конечных остановок при условии, что мы не знаем количество остановок на маршруте, который может измениться, например, из-за ремонта дороги или аварии. Следующий шаблон выбирает остановку с заданным кодом:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">value_template: &gt;-\r\n  {% set stops = value_json.ts_line.A %}\r\n  {% for stop in stops %}\r\n    {% if stop.st_regnum == 1989 %} {{ stop.st_arrive }} {% endif %}\r\n  {% endfor %}<\/code><\/pre>",
            "date_published": "2024-01-17T21:26:21+05:00",
            "date_modified": "2024-01-30T10:17:10+05:00",
            "tags": [
                "home assistant",
                "online",
                "автобус",
                "Движение",
                "Красноярск",
                "красноярскгортранс",
                "портал",
                "Сайт",
                "трамвай",
                "транспорт",
                "троллейбус"
            ],
            "author": {
                "name": "Копытов Иван",
                "url": "https:\/\/kini24.ru\/",
                "avatar": ""
            },
            "_date_published_rfc2822": "Wed, 17 Jan 2024 21:26:21 +0500",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "125519",
            "_rss_enclosures": [],
            "_e2_data": {
                "is_favourite": false,
                "links_required": null,
                "og_images": []
            }
        },
        {
            "id": "125272",
            "url": "https:\/\/artjom.one\/blog\/all\/sayt-v-2023\/",
            "title": "Сайт в 2023",
            "content_html": "<p>Я рад, что сайт продолжает развиваться и за 2023 год тут появилось несколько новых записей. Их могло бы быть немного больше, но я испытываю трудности с расстановкой приоритетов и тем, как я распоряжаюсь своим временем.<\/p>\n<p>Из того, что изменилось на сайте в 2023:<\/p>\n<ol start=\"1\">\n<li>Я устал играться с адаптацией тем оформления и «плагинов» после каждого обновления движка блога, поэтому когда вы в Блоге — меню имеет другое оформление и не залипает в шапке, как на самом сайте. Так же в записях пропал «кат», так как он недоступен в стандартной версии движка <a href=\"https:\/\/blogengine.ru\" target=\"_blank\">Эгея<\/a>.<\/li>\n<li>Я запустил <a href=\"https:\/\/artjom.one\/map.html\" target=\"_blank\">карту своих историй<\/a>. После многих месяцев проб и ошибок с OSM и разными библиотеками, мне всё же удалось найти относительно простой и внешне приемлемый вариант наглядной и интерактивной карты с помощью <a href=\"https:\/\/www.datawrapper.de\" target=\"_blank\">DataWrapper<\/a>.<\/li>\n<li>Я открыл возможность виртуально <a href=\"https:\/\/www.buymeacoffee.com\/artjom.one\" target=\"_blank\">угостить меня кофе<\/a>. Это для тех, кто читает, смотрит, получает удовольствие и хочет сделать приятное в ответ. Спасибо сервису <a href=\"https:\/\/www.buymeacoffee.com\" target=\"_blank\">Buy me a coffee<\/a> за эту возможность.<\/li>\n<\/ol>\n",
            "date_published": "2023-12-31T20:37:26+05:00",
            "date_modified": "2024-06-08T22:35:49+05:00",
            "tags": [
                "2023",
                "Сайт"
            ],
            "author": {
                "name": "Артём",
                "url": "https:\/\/artjom.one\/blog\/",
                "avatar": "https:\/\/artjom.one\/blog\/pictures\/userpic\/userpic@2x.jpg?1659886788"
            },
            "_date_published_rfc2822": "Sun, 31 Dec 2023 20:37:26 +0500",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "125272",
            "_rss_enclosures": [],
            "_e2_data": {
                "is_favourite": false,
                "links_required": null,
                "og_images": []
            }
        },
        {
            "id": "121551",
            "url": "https:\/\/artjom.one\/blog\/all\/zachem-mne-sayt\/",
            "title": "Зачем мне сайт?",
            "content_html": "<p>После того, как мой самый первый и самый лучший сайт с гостевой книгой на Народе канул в лету вместе со всем проектом Народа, сделать свой собственный сайт я думал неоднократно. Каждый раз приходило понимание того, что особо смысла нет: ведь есть такие прекрасные соцсети: уютная ВК-шечка с музыкой, фильмами и чатам времён нашей <s>молодости<\/s> юношества, ламповый Инстаграм с квадратными фотками, Твиттор, где можно <s>бздануть<\/s> пёстро пошутить в 160 символов, ну а коли душа поёт — можно накатать простыню в ЖЖ. Так было где-то в конце 00х и в самом начале 10х. Потом мир в целом и ИТ-индустрия в частности <s>начали скатываться в ебени<\/s>  стали стремительно меняться, и если первые изменения ещё производили Вау-эффект и казались полезными, то с каждым новым апдейтом мне хотелось <s>вопить «Дуров верни стену!»<\/s> откатиться обратно, на предыдущую версию. Если же попытаться систематизировать то, что мне не нравилось, то получился примерно такой список:<br \/>\n• Добавление разработчиками новых функций, которые мне не нужны и удаление нужных;<br \/>\n• Засилие рекламы;<br \/>\n• Тупые рекомендации: я хочу видеть ленту друзей, а не вот это всё;<br \/>\n• Пожирание времени;<br \/>\n• Осознание того, что то, что ты подгружаешь и создаёшь по сути тебе не принадлежит: тебя в один клик могут забанить на платформе за слово «хохлы» или за пост с сиськами;<br \/>\n• Потребление огромного объёма моих данных: все приложения настойчиво просят доступ к фотографиям, геопозиции, камере, микрофону, адресной книге (да, знаю, можно отключить и ограничить, но сам факт);<br \/>\n• Хороший контент набирает мало лайков, вирусный треш-контент растёт как на дрожжах (да, нашему мозгу ему проще потреблять);<br \/>\n• Все готовы только потреблять контент, причём на ходу и в огромных количествах;<br \/>\n• Активность спала практически на нет. Если раньше имея 30 подписчиков в инсте легко собиралось 20 лайков и 10 человек комментировали, то сейчас при куда более высоком охвате активность в сотни раз меньше.<\/p>\n<p>В начале этого года настало чёткое осознание того, что всё это социальное <s>блядство<\/s> распутство надо заканчивать. Времени уходит много, выхлопа, а главное удовольствия — ноль. Я рад видеть фотки некоторых своих знакомых и друзей, время от времени, но листать ленту из 100 человек, которые постят как они проводят свой <s>никчёмный<\/s> восхитительный день нет никакого желания. Для этого можно в любой момент времени открыть вэб-версию инстаграма старушки Бузовой ;)<\/p>\n<p>В общем хватит тратить на это всё своё время, лучше <s>проебать<\/s> потратить его на работу над своим сайтом, который будет полностью моим: от оформления до контента. Писать сюда на интересные и волнующие меня темы, делиться смешными и не очень историями и размышлениями долгие долги годы, пока на девятом десятке своих лет улетев в космос на космическом корабле меня из-за ошибки прогноза погоды не засосёт другая вселенная...<\/p>\n",
            "date_published": "2022-08-18T02:53:15+05:00",
            "date_modified": "2024-06-08T22:38:14+05:00",
            "tags": [
                "2022",
                "Сайт"
            ],
            "author": {
                "name": "Артём",
                "url": "https:\/\/artjom.one\/blog\/",
                "avatar": "https:\/\/artjom.one\/blog\/pictures\/userpic\/userpic@2x.jpg?1659886788"
            },
            "_date_published_rfc2822": "Thu, 18 Aug 2022 02:53:15 +0500",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "121551",
            "_rss_enclosures": [],
            "_e2_data": {
                "is_favourite": false,
                "links_required": null,
                "og_images": []
            }
        }
    ],
    "_e2_version": 4079,
    "_e2_ua_string": "Aegea 11.0 (v4079e)"
}