Задать вопрос
  • Как сделать умное отопление водяного теплого пола?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Какое выбрать оборудование для этой цели, чтобы работало и стоило недорого?

    • Малинка или Апельсинка для HomeAssistant (можно взять младшую или старую недорогую версию, а не сразу самый топ)
    • Простой маленький SSD под систему — М2, SATA или в USB коробочке, в зависимости от модели МК (обычные флешки не надёжны и быстро дохнут, а промышленная флешка почти как SSD стоит)
    • Корпус с кулером для МК или хотя бы радиаторы использовать и простой кулер или алюминиевый корпус-радиатор
    • Стабилизированный БП для МК с запасом мощности, ватт на 30-50 на случай, если захочется ещё что-то подключить к МК (не зарядка для телефона — частая ошибка, большинство мануалов не читают)
    • ZigBee usb донгл
    • 4х двух-ходовых шаровых крана с электроприводом, очень желательно на 12/24 Вольта, процент открытия калибруется по времени открытия/закрытия в самом HA (220 тоже вполне подойдёт, просто если сломается или протечёт такой кран — будет риск поражения электричеством и КЗ)
    • 4х двух-канальных реле для управления приводами — один канал на открытие, второй — на закрытие (или два 4х или одно на 8х)
    • Блок питания для кранов, если они на 12/24 Вольта
    • Пластиковый ящик для МК (пластик — для WiFi), БП, проводов и прочего оборудования, лучше брать больше и с запасом места — потом все равно захочется ещё чего-то добавить
    • 4х ZigBee обычных термодатчика на трубу
    • 4х ZigBee датчика температуры и влажности воздуха в каждое помещение (они обычно два в одном)
    • Вот тут каталог совместимых ZigBee устройств: https://zigbee.blakadder.com/all.html

    А в HA настраиваются скрипты или простая логика для автоматической работы всего вот этого оборудования. Из бюджетных устройств есть Sonoff:

    В целом нормальные девайсы. Да, иногда брак попадается — но при стоимости в два-четыре раза меньше аналогов вполне можно можно игнорировать и взять +1 один девайс про запас. Или гуглить отзывы и самостоятельно заказывать напрямик с али.

    В качестве МК можно взять что-то типа бюджетного Orange Pi PC / 3B Plus / Zero 3 на 2-4 Гб оперативной памяти. И SSD тогда в USB коробочке, если без M2 и Sata. Или чуть подороже Orange Pi 3B V2.1 По возможности лучше подключать кабелем к роутеру, но если он далеко — то выбирайте версию с WiFi. Есть с WiFi, есть без него. Если не бюджетно — Orange / Raspberry Pi 5 с M2 SSD.

    ОС — Armbian. При наличии встроенной eMMC — на неё устанавливается загрузчик, а сама ОС ставится на SSD. Если eMMC нету, а МК не умеет загружаться с SATA или M2 — то ставится маленькая MicroSD карта для загрузчика. В Armbian эта фича есть из коробки. В разных МК есть свои нюансы работы загрузчиков — где-то работает всё из коробки, где-то надо ковырять настройки, где-то — костыли ставить. Ну и дальше стандартно ставится туда HA.

    Зачем нужно управление в контроллере котом? Насосом?

    Можно и не делать — вручную котлом тоже вполне можно управлять. Но раз уж у вас будет умный дом — то удобнее и котёл с насосом туда завести, дабы тыкать кнопочки с телефона, а не идти в котельную.


    Также у меня возник вопрос - у меня в одной комнате 4 зоны теплого пола, т.е. 4 трубы идет. Могу ли я 4 сервопривода объединить к одной клемме и поставить один терморегулятор?

    Можно даже сразу один сервопривод поставить — в этом случае не нужно четыре. Но в этом случае потеряется смысл всех этих зон. Каждую зону лучше управлять отдельным устройством, а в HA можно настроить одну кнопку для всех для удобства.
    Ответ написан
    5 комментариев
  • Как сделать умное отопление водяного теплого пола?

    GavriKos
    @GavriKos
    Микропетпроджект - домашнее облако homeCloud
    Ищите в гугле, поддерживается ли то что вы выбрали HomeAssistant.

    Про WiFi - совершенно необязательно его, есть еще ZigBee, Bluetooth и все это отлично в умный дом ложится и даже я бы сказал популярнее вайфая будет.

    Также у меня возник вопрос - у меня в одной комнате 4 зоны теплого пола, т.е. 4 трубы идет. Могу ли я 4 сервопривода объединить к одной клемме и поставить один терморегулятор?

    Технически - да, если мощность позволяет. Практически - я бы делал 4 контроллера и объединял их на уровне софта.
    Ответ написан
    1 комментарий
  • Как понять что скрипт перестал работать после того как развернули браузер?

    alsolovyev
    @alsolovyev
    ¯\_(ツ)_/¯ Enjoy life, Eat well & Laugh often
    Я запутался в том, что хочу сделать.

    Одному вам известно, что у вас на уме

    но знаю что setTimeout работает криво,

    Современные браузеры снижают частоту таймеров, чтобы сэкономить ресурсы. Поэтому и "криво" работает как вам кажется. Аналогично "криво" будет работать любой требующий ресурсов код - WebSocker и тд.

    накапливается или вовсе перестает работать

    Это проблемы у вас в коде

    Как мне перезапускать скрипт после развертывания браузера телефона

    0. Вынесите реализацию подключения к websocket'у в отдельную функцию и проверяйте состояние соединения перед каждым действием:
    let socket;
    const url = "ws://your-websocket-server-url";
    
    function connect() {
      socket = new WebSocket(url);
      socket.onopen = () => {};
      socket.onmessage = (event) => {};
      socket.onerror = (error) => {};
      socket.onclose = (event) => {};
    }
    
    function reconnect() {
      if (socket && socket.readyState !== WebSocket.CLOSED) return;
      .....
    }
    
    function send(message) {
      if (socket && socket.readyState === WebSocket.OPEN) {
        socket.send(message);
        return
      }
      console.warn("WebSocket is not open. Message not sent:", message);
      ....
    }

    1. Отправляйте переодически ping сообщение для проверки состояния соединения. Если нет ответа, переподключаемся (и проверяем состояние соединения перед переподключением).
    2. Добавьте слушатель visibilitychange для отслеживания "развертывания" вкладки:
    document.addEventListener('visibilitychange', () => {
        // document.hidden
        if (document.visibilityState === 'visible' && websocket.readyState === WebSocket.CLOSED) {
            reconnect();
        }
    });


    ps забыл упомянуть про PushAPI если необходимо получать сообщения в фоновом режиме (94.65% на caniouse):
    API to allow messages to be pushed from a server to a browser, even when the site isn't focused or even open in the browser.
    Ответ написан
    1 комментарий
  • Как воспроизводить звук в PWA приложениях?

    @bqio
    https://bqio.github.io/
    Здравствуйте! Попробуйте запускать аудио после любого действия пользователя на странице. Например, клик по кнопке. Насколько я знаю обойти это ограничение нельзя. Подробнее почитайте здесь
    Ответ написан
    1 комментарий
  • Что делать с кодировкой тела сообщения imap_body?

    @iAlexCross Автор вопроса
    Получилось решить через imap. Не знаю, подойдет ли это для каждого, но для моей задачи ОК.

    $imap = imap_open("{imap.yandex.ru:993/imap/ssl}", "login", "password");
    
        $mails = imap_search($imap, 'ON "12-Dec-2020"', OP_READONLY); // ON "12-Dec-2020 - условие
    
        foreach($mails as $mail) {
            $structure = imap_fetchstructure($imap, $mail);
            if (isset($structure->parts[1])) {
                $part = $structure->parts[1];
                $message = imap_fetchbody($imap,$mail,1);
                if(strpos($message,"<html") !== false) {
                    $message = trim(utf8_encode(quoted_printable_decode($message)));
                }
                else if ($part->encoding == 3) {
                    $message = imap_base64($message);
                }
                else if($part->encoding == 2) {
                    $message = imap_binary($message);
                }
                else if($part->encoding == 1) {
                    $message = imap_8bit($message);
                }
                else {
                    $message = trim(utf8_encode(quoted_printable_decode(imap_qprint($message))));
                }
            }
            echo '<pre>';
            print_r($message);
            echo '</pre>';
        }
    Ответ написан
    Комментировать
  • Как правильно создать таблицу с исполнителями и их задачами?

    datka
    @datka
    642fa308bd114188872194.png
    Как вариант вот так. А потом можно всё отфильтровать.
    642fa328bbf05363978325.png
    Суммы выплат всегда будет работать по фильтру
    642fa34c80571033713861.png
    Так как используем формулу SUBTOTAL
    Ответ написан
    Комментировать
  • Как сделать подсказки в edittext как на картинке?

    kamadi
    @kamadi
    Это делается через AutoCompleteTextView
    https://habrahabr.ru/post/243853/

    Для того чтобы AutoCompleteTextView поднялся вверх

    <android.support.design.widget.TextInputLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        >
    
        <AutoCompleteTextView
            android:id="@+id/auto_text"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:enabled="false"
            android:hint="Текст"
    
            android:singleLine="true"/>
    
    </android.support.design.widget.TextInputLayout>
    Ответ написан
    2 комментария
  • Как продвигать сайт агрегатор еды?

    LoliDeveloper
    @LoliDeveloper
    Линейная алгебра как смысл жизни
    Если у вас правда хороший продукт, не пожалейте 5-10 тыс на рекламу, она окупится если уверены в спросе
    Ответ написан
    Комментировать
  • Какие есть реестры заблокированных доменов, IP адреса и где их посмотреть?

    DanArst
    @DanArst
    Гриффиндор в моде при любой погоде!
    Зачем вам реестр. Просто проверьте IP на наличие в спам базах с помощью любого из многих сервисов. Например: 2ip, mxtoolbox, ipvoid, Spamhaus
    Ответ написан
    Комментировать
  • Есть ли плавный скролл между якорями на чистом JS?

    SPAHI4
    @SPAHI4
    реактовцы - это не девы, а прокидыватели пропсов
    Комментировать
  • Есть ли плавный скролл между якорями на чистом JS?

    sfi0zy
    @sfi0zy Куратор тега JavaScript
    Creative frontend developer
    Для современных браузеров ничего придумывать не нужно, все и так уже есть.
    element.scrollIntoView({ behavior: 'smooth' })
    Для остальных можно временно заполифиллить.
    Ответ написан
    1 комментарий
  • Нужно ли использовать онлайн-кассу?

    @boss_lexa
    А от кого вы собрались принимать платежи через paypal? Зарубежные заказчики?

    Paypal для ИП/ООО из РФ разрешает принимать платежи только от физлиц, платежи от бизнес-акков не даст провести, физлицам можно от всех.

    Комиссии немало потеряете:
    3,9% стандартная комиссия + 1-2% доп комиссия за трансграничный платеж + 4-5% если будете принимать платежи в иностранной валюте, потеряете на ее конвертации в рубли

    Если есть другой вариант принимать платежи, то лучше его использовать - тотже пейонеер.

    Касса не нужна только если платежи приходят от юрлиц безналом, в остальных случаях всегда нужна
    (есть еще ряд бизнесов с отсрочкой)

    Касса + ФН на 36 месяцев = 15390 руб https://kassopttorg.ru/catalog/kkm/atol_91f_cherny...
    ОФД на 36 месяцев = 1999 руб https://e-ofd.ru/

    Чеки можно просто пробивать вручную, если продаж немного. В кассе вводите емейл/телефон и он отправляется покупателю
    Ответ написан
    Комментировать
  • Нужно ли использовать онлайн-кассу?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    начинай с налогового запроса
    в целом, если оплату по контракту и все такое - можно отвертеться

    https://its.1c.ru/db/answers#content:3269:hdoc

    если очень хочется быть спокойным - https://rocketr.ru/ тут выбирай из списка
    Ответ написан
    Комментировать
  • Нужно ли использовать онлайн-кассу?

    BlackDP
    @BlackDP
    Электронная коммерция, бизнес аудит.
    1) Да нужно, если принимаете платежи от ФЛ
    2) В зависимости от количества типов услуг (их необходимо бить поименно, если они типовые), посмотрите Меркурий 115Ф или его аналоги в этой ценовой категории. Если необходимо что то более серьезное то Атол 92Ф. В случае необходимости интеграции ККТ с сайтом, то это в 90% случаев аренда (OrangeData, Starrys.su, kassio.online и пр.)
    3) Если рассматривать автономку, то берите Меркурий, новый около 5000, б/у можно найти от 1500, плюс ФН 15/36 мес. Ваш вид деятельности позволяет использовать любую. Если надо что-то более серьезное и с интеграцией, то лучше аренда.
    Ответ написан
    2 комментария
  • Как сделать асинхронной загрузку виджета вконтакте?

    @Vor_tex
    Вот как используя документацию VK мне удалось реализовать асинхронную загрузку на примере виджета для группы:
    <script type="text/javascript">
      window.vkAsyncInit = function() {
        VK.init({
          apiId: ID_Вашего_Приложения,
          onlyWidgets: true
        });
        VK.Widgets.Group("vk_groups", {mode: 1, no_cover: 1, width: "250"},  ID_Вашей_Группы); //указывается ID группы лишь потому что это пример
      };
    
      setTimeout(function() {
        var el = document.createElement("script");
        el.type = "text/javascript";
        el.src = "https://vk.com/js/api/openapi.js?156";
        el.async = true;
        document.getElementById("vk_groups").appendChild(el);
      }, 0);
    </script>
    <!-- VK Widget -->
    <div id="vk_groups"></div>


    Где:
    ID_Вашего_Приложения - необходимо создать приложение тут и перейдя в настройки получить тот самый ИД (без него работать асинхронно не будет)

    ID_Вашей_Группы - цифровой ID вашей группы лично я смотрел тут
    Ответ написан
    Комментировать
  • Как управлять поведением RecyclerView?

    Это происходит потому, что ты пересоздаёшь адаптер каждый раз зачем-то. Тебе нужно добавлять новые элементы в уже существующий адаптер и вызвать метод RecyclerView.Adapter#notifyItemRangeInserted() или RecyclerView.Adapter#notifyDatasetChanged() после этого.

    Что по поводу перехода на позицию: RecyclerView#scrollToPosition()
    Ответ написан
    1 комментарий
  • Как оптимизировать MySQL? Повысить cache efficiency и уменьшить maximum possible memory usage?

    @neol
    join_buffer_size = 256M

    Это сильно много. Нормально будет 512K, ну может 1М.

    max_connections = 256, кол-во максимальный соединений я думаю можно спокойно уменьшать до 64, ведь по статистике за 9 дней больше 47 соединений не было.

    Верно.

    Есть ли какое-нибудь приложение которое сможет проанализировать лог и выдать самый популярный запрос в котором не используется INDEX.

    mysqldumpslow

    На данный момент query_cache_limit — максимальный размер кэшируемого запроса равен 256M.
    Получается что в моем случае это мало? Нужно увеличивать?

    Нет. Лучше наоборот уменьшить до 1-2М ( кешировать огромные выборки силами mysql не стоит ). А причину промахов стоит поискать в запросах. В документации есть список функций, запросы с которыми не кешируются.
    Ответ написан
    Комментировать
  • Как убрать 301 редирект?

    daager
    @daager
    Список страница известен? Можно отредиректить на нужную страницу с рэндомным get параметров. Тогда фактически это новая ссылка и кэш не сработает, ну или временно изменить ссылки на подобные материалы. Зависит от масштабов проблемы. Можно на уровне nginx менять ссылки в html.
    Ответ написан
    1 комментарий
  • Как завершить команду в exec() по таймеру?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Я вижу несколько вариантов:

    1. Разрабатывать скрипт таким образом, чтобы его не нужно было завершать таким драконовским методом
    2. Делать в скрипте fallback. Т.е. можно передавать скрипт дату старта и проверять, когда станет больше - отключить
    3. Сторонним скриптом, который будет контролировать запущенные скрипты и убивать
    Ответ написан
    1 комментарий