Активность
Ответил на комментарий к статье Sonoff в Home Assistant без перепрошивки
«<p>Не совсем понятно что было найдено в репозитории peterbuga? описанный в статье код собственно оттуда и был взят. У меня даже с самой последней <a href="https://github.com/peterbuga/HASS-sonoff-ewelink/tree/master/sonoff">версией кода от 28.09.2019</a> ошибка всё равно остается :(. Весь лог забит <br /></p><p>
File "/config/custom_components/sonoff/__init__.py", line 662, in get_state
return device['params']['switch'] == 'on' if device else False
<strong>KeyError: 'switch'
</strong></p>»
Ответил на комментарий к статье Sonoff в Home Assistant без перепрошивки
«<p>В какой версии системы не работает?</p><p>у меня в докере сейчас последняя 0.99.1 и работает, хотя раз в несколько секунд выдает в лог ошибку, описанную выше.</p>»
Получил лайк от пользователя за коментарий написанный к статье Sonoff в Home Assistant без перепрошивки
«<p>Всем здравия.<br />Кто владеет питоном и может подсказать почему в системе версии
0.95.4
кастомный компонент постоянно генерирует ошибку:<br /><br /><em>22:40
custom_components/sonoff/__init__.py (ERROR)
- message first occured at
15 сентября 2019 г., 12:36
and <strong>shows up 9856 times</strong>
</em>
<br /><strong></strong></p><p>В приложении eWelink есть 2 устройства - светодиодная лампа и сенсорный выключатель на 2 линии. </p><p><strong>Детали ошибки:</strong><br />Mon Sep 16 2019 22:40:24 GMT+0300 (Moscow Standard Time)</p>
<pre>Error doing job: Task exception was never retrieved</pre>
<pre>Traceback (most recent call last):
File "/usr/src/app/homeassistant/helpers/entity_platform.py", line 365, in _async_add_entity
await entity.async_update_ha_state()
File "/usr/src/app/homeassistant/helpers/entity.py", line 225, in async_update_ha_state
self._async_write_ha_state()
File "/usr/src/app/homeassistant/helpers/entity.py", line 248, in _async_write_ha_state
state = self.state
File "/usr/src/app/homeassistant/helpers/entity.py", line 454, in state
return STATE_ON if self.is_on else STATE_OFF
File "/config/custom_components/sonoff/switch.py", line 48, in is_on
self._state = self.get_state()
File "/config/custom_components/sonoff/__init__.py", line 414, in get_state
return device['params']['switch'] == 'on' if device else False
KeyError: 'switch</pre>»
Ответил на комментарий к статье AppDaemon. Часть 2
«<p>Спасибо за подсказку.<br />Но добавление этого параметра не помогло :( . <br /></p><p>
Все равно
в логе контейнера
идут сообщения</p>
<p>2019-09-19 17:28:55.902354 INFO AppDaemon: HASS: Connected to Home Assistant 0.95.4 </p>
<p>2019-09-19 17:28:55.910182 WARNING AppDaemon: HASS: Error in authentication </p>
<p>2019-09-19 17:28:55.910614 WARNING AppDaemon: HASS: Disconnected from Home Assistant, retrying in 5 seconds</p>
<p>В логе самого HA <br /></p><p>2019-09-19
20:27:10 WARNING (MainThread) [homeassistant.components.http.ban] Login attempt
or request with invalid authentication from 172.17.0.2</p><p>Пробовал разные токены. Все равно не подключается. Пробовал давать в териминале на синолоджи команду<br />curl -X GET -H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJlODU4Y2Y4NThhMGQ0ZWM3OGQ3MzVjOTM0N2M3MmY3ZSIsImlhdCI6MTU1NTUzNDI5NiwiZXhwIjoxODcwODk0Mjk2fQ._Mhute7Z4dGcErQAVPU9PxGUslp4qiw0KGkY1moCPjwa" \<br />
-H "Content-Type: application/json" <a href="https://hellad.noip.me:88/api/">https://мой.домен.здесь:88/api/</a></p>
<p>Получаю ответ</p>
<p>401: Unauthorized</p><p>Видимо надо дальше копать в сторону сертификатов и провайдеров авторизации HA. Но вот куда именно не совсем понимаю...</p><p></p>»
Добавил комментарий к статье AppDaemon. Часть 2
«<p>Вот конфиг. Мне и непонятно, почему демон не хочет подключаться. Другие внешние сервисы работают (Алекса, Яндекс, Телеграм и т.д.)</p><p>log:</p>
<p> errorfile: STDERR</p>
<p> logfile: STDOUT</p>
<p> </p>
<p>appdaemon:</p>
<p> threads: 10</p>
<p> plugins:</p>
<p> HASS:</p>
<p> type: hass</p>
<p> ha_url: https://192.168.192.25:8123</p>
<p> token: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiIwM2I0NmVmNmI1OWE0YmEyOGVlZmFmOTg0MmJkYTBlMyIsImlhdCI6MTU2ODc1NDk0OCwiZXhwIjoxODg0MTE0OTQ4fQ.UpnbY1F5AdBsHSPp1CCUztZm3hUscUNYxt0cZhfysSM</p>
<p>hadashboard:</p>
<p> dash_url: http://192.168.192.25:5050</p><p><br /></p>
»
Добавил комментарий к статье AppDaemon. Часть 2
«<p>Подскажите, после запуска AppDaemon и перезапуска HA объекты в системе с именем, содержащим mikrotik, должны сразу появиться? Не нужно в конфигурации добавлять компоненту как описано на <a href="https://www.home-assistant.io/components/mikrotik/">https://www.home-assistant.io/...</a>?</p>
<p>У меня HADashboard на порту 5050 доступен (т.е.демон стартовал), но ничего не появилось в HA. <br /></p><p>В логе контейнера вижу сообщение об ошибке подключения к HA версии
0.95.4
:<br /></p><p>Requirement already up-to-date: librouteros==2.3.1 in /usr/local/lib/python3.6/site-packages (from -r /conf/requirements.txt (line 1)) (2.3.1)
<br />2019-09-18 19:59:28.480442 INFO AppDaemon Version 3.0.5 starting
<br />2019-09-18 19:59:28.480776 INFO Configuration read from: /conf/appdaemon.yaml
<br />2019-09-18 19:59:28.482510 INFO AppDaemon: Starting Apps
<br />2019-09-18 19:59:28.486005 INFO AppDaemon: Loading Plugin HASS using class HassPlugin from module hassplugin
<br />2019-09-18 19:59:28.679030 INFO AppDaemon: HASS: HASS Plugin Initializing
<br />2019-09-18 19:59:28.679491 INFO AppDaemon: HASS: HASS Plugin initialization complete
<br />2019-09-18 19:59:28.679999 INFO Starting Dashboards
<br />2019-09-18 19:59:28.688108 INFO API is disabled
<br />2019-09-18 19:59:28.732934 WARNING AppDaemon: HASS: Disconnected from Home Assistant, retrying in 5 seconds
<br />2019-09-18 19:59:33.743685 WARNING AppDaemon: HASS: Disconnected from Home Assistant, retrying in 5 seconds
</p><p>Куда копать? Как можно продиагностировать дальше?</p>»
Добавил комментарий к статье Sonoff в Home Assistant без перепрошивки
«<p>Всем здравия.<br />Кто владеет питоном и может подсказать почему в системе версии
0.95.4
кастомный компонент постоянно генерирует ошибку:<br /><br /><em>22:40
custom_components/sonoff/__init__.py (ERROR)
- message first occured at
15 сентября 2019 г., 12:36
and <strong>shows up 9856 times</strong>
</em>
<br /><strong></strong></p><p>В приложении eWelink есть 2 устройства - светодиодная лампа и сенсорный выключатель на 2 линии. </p><p><strong>Детали ошибки:</strong><br />Mon Sep 16 2019 22:40:24 GMT+0300 (Moscow Standard Time)</p>
<pre>Error doing job: Task exception was never retrieved</pre>
<pre>Traceback (most recent call last):
File "/usr/src/app/homeassistant/helpers/entity_platform.py", line 365, in _async_add_entity
await entity.async_update_ha_state()
File "/usr/src/app/homeassistant/helpers/entity.py", line 225, in async_update_ha_state
self._async_write_ha_state()
File "/usr/src/app/homeassistant/helpers/entity.py", line 248, in _async_write_ha_state
state = self.state
File "/usr/src/app/homeassistant/helpers/entity.py", line 454, in state
return STATE_ON if self.is_on else STATE_OFF
File "/config/custom_components/sonoff/switch.py", line 48, in is_on
self._state = self.get_state()
File "/config/custom_components/sonoff/__init__.py", line 414, in get_state
return device['params']['switch'] == 'on' if device else False
KeyError: 'switch</pre>»
Поставил лайк к новости #Google__ИсправьОшибку__вУмномДоме - решение есть
Добавил комментарий к записи в блогу Yandex.Weather компонент погоды для Home-assistant
«<p>Помимо добавления пустого файла
__init__.py
пришлось для проверки корректности конфигурации без ошибок <strong>добавить в папку /custom_components/yandex_weather
ещё и</strong> <strong>файл
manifest.json</strong>. Без него проверка давала сообщение об ошибке "Integration yandex_weather not found when trying to verify its weather platform." <br /></p>
<p>Содержание файла:</p>
<p>{
"domain": "Yandex Weather",
"name": "Yandex Weather",
"documentation": "https://sprut.ai/client/blog/1165",
"requirements": [],
"dependencies": [],
"codeowners": ["@sprut.ai"]
}</p>
<p><a href="https://community.home-assistant.io/t/integration-zanzito-not-found-when-trying-to-verify-its-notify-platform/113393">пример решения подобной ошибки</a></p>»
Получил лайк от пользователя за коментарий написанный к статье Добавляем Home Assistant в Умный Дом Яндекса
«<p>Разработчик кастомного компонента мне уточнил, что нужна версия ХА не ниже 0.93 (он добавил это в readme). После обновления моего hass удалось настроить связку с Яндексом как описано в статье.<br /></p>»
Добавил комментарий к статье Добавляем Home Assistant в Умный Дом Яндекса
«<p>Разработчик кастомного компонента мне уточнил, что нужна версия ХА не ниже 0.93 (он добавил это в readme). После обновления моего hass удалось настроить связку с Яндексом как описано в статье.<br /></p>»
Ответил на комментарий к статье Добавляем Home Assistant в Умный Дом Яндекса
«<p>Но судя по документации на <a href="https://developers.home-assistant.io/docs/en/creating_component_loading.html">https://developers.home-assistant.io/docs/en/creating_component_loading.html</a></p><p>сейчас надо размещать в
<code><config directory>/custom_components/<component name></code>. Так что для моего варианта в докере config/custom_components/yandex_smart_home выглядит правильной папкой.</p>»
Добавил комментарий к статье Добавляем Home Assistant в Умный Дом Яндекса
«<p>Не одскажете на какой версии ХА должен работать этот кастомный компонент?</p><p>после переноса файлов с гитхаба в папку yandex_smart_home в custom_components и добавления нескольких строк в конфиг у меня в ХА версии 0.92.2 в докере на synology даже проверка конфигурации не проходит :( . причем веб морда ХА зависает на этом и приходится перегружать контейнер средствами докера. Если же пробовать запустить, то получаю в логе следующую ошибку (про атрибут медиа плеера):</p><p>2019-05-30 00:26:05 ERROR (MainThread) [homeassistant.setup] Error during setup of component cloud</p>
<p>Traceback (most recent call last):</p>
<p> File "/usr/local/lib/python3.7/asyncio/runners.py", line 43, in run return loop.run_until_complete(main)</p>
<p> File "uvloop/loop.pyx", line 1451, in uvloop.loop.Loop.run_until_complete</p>
<p> File "/usr/src/app/homeassistant/__main__.py", line 283, in setup_and_run_hass</p>
<p> log_no_color=args.log_no_color)</p>
<p> File "/usr/src/app/homeassistant/bootstrap.py", line 180, in async_from_config_file</p>
<p> config_dict, hass, enable_log=False, skip_pip=skip_pip)</p>
<p> File "/usr/src/app/homeassistant/bootstrap.py", line 91, in async_from_config_dict</p>
<p> await _async_set_up_integrations(hass, config)</p>
<p> File "/usr/src/app/homeassistant/bootstrap.py", line 394, in _async_set_up_integrations</p>
<p> for domain in domains_to_load</p>
<p> File "/usr/src/app/homeassistant/setup.py", line 50, in async_setup_component</p>
<p> return await task # type: ignore</p>
<p> File "/usr/src/app/homeassistant/setup.py", line 126, in _async_setup_component</p>
<p> hass, config, integration)</p>
<p> File "/usr/src/app/homeassistant/config.py", line 756, in async_process_component_config</p>
<p> component = integration.get_component()</p>
<p> File "/usr/src/app/homeassistant/loader.py", line 130, in get_component</p>
<p> cache[self.domain] = importlib.import_module(self.pkg_path)</p>
<p> File "/usr/local/lib/python3.7/importlib/__init__.py", line 127, in import_module</p>
<p> return _bootstrap._gcd_import(name[level:], package, level)</p>
<p> File "<frozen importlib._bootstrap>", line 1006, in _gcd_import</p>
<p> File "<frozen importlib._bootstrap>", line 983, in _find_and_load</p>
<p> File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked</p>
<p> File "<frozen importlib._bootstrap>", line 677, in _load_unlocked</p>
<p> File "<frozen importlib._bootstrap_external>", line 728, in exec_module</p>
<p> File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed</p>
<p> File "/config/custom_components/yandex_smart_home/__init__.py", line 12, in <module></p>
<p> from .const import (</p>
<p> <em> File "/config/custom_components/yandex_smart_home/const.py", line 73, in <module></em></p><em>
</em><p><em> (media_player.DOMAIN, media_player.DEVICE_CLASS_TV): TYPE_MEDIA_DEVICE_TV,</em></p>
<p><strong>AttributeError: module 'homeassistant.components.media_player' has no attribute 'DEVICE_CLASS_TV</strong>'</p>
<p>During handling of the above exception, another exception occurred:</p>
<p>Traceback (most recent call last):</p>
<p> File "/usr/src/app/homeassistant/setup.py", line 153, in _async_setup_component</p>
<p> hass, processed_config)</p>
<p> File "/usr/src/app/homeassistant/components/cloud/__init__.py", line 156, in async_setup</p>
<p> await prefs.async_initialize()</p>
<p> File "/usr/src/app/homeassistant/components/cloud/prefs.py", line 25, in async_initialize</p>
<p> prefs = await self._store.async_load()</p>
<p> File "/usr/src/app/homeassistant/helpers/storage.py", line 81, in async_load</p>
<p> return await self._load_task</p>
<p>concurrent.futures._base.CancelledError</p>»
Поставил лайк к статье Прошивка устройств Sonoff на Tasmota и настройка MQTT
Поставил лайк к статье Использование ESPHome в связке с Home Assistant
Добавил комментарий к статье Hyperion Ambilight - адаптивная подсветка ТВ
«<p>И ещё один момент дополню. Я так и не смог найти hdmi splitter с поддержкой CEC. Причем последний раз специально уточнял у китайского продавца, правда ли то, что такая поддержка реально работает, как написано на упаковке. Он конечно подтвердил :(</p><p>В итоге теперь и ресивер, и тв надо включать по отдельности, а не как раньше, достаточно было включить что-то одно. Жить можно, но лень - двигатель прогресса... </p>»
Ответил на комментарий к статье Hyperion Ambilight - адаптивная подсветка ТВ
«<p>Возможно. Я уже не очень помню какие параметры остались. Вот с чем точно пришлось поэкспериментировать - так это с размером отступа от края экрана для видеобуфера, который анализируется и формирует в итоге сигнал на ленту. Поначалу фильмы не на весь экран (с черными полосами сверху и снизу) давали только боковую подсветку. А если отступ слишком большой, то могли возникать нестыковки, когда цвет изображения на экране отличался от цвета подсветки (если к центру экрана был переход).</p>»
Получил лайк от пользователя за коментарий написанный к статье Hyperion Ambilight - адаптивная подсветка ТВ
«<p>Только недавно обнаружил этот сайт и статью. Поделюсь некоторым личным опытом.</p>
<p>Я сделал себе подсветку специально с лентой, работающей от 5В. Заказывал вариант SK6812
RGBNW + 5M 60LED White IP21 <a href="https://ru.aliexpress.com/item/Best-Price-1m-2m-5m-Addressable-SK6812-RGBW-led-strip-WWA-Waterproof-30-60-144-leds/32664925043.html">тут</a> (не реклама, просто для примера). На плазму 50 дюймов хватило на все 4 стороны без разрывов и ещё немного осталось. Заказывал и угловые разъемы, но в итоге отказался от них и просто соединял стороны припаянными проводами - легче потом приклеить ленту на заднюю стенку ТВ, которая имеет изгибы. Блока питания на 5Ампер хватает.</p>
<p>Сначала настраивал на Pi2, а когда все заработало, то перенес настройки на Pi0 W. Сигнал управления лентой берется прямо GPIO малины. При питании от разных источников важно не забыть соединить землю малины с землёй ленты, иначе получится хаотичное мерцание. Ресурсов этой маленькой малины вполне хватает для реализации подсветки. А вот запустить на ней ещё и kodi не получилось - мало памяти. Ставил на разные образы. В конечном итоге оставил на hassbian.</p>
<p><a href="https://fr.aliexpress.com/item/Nsendato-UTV-007-USB2-0-To-HDMI-Video-Catpure-Card-Converter-USB-2-0-HD-1/32827676511.html">HDMI Grabber на чипе UTV-007</a> у меня проработал меньше года. Правда я его не дорабатывал, а он реально греется. Возможно это его и сделало глючным. Граббер стал зависать, перегружаться малину и доставлять больше проблем, чем работать. А ещё у моего экземпляра была особенность (которую на иностранных форумах обсуждают) - он пропускает фантомное питание от HDMI. Т.е. при выключенной от разъема питания малине через него приходит питание на малину. Вплоть до того, что малина начинает загружаться. Народ советовал впаивать блокирующий диод. Но для этого надо иметь возможность паять smd. </p>
<p>Интеграция с HA работает, из приложения на андроид - управляется. В интерфейсе HA показывает, что supported_features: 21. При желании можно заморочится с реализацией как предложено <a href="https://megamorphf.github.io/homeassistant/hyperion/2017/07/23/adding-more-features-to-hyperion-in-homeassistant.html">здесь</a>. </p>
<p>Пример с фото как работает прилагаю. Мой пример с видео музыкального концерта можно посмотреть <a href="https://www.dropbox.com/s/4qtum441t07fs2q/20180116_105222.mp4?dl=0">здесь</a> (внимание, размер 346МБайт). Всем успешной реализации проектов! <br /></p><img src="/static/media/cache/00/19/50/5/274033/10890/2000x2000x_image.jpg?1548273516" alt="2000x2000x_image.jpg?1548273516" />»
Получил лайк от пользователя за коментарий написанный к статье Hyperion Ambilight - адаптивная подсветка ТВ
«<p>Только недавно обнаружил этот сайт и статью. Поделюсь некоторым личным опытом.</p>
<p>Я сделал себе подсветку специально с лентой, работающей от 5В. Заказывал вариант SK6812
RGBNW + 5M 60LED White IP21 <a href="https://ru.aliexpress.com/item/Best-Price-1m-2m-5m-Addressable-SK6812-RGBW-led-strip-WWA-Waterproof-30-60-144-leds/32664925043.html">тут</a> (не реклама, просто для примера). На плазму 50 дюймов хватило на все 4 стороны без разрывов и ещё немного осталось. Заказывал и угловые разъемы, но в итоге отказался от них и просто соединял стороны припаянными проводами - легче потом приклеить ленту на заднюю стенку ТВ, которая имеет изгибы. Блока питания на 5Ампер хватает.</p>
<p>Сначала настраивал на Pi2, а когда все заработало, то перенес настройки на Pi0 W. Сигнал управления лентой берется прямо GPIO малины. При питании от разных источников важно не забыть соединить землю малины с землёй ленты, иначе получится хаотичное мерцание. Ресурсов этой маленькой малины вполне хватает для реализации подсветки. А вот запустить на ней ещё и kodi не получилось - мало памяти. Ставил на разные образы. В конечном итоге оставил на hassbian.</p>
<p><a href="https://fr.aliexpress.com/item/Nsendato-UTV-007-USB2-0-To-HDMI-Video-Catpure-Card-Converter-USB-2-0-HD-1/32827676511.html">HDMI Grabber на чипе UTV-007</a> у меня проработал меньше года. Правда я его не дорабатывал, а он реально греется. Возможно это его и сделало глючным. Граббер стал зависать, перегружаться малину и доставлять больше проблем, чем работать. А ещё у моего экземпляра была особенность (которую на иностранных форумах обсуждают) - он пропускает фантомное питание от HDMI. Т.е. при выключенной от разъема питания малине через него приходит питание на малину. Вплоть до того, что малина начинает загружаться. Народ советовал впаивать блокирующий диод. Но для этого надо иметь возможность паять smd. </p>
<p>Интеграция с HA работает, из приложения на андроид - управляется. В интерфейсе HA показывает, что supported_features: 21. При желании можно заморочится с реализацией как предложено <a href="https://megamorphf.github.io/homeassistant/hyperion/2017/07/23/adding-more-features-to-hyperion-in-homeassistant.html">здесь</a>. </p>
<p>Пример с фото как работает прилагаю. Мой пример с видео музыкального концерта можно посмотреть <a href="https://www.dropbox.com/s/4qtum441t07fs2q/20180116_105222.mp4?dl=0">здесь</a> (внимание, размер 346МБайт). Всем успешной реализации проектов! <br /></p><img src="/static/media/cache/00/19/50/5/274033/10890/2000x2000x_image.jpg?1548273516" alt="2000x2000x_image.jpg?1548273516" />»
Добавил комментарий к статье Hyperion Ambilight - адаптивная подсветка ТВ
«<p>Только недавно обнаружил этот сайт и статью. Поделюсь некоторым личным опытом.</p>
<p>Я сделал себе подсветку специально с лентой, работающей от 5В. Заказывал вариант SK6812
RGBNW + 5M 60LED White IP21 <a href="https://ru.aliexpress.com/item/Best-Price-1m-2m-5m-Addressable-SK6812-RGBW-led-strip-WWA-Waterproof-30-60-144-leds/32664925043.html">тут</a> (не реклама, просто для примера). На плазму 50 дюймов хватило на все 4 стороны без разрывов и ещё немного осталось. Заказывал и угловые разъемы, но в итоге отказался от них и просто соединял стороны припаянными проводами - легче потом приклеить ленту на заднюю стенку ТВ, которая имеет изгибы. Блока питания на 5Ампер хватает.</p>
<p>Сначала настраивал на Pi2, а когда все заработало, то перенес настройки на Pi0 W. Сигнал управления лентой берется прямо GPIO малины. При питании от разных источников важно не забыть соединить землю малины с землёй ленты, иначе получится хаотичное мерцание. Ресурсов этой маленькой малины вполне хватает для реализации подсветки. А вот запустить на ней ещё и kodi не получилось - мало памяти. Ставил на разные образы. В конечном итоге оставил на hassbian.</p>
<p><a href="https://fr.aliexpress.com/item/Nsendato-UTV-007-USB2-0-To-HDMI-Video-Catpure-Card-Converter-USB-2-0-HD-1/32827676511.html">HDMI Grabber на чипе UTV-007</a> у меня проработал меньше года. Правда я его не дорабатывал, а он реально греется. Возможно это его и сделало глючным. Граббер стал зависать, перегружаться малину и доставлять больше проблем, чем работать. А ещё у моего экземпляра была особенность (которую на иностранных форумах обсуждают) - он пропускает фантомное питание от HDMI. Т.е. при выключенной от разъема питания малине через него приходит питание на малину. Вплоть до того, что малина начинает загружаться. Народ советовал впаивать блокирующий диод. Но для этого надо иметь возможность паять smd. </p>
<p>Интеграция с HA работает, из приложения на андроид - управляется. В интерфейсе HA показывает, что supported_features: 21. При желании можно заморочится с реализацией как предложено <a href="https://megamorphf.github.io/homeassistant/hyperion/2017/07/23/adding-more-features-to-hyperion-in-homeassistant.html">здесь</a>. </p>
<p>Пример с фото как работает прилагаю. Мой пример с видео музыкального концерта можно посмотреть <a href="https://www.dropbox.com/s/4qtum441t07fs2q/20180116_105222.mp4?dl=0">здесь</a> (внимание, размер 346МБайт). Всем успешной реализации проектов! <br /></p><img src="/static/media/cache/00/19/50/5/274033/10890/2000x2000x_image.jpg?1548273516" alt="2000x2000x_image.jpg?1548273516" />»
Регистрация
Присоединился к порталу