<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0"
  xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
  xmlns:atom="http://www.w3.org/2005/Atom">

<channel>

<title>Копытов Иван: заметки с тегом вода</title>
<link>https://www.kini24.ru/tags/voda/</link>
<description>Блог ленивого сисадмина</description>
<author></author>
<language>ru</language>
<generator>Aegea 11.3 (v4134)</generator>

<itunes:subtitle>Блог ленивого сисадмина</itunes:subtitle>
<itunes:image href="" />
<itunes:explicit></itunes:explicit>

<item>
<title>Получаем данные с сайта СГК для Home Assistant</title>
<guid isPermaLink="false">276</guid>
<link>https://www.kini24.ru/all/poluchaem-dannye-s-sayta-sgk-dlya-home-assistant/</link>
<pubDate>Thu, 20 Feb 2025 10:22:01 +0700</pubDate>
<author></author>
<comments>https://www.kini24.ru/all/poluchaem-dannye-s-sayta-sgk-dlya-home-assistant/</comments>
<description>
&lt;p&gt;В Home Assistant у меня было отслеживание почти всех счетов по квартире: электроэнергия, коммунальные платежи, ТКО, капитальный ремонт и т. д. Проблема была только с сайтом компании СГК, которая занимается предоставлением горячей и холодной воды, отоплением и водоотведением. При помощи таких интеграций, как scrape и multiscrape загрузить данные с их сайта не получалось, поэтому пришлось пойти более сложным путем и написать свой скрипт. На деле он оказался совсем простым, требует доработки в плане проверок ответов сервера, но даже в таком виде он вполне работоспособен. Чтобы не перечислять все данные, возьму только отопление.&lt;/p&gt;
&lt;code python&gt;
import requests
import json

login = data.get("username", "")
password = data.get("password", "")
login_url = 'https://krk.sibgenco.services/Account/Auth'
data_url = 'https://krk.sibgenco.services/fl/accounts/getAccounts'

headers = {
    "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
    "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0",
}

# Создаем новую сессию
session = requests.Session()
# Авторизуемся на сервере
result = session.post(login_url, data = 'login=' + login + '&amp;password=' + password, headers = headers)
# print(result.text)

# Получаем данные в JSON формате
result = session.get(data_url, headers = headers).json()
session.close()

# Перекодируем текст в читаемый
result = result.encode().decode('unicode-escape', 'ignore')
result = json.dumps(result)
result = json.loads(result)

# Убираем лишние кавычки в разделе "Cards" (откуда взялись?)
result = result.replace('"Cards":"', '"Cards":').replace('}]"}', '}]}')
# print(type(result))
# print(result)

if len(result) &gt; 0:
    logger.info("Данные от СКГ получены")
else:
    logger.warning("Ошибка получения данных от СГК")
# print(result.encode().decode('unicode-escape', 'ignore'))

# Преобразуем строку данных в JSON объект
json_data = json.loads(result)["Accounts"][0]["CalcData"]["Products"]#[0]["ToPay"]

# print(json_data, '\n')
# print(json.dumps(json_data), '\n')

# for product in json_data["Accounts"][0]["CalcData"]["Products"]:
#     print(product["ItemName"] + ": " + str(product["ToPay"]) + " руб.")

if json_data[0]["ToPay"] &gt; 0:
    hass.states.set('sensor.sgk_heating', json_data[0]["ToPay"] * -1)
else:
    hass.states.set('sensor.sgk_heating', json_data[0]["ToPay"])
&lt;/code&gt;
&lt;p&gt;В ходе работы скрипта получаем несколько секций для каждой из услуг, которые выглядят вот так:&lt;/p&gt;
&lt;code json&gt;
  - IsFine: false
    Item: 13
    ContractId: 307015
    ItemName: Отопление
    SaldoBegin: 4228.65
    Paid: 4228.65
    SaldoEnd: 0
    FineEndCheck: true
    FineEnd: 0
    AccrualsCheck: false
    Accruals: 0
    Recalculation: 0
    ToPayCheck: true
    ToPay: 0
    ChargeDetails: ""
    PayDetails: 08.02.2025 4228.65;
    FinePayDetails: ""
    WebPayDetails: 08.02.2025=5338.65=20250208171312-99240-6764617.585349
&lt;/code&gt;
&lt;p&gt;Далее просто создаем автоматизацию в Home Assistant, которая будет запускать этот скрипт. Для надежности перед первым запуском создаем несколько новых сенсоров в примерно таком формате:&lt;/p&gt;
&lt;code python&gt;
    # Задолженность за отопление, итого
    heating_debt_summary:
      unique_id: &lt;тут ваш ID сенсора&gt;
      attribute_templates:
        Пеня: "{{ states('sensor.sgk_heating_penya') }} ₽"
      device_class: monetary
      friendly_name: Задолженность за отопление
      unit_of_measurement: "RUB"
      # value_template: "{{ states('sensor.sgk_heating') | float(0) + states('sensor.sgk_heating_penya') | float(0) }}"
      value_template: "{{ states('sensor.sgk_heating') | float(0) }}"
&lt;/code&gt;
&lt;p&gt;Как видно, в сенсоре будет также атрибут «пеня». Можно вывести суммарную задолженность — долг+пеня, можно вывести только основную — на выбор.&lt;br /&gt;
И вот после сайта СГК меня слегка «понесло» и сделал схожие скрипты для получения информации с сайтов ФНС, капремонта, энергосбыта и регистратора доменов. С ФНС было интересно — там сначала нужно пройти basic-авторизацию, получить токен безопасности, авторизоваться еще раз и слать его при каждом запросе данных. А дальше было уже намного легче — у ФНС существует API, которое они активно используют. Официальной документации по нему нет, но, покопавшись на сайте, можно легко получить все запросы. Для чего нужны эти данные? Например, чтобы отслеживать задолженность по налогам (в том числе и самозанятого), недвижимость и банковские счета. Сейчас такое время, что на тебя могут открыть какой-то счет в банке, сделать тебя «начальником» какой-то конторы, а ты даже будешь не в курсе. Но стоит отметить, что в налоговой отображаются только обычные, дебетовые счета, информации по кредитам там нет.&lt;/p&gt;
</description>
</item>

<item>
<title>Еж — птица гордая...</title>
<guid isPermaLink="false">199</guid>
<link>https://www.kini24.ru/all/ezh-ptica-gordaya/</link>
<pubDate>Sun, 10 Jun 2018 12:02:25 +0700</pubDate>
<author></author>
<comments>https://www.kini24.ru/all/ezh-ptica-gordaya/</comments>
<description>
&lt;h3&gt;Небольшая история про коммунальщиков&lt;/h3&gt;
&lt;p&gt;28 числа в мае отключили горячую воду. Ну нормально, каждый год такое. Включить пообещали 6 июня. Ложимся спать 6-го числа, горячей воды все еще нет. 7 и 8 числа тоже нет. Но появилось объявление на входной двери подъезда, гласящее что при проведении гидравлических испытаний не выдержала труба на входе дома. Горячую воду подадут после окончания ремонта. Вчера жена утром не выдержала и позвонила в УК, чтобы узнать когда будет проводиться ремонт. Никакой конкретной информации не узнала, но, видимо, или она им звонила несколько раз в течение дня, или такие вопросы поступали и от других жильцов, но вечером во дворе была обнаружена ремонтная бригада. Провозившись часа три, они собрались и уехали. Заодно включив подачу горячей воды.&lt;br /&gt;
И, вроде бы, нет в этой истории ничего такого... Впереди три выходных дня, работать, скорее всего, из коммунальщиков никто не будет. А вот в пятницу должны отключить холодную воду. На два дня.&lt;br /&gt;
А если бы никто не позвонил, не спросил про подачу горячей воды, ее бы так и не дали до середины недели? И включили бы только после праздников? А нормально помыться хочется не один раз в неделю.&lt;/p&gt;
</description>
</item>

<item>
<title>Стакан воды</title>
<guid isPermaLink="false">159</guid>
<link>https://www.kini24.ru/all/stakan-vody/</link>
<pubDate>Thu, 08 Feb 2018 18:15:40 +0700</pubDate>
<author></author>
<comments>https://www.kini24.ru/all/stakan-vody/</comments>
<description>
&lt;p&gt;&lt;a href="https://twitter.com/kopytov24/status/961558572592238593"&gt;twitter.com/kopytov24/status/961558572592238593&lt;/a&gt;&lt;/p&gt;</description>
</item>


</channel>
</rss>