Предложение к avito
тут принято жаловаться на @Avito, а у меня предложение - почему бы в объявлении не писать у продавца из другого региона сколько у него сейчас времени, ну там часовые пояса, чтобы не искать самому
тут принято жаловаться на @Avito, а у меня предложение - почему бы в объявлении не писать у продавца из другого региона сколько у него сейчас времени, ну там часовые пояса, чтобы не искать самому
Купил тут аэрогриль DEXP DAF-1555D и обнаружил, что там есть wi-fi, чего я не ожидал. Ну а раз есть вайфай, значит можно попробовать что-то автоматизировать.
Расскажу немного про сам гриль и саму покупку. Изначально хотел максимально универсальное устройство, заменить микроволновку, духовку и сушилку. Объем чаши не меньше 7 литров, мощность не менее 1800 вт, желательно 2 тэна. никаких вайфаев и прочих свистелок. На маркетплейсах выбор большой, но хотелось посмотреть вживую, насколько он удобен и вообще.. Поехал в днс, предварительно выбрав Dreame Trouver AirFryer FD10 Pro, от суббренда сяоми. По приезду посмотрел - вроде норм, но не понравился верхний тэн(вроде галоген), и размер чаши. Рядом увидел DEXP с длинной чашей, куда должна убраться рыба целиком, да и такой формфактор мне лучше подходит, так как мало места на столешнице. Это перевесило недостатки характеристик, а вайфай вообще обнаружил только дома. Управление грилем очень тупое, со всеми этими программами нет простой вещи - напрямую выставить время и температуру. Через приложение(HouseLf) тоже нельзя или я не нашел.
Ну и дальше полез искать решение. В принципе само устройство наверняка управляется какой-нибудь esp32 или 8266. Плюс датчик температуры и силовое реле. Теоретически можно было разобрать и посмотреть, но жалко, да и сломаю наверняка). Можно было попробовать перехватить трафик и посмотреть что оно и куда отправляет, но сложно и лень. В процессе нейронки подсказали, что эта байда работает на tuya и действительно, установив приложение tuya smart life удалось привязать гриль туда. Сами приложения(туя и родное) практически идентичны. Скорее всего многие китайские устройства так могут. Возможно получится подключить Kitfort, centek, supra.
Дальше покажу как можно в приложении tuya создать ярлыки для быстрого запуска своих программ. Для чего это нужно? Например для моего гриля минимальная температура заявлена 70 градусов и ее можно выставить не в каждом режиме, а для сушки джерков даже 70 много. Еще в приложении есть рецепты, но запустить программу из рецепта простым нажатием нельзя, что очень глупо. Так же можно создавать программы из нескольких шагов, например для приготовления картофеля по-деревенски - сначала запекаем при низкой температуре, потом добавляем корочку и так далее.
В приложении туя заходим в умный режим --- мгновенные сценарии --- плюс --- создать сценарий.
далее --- коснитесь для запуска --- плюс
нажимаем плюс и выбираем условия
и вот здесь можно выбрать температуру ниже, чем предлагает производитель. В режиме, кмк, можно выбрать что-то другое. После создания задачи нужно переместить пункты в порядке, как на предыдущем скрине(зажав и перетащив), чтобы старт был в конце. Даем название рецепту и получаем нормальный режим со своими настройками.
Еще можно использовать вкладку автоматизация для создания рецептов из нескольких шагов.
На вкладке автоматизация нажимаем создать сценарий, выбираем "при изменении статуса устройства", выбираем устройство и условия
то есть когда до конца первой программы останется 10 мин(лучще установить 2 мин или 1) то включится следующая программа которую выберешь далее.
нажимаем плюс "тогда" и выбираем "умные сценарии"
и выбираем тот сценарий который должен запуститься вторым щагом. Первый шаг нужно будет запустить самому.
Написал много, но может кому понадобится
попросил deepseek написать код для расширения chrome, которое будет автоматически переключать видео на ютуб в полный экран после 10 секунд бездействия пользователя и обратно если пошевелить мышкой. сам я не программист ни разу, поэтому путь был долог и тернист. усугубляло ситуацию периодическое "сервер занят".
сначала не получалось вообще ничего, похоже гугл заблокировал автоматическое переключение в полный экран, а deepseek самостоятельно не смог придумать пути обхода или костыли. тут уже я нашел в интернете решение - автоматически можно открывать не во весь экран, но во все окно. ну хотя бы так. ниже приведу код манускрипта манифеста и скрипт.
создайте файлы manifest.json и content.js в одной папке, вставьте в них соответствующий код
Перейдите в Chrome → chrome://extensions.
Включите "Режим разработчика".
Нажмите "Загрузить распакованное расширение" и выберите папку.
{
"manifest_version": 3,
"name": "YouTube Auto Embed",
"version": "1.4",
"description": "Умное переключение режимов с учетом паузы",
"permissions": ["storage"],
"content_scripts": [
{
"matches": [
"*://*.youtube.com/watch?v=*",
"*://*.youtube.com/embed/*"
],
"js": ["content.js"],
"run_at": "document_idle"
}
]
}
(function() {
const isWatchPage = window.location.href.includes('/watch?v=');
const isEmbedPage = window.location.href.includes('/embed/');
if (!isWatchPage && !isEmbedPage) return;
let timeoutId;
let currentVideoTime = 0;
let videoElement;
let isPaused = false;
// Общие функции
function getVideoElement() {
return document.querySelector('video');
}
function storeCurrentTime() {
if (videoElement) {
currentVideoTime = Math.floor(videoElement.currentTime);
sessionStorage.setItem('ytAutoEmbedTime', currentVideoTime);
}
}
function handleUserActivity() {
clearTimeout(timeoutId);
if (isEmbedPage) return;
if (isWatchPage && !isPaused) {
timeoutId = setTimeout(switchToEmbed, 10000);
}
}
// Для watch-страницы
if (isWatchPage) {
videoElement = getVideoElement();
if (videoElement) {
videoElement.addEventListener('play', () => {
isPaused = false;
handleUserActivity();
});
videoElement.addEventListener('pause', () => {
isPaused = true;
clearTimeout(timeoutId);
});
}
function switchToEmbed() {
if (isPaused) return;
storeCurrentTime();
const videoId = new URLSearchParams(window.location.search).get('v');
const embedUrl = `https://www.youtube.com/embed/${videoId}?autoplay=1&star...}`;
window.location.replace(embedUrl);
}
if (!isPaused) timeoutId = setTimeout(switchToEmbed, 10000);
}
// Для embed-страницы
if (isEmbedPage) {
videoElement = getVideoElement();
const storedTime = sessionStorage.getItem('ytAutoEmbedTime') || 0;
if (videoElement) {
videoElement.addEventListener('loadedmetadata', () => {
videoElement.currentTime = storedTime;
});
}
function switchToNormal() {
storeCurrentTime();
const videoId = window.location.pathname.split('/')[2];
const normalUrl = `https://www.youtube.com/watch?v=%24%7BvideoId%7D&t=%24%7...`;
window.location.replace(normalUrl);
}
const events = ['mousemove', 'keydown', 'mousedown', 'touchstart'];
events.forEach(event => {
window.addEventListener(event, () => {
if (!isPaused) switchToNormal();
});
});
if (videoElement) {
videoElement.addEventListener('play', () => {
isPaused = false;
sessionStorage.setItem('ytAutoEmbedPaused', 'false');
});
videoElement.addEventListener('pause', () => {
isPaused = true;
sessionStorage.setItem('ytAutoEmbedPaused', 'true');
});
}
}
const activityEvents = ['mousemove', 'keydown', 'scroll', 'mousedown', 'touchstart'];
activityEvents.forEach(event => {
window.addEventListener(event, handleUserActivity);
});
console.log('Extension initialized in', isWatchPage ? 'normal' : 'embed', 'mode');
})();
если кто понимает, что тут написано, можете прокомментировать по качеству





Вялил мясо, рецепт проверенный. Нитритная соль, все как надо, может чуть меньше чем по рецепту. В прошлый раз сушилось не так долго и плесени не было. В этот раз решил посушить подольше, ел прям с ветки, и на одном из последних кусков обнаружил плесень. Вроде как при таком способе приготовления(в специальном пакете для вяления) допускается образование плесени, но та ли образовалась у меня?
сфоткал поближе, может есть знатоки, помогите, можно ли есть? я, правда, уже килограмм съел, особо не приглядываясь, мож что пропустил раньше)
Прислал тут сбермегамаркет промокод на 1000р на 95% оплаты, я обычно на озоне все заказываю, но от халявы отказываться не собираюсь. Заказал 2 банки пулек для пневматики по 564р. В посылке была только одна. После создания обращения, через 2 дня, вернули 64р и промокод на 200р на 50% оплаты.
Вопрос - на сколько меня наебали и наебали ли вообще?
что скажете по видео? я станок только купил, до этого с фрезером не работал.
купил тут такой вот станочек, там стоит шпиндель на 120вт, подключен к разъему на картинке
в момент резки мотор встал, обломило фрезу. при подаче напряжения на мотор напрямую он работает. предохранитель на плате цел. все оси нормально работают. подскажите что и как проверить чтобы понять что вышло из строя?
еще хочу поменять шпиндель на другой
как считаете на плате есть выход на замыкание для внешнего питания?
и еще, для замены мотора надо ставить другую каретку и ходовой винт, который у меня есть 4х заходный в отличии от родного(2х). соответственно перемещение на оборот будет больше, я могу как-то это компенсировать? наверное можно в программе ставить величину съема материала в 2 раза меньше, а еще варианты есть?