ГАЙД: Интеграция умной розетки Tuya (v3.5) в Klipper
Приветствую всех любителей не останавливаться на достигнутом и чтобы такое прикрутить еще в клиппере).
Кому не интересна данная тема, а также про то, что лучше взять да прикрутить реле и управлять через GPIO, то мог бы рассказать в свое оправдание много слов, но скажу лишь, мне так захотелось. Я вас не заставляю идти по моему пути, и уж тем более вытворять со своим дорогим одноплатником то, что делал я.
Приятного чтения!
Купил я с вайлдбериз умную розетку, выглядит она так:
Цена такого чуда в районе от 350р. и выше. И так, что надо сделать сделать:
1. Зарегистрироваться на сайте
https://myaccount.tuya.com/account
Далее переходим по кнопке

Вот здесь уже надо ввести свое.
Главное не забудьте в последнем пункте указать нужный дата-центр! Для России это вот эти. Выберите один из двух, который подходит именно вашей розетке:
Далее, после создания надо привязать свое устройство. Нужно приложение SmartLife. Есть в гугл плей. Здесь надо подготовить сканирование, заходите в приложение, Профиль. 
Возвращаемся на сайт:
Открываем созданный проект и переходим вооот сюда:
Открыв ее, сканируем
Далее, не отходя далеко, открываем тут и и оставляем пока что. Он нам далее понадобится.
2. Устанавливаем нужные компоненты на одноплатник. У меня это: Orange Pi Zero 2W2.1. Подготовка системы (Orange Pi)
2.1. Подготовка и получение ключей (Самый важный этап)
Для работы локального управления нам нужны Device ID, IP и Local Key.
Установка библиотек:
pip3 install tinytuya --upgrade
2.2. Получение ключей (Wizard):
Запустите мастер настройки. Он попросит API-ключи от вашего проекта в Tuya IoT Platform:
python3 -m tinytuya wizard
Вводите поочередно:
Айпи берете в роуте, найдете в разделе подключенных устройств
Если с первыми двумя проблем не было, то чтобы третий получить надо перейти сюда:
Далее в появившемся окне вводим айди своего устройства (самый первый который получили) и получаем локал кей
Где зачеркнуто, там все будет ваше.
После завершения скрипт создаст файл devices.json со всеми вашими ключами.
2.3. Установка расширения Shell Command (Если надо, нет, пропускаем)
1: Запустите KIAUH: ./kiauh/kiauh.sh
2: Перейдите в раздел E) [Extensions] (Дополнения).
3: Найдите в списке и выберите пункт G-Code Shell Command.
4: После установки подтвердите перезагрузку Klipper.
2.4. Создание скриптов управления
Создаем папку и файлы. Для протокола 3.5 обязательно вызываем d.status() для инициализации сессии.
mkdir -p ~/tinytuya
nano ~/tinytuya/on.py
Файл on.py:
iimport tinytuya
# Используем автоматическую инициализацию версии 3.5
d = tinytuya.OutletDevice(''ID_ВАШЕГО_УСТРОЙСТВА', '192.168.31.246', 'ВАШ_LOCAL_KEY')
Файл off.py (аналогично, с командой d.turn_off()).
Даем права на запуск:
chmod +x ~/tinytuya/*.py
2.5. Настройка Klipper (printer.cfg)
# 1. Описание самой команды (связь с Python)
[gcode_shell_command socket_on_cmd]
command: python3 /home/ender3s1/tinytuya/on.py
timeout: 5.0
verbose: True
[gcode_shell_command socket_off_cmd]
command: python3 /home/ender3s1/tinytuya/off.py
timeout: 5.0
verbose: True
# 2. Кнопки-макросы (которые вы видите в интерфейсе)
[gcode_macro SOCKET_ON]
gcode:
RUN_SHELL_COMMAND CMD=socket_on_cmd
[gcode_macro SOCKET_OFF]
gcode:
RUN_SHELL_COMMAND CMD=socket_off_cmd
[gcode_shell_command socket_on]
command: python3 /home/ender3s1/tinytuya/on.py
timeout: 5.0
verbose: True
[gcode_shell_command socket_off]
command: python3 /home/ender3s1/tinytuya/off.py
timeout: 5.0
verbose: True
[gcode_macro SMART_SOCKET_ON]
gcode:
RUN_SHELL_COMMAND CMD=socket_on
[gcode_macro SMART_SOCKET_OFF]
gcode:
RUN_SHELL_COMMAND CMD=socket_off
[gcode_macro GCODE_CONNECTED]
description: Автоматический перезапуск Klipper при восстановлении питания
gcode:
# Эта команда автоматически выполняется при успешном подключении к MCU
FIRMWARE_RESTART
[gcode_macro PAUSE]
rename_existing: BASE_PAUSE
gcode:
SAVE_GCODE_STATE NAME=PAUSE_state
BASE_PAUSE
G91
G1 E-2 F2700 ; Ретракт
G1 Z10 F3000 ; Подъем сопла
G90
G1 X10 Y10 F6000 ; Увод головы в угол
SET_IDLE_TIMEOUT TIMEOUT=3600
[gcode_macro RESUME]
rename_existing: BASE_RESUME
gcode:
G91
G1 E2 F2700 ; Возврат пластика
G90
RESTORE_GCODE_STATE NAME=PAUSE_state MOVE=1
BASE_RESUME
[gcode_macro END_PRINT]
gcode:
# 1. Отвод сопла и ретракт
G91 ; Относительные координаты
G1 E-2 F2700
G1 Z10 F3000
# 2. Презентация модели
G90 ; Абсолютные координаты
G1 X0 Y220 F3000 ; Проверьте, что Y220 подходит для вашего стола!
# 3. Выключение систем
M104 S0
M140 S0
M106 S0
M84
# 4. Сообщение, задержка и выключение
M117 Печать завершена!
G4 P60000 ; Добавлена задержка 60 секунд (60000 миллисекунд)
SOCKET_OFF ; Добавлен вызов вашего макроса выключенияЭту часть можно полностью скопировать и вставить в printer.cfg Также не стоит забывать, что можно и свои хотелки реализовать, например в изменении задержки перед выключением и тд.На этом с все. Буду рад, если выскажете свои дельные мысли, что можно улучшить, добавить и так далее)
Еще больше интересных статей
Итоги 2025 года Volgobot
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
PETG и высокая скорость: я пожалел, что попробовал
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Постобработки пост. Делаем из ABS грунт-порозаполнитель.
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Если эксперимент удался, значит что-то здесь не...




Комментарии и вопросы
Хранительствуеш?) жму руку!А n...
А, все понял, у FB тоже есть S...
какой еще призрак 6?этот что л...
Хай, товарищи! Очень нужна ваш...
Добрый день! Помогите новичку,...
Добрый день! Помогите новичку,...
Принтер Марс 5. Печатаю мелкие...