') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })(); GitHub - askkostya/RemoteSwitch: Управление тепловым шкафом LG · GitHub
Skip to content

Latest commit

History

49 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Инструкция по установке RemoteSwitch

1. Начало работ. Введение

Данное устройство позволяет управлять (замыкать) любые кнопки с помощью программы Blynk, не теряя при этом функциональность аппаратных кнопок, ими по-прежнему можно пользоваться. Можно коммутировать цепи с постоянным током, но поскольку предназначалось в первую очередь для теплового шкафа LG – имеет определенную специфику.

Для работы используется контроллер ESP32 который подключается к сети WIFI. Для полноценного использования необходимо в том месте где вы подключаете устройство иметь подключение к интернет. RS- выступает в качестве клиента WIFI

2. Установка и настройка программы Blynk.

Установите на телефон или планшет программу

В GooglePlay - https://play.google.com/store/apps/details?id=cc.blynk&hl=ru

В AppStore - https://apps.apple.com/ru/app/blynk-iot-for-arduino-esp32/id808760481

Image alt

Подробнее про установку приложения на телефон или планшет можно посмотреть тут https://docs.blynk.cc/#downloads-blynk-apps-for-ios-or-android

Настройка интерфейса программы

1

Элемент - Gauge
Input-V4


2Элемент Gauge
Input - V5
Refresh Rate - 30 sec
3Элемент - Styled Button
Output - V1
Mode - Switch
4

Элемент - Styled Button
Output - V10
Mode - Switch
OFF LABEL ВЫКЛ
ON LABEL ВКЛ

5

Элемент - Styled Button
Output - V2
Mode - Switch

6Элемент - Styled Button
Output - V0
Mode - Switch
7Элемент - Segment Switch
Output - V3
1 - Нагрев
2 - Вентилятор 

3. Настройка контроллера

Перевести выключатель на плате в положение ON и включить устройство. Через некоторое время на телефоне должна появиться новая беспроводная сеть. Имя сети MAC-адрес устройства. Пароль по умолчанию 12345678

Подключитесь к беспроводной сети и в браузере наберите адрес http://192.168.4.1

Коррекция температуры - показания термометра DHT22 могут отличаться от показаний термометра в шкафу. Для более точных (одинаковых) показателей необходимо указать значение на которое необходимо скорректировать температуру. Для отрицательного значения ставим минус, для положительного только число.

Например:
2 - будет добавлено к значению с термометра

-2 отнять два градуса от значения с термометра

Температура при включении - стартовая температура до которой идет нагрев при включении шкафа

Максимальная температура - максимально возможная температура поддерживаемая шкафом.

После сохранения настроек отключите питание и переведите джампер в положение OFF

Устройство готово к работе

4. Использованные детали

ESP32 DevKit 1 (30 ног) Микросхема MC14490FL DHT22 – модуль температуры и влажности

5. Монтажная плата

Для печати шаблона для изготовления печатной платы доступна бесплатная версия ПО Sprint-Layout http://www.abacom-online.de/updates/Sprint-Layout60_Viewer.exe

About

Управление тепловым шкафом LG

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages