Скрипт для управления термостатом Termex Topic is solved
Скрипт для управления термостатом Termex Topic is solved
Помогите с написанием скрипта для управления М12М (Блок регулирования температуры).
К сожалению штатным образом нельзя уменьшить скорость нагрева/охлаждения и придется вводить команду в консоль фирменного ПО (у нас версия только с портом USB).
Необходимо вводить команду ":00012178 SET.VAL WR Temp", где Temp - десятичное число с 2 знаками после запятой, например 60.00. При этом, требуется увеличивать число Temp на 0.01 каждый час и вводить команду в консоль. То есть начальная температура например 5.00, через час 5.01, через еще час 5.02...
К сожалению штатным образом нельзя уменьшить скорость нагрева/охлаждения и придется вводить команду в консоль фирменного ПО (у нас версия только с портом USB).
Необходимо вводить команду ":00012178 SET.VAL WR Temp", где Temp - десятичное число с 2 знаками после запятой, например 60.00. При этом, требуется увеличивать число Temp на 0.01 каждый час и вводить команду в консоль. То есть начальная температура например 5.00, через час 5.01, через еще час 5.02...
Re: Скрипт для управления термостатом Termex
Звучит столь же абсурдно, сколь изобретательно.fizhimikRUS wrote: ↑ Помогите с написанием скрипта для управления М12М (Блок регулирования температуры).
К сожалению штатным образом нельзя уменьшить скорость нагрева/охлаждения и придется вводить команду в консоль фирменного ПО (у нас версия только с портом USB).
Необходимо вводить команду ":00012178 SET.VAL WR Temp", где Temp - десятичное число с 2 знаками после запятой, например 60.00. При этом, требуется увеличивать число Temp на 0.01 каждый час и вводить команду в консоль. То есть начальная температура например 5.00, через час 5.01, через еще час 5.02...
Примерный код под AHK.v1/v2 (отличия незначительные). Запускается сочетанием Ctrl+F12. Останавливается через Shift+F12.
Предельную температуру, вероятно, можно установить через SET.MAX заранее, но пусть будет и в коде.
Если в консоль попадают не все символы, придётся поиграться с SendMode/SetKeyDelay.
Гарантий работоспособности, понятное дело, дать не могу.
AHK.v1
AHK.v2
Re: Скрипт для управления термостатом Termex
Спасибо большое! Все прекрасно работает!
Теперь встает вопрос: можно ли привязать скрипт непосредственно к программе MasterGraph.exe от Термекса, чтобы можно было параллельно работать за компом? Или ставить виртуалку, (пробрасывать порт?) и запускать прогу+скрипт там и пущай крутится там 5 суток по плану?
Spoiler
"Звучит столь же абсурдно, сколь изобретательно." - а кто же знал что ограничение снизу по охлаждению/нагреву 0.01 град/мин? При уменьшении скорости - термостат сразу выходит на конечную температуру. И при заказе термостата я решил не парится с управлением по RS485/232 и сказал брать термостат без доп. интерфейсов, типа все на блоке управления настраивается с минимум телодвижений.Теперь встает вопрос: можно ли привязать скрипт непосредственно к программе MasterGraph.exe от Термекса, чтобы можно было параллельно работать за компом? Или ставить виртуалку, (пробрасывать порт?) и запускать прогу+скрипт там и пущай крутится там 5 суток по плану?
Re: Скрипт для управления термостатом Termex
Можно попробовать отсылать команды через ControlSend, найдя идентификатор консоли через Window Spy (этот скрипт идёт в комплекте с AHK, можно запустить через меню иконки в трее). Если с консолью не получится, может, выйдет автоматизировать через поле „Температуры“ (ControlSetText) и кнопку „Изменить“ (ControlClick).
Re: Скрипт для управления термостатом Termex
Спасибо, попробую.mcl wrote: ↑15 May 2023, 11:58Можно попробовать отсылать команды через ControlSend, найдя идентификатор консоли через Window Spy (этот скрипт идёт в комплекте с AHK, можно запустить через меню иконки в трее). Если с консолью не получится, может, выйдет автоматизировать через поле „Температуры“ (ControlSetText) и кнопку „Изменить“ (ControlClick).
Еще вопрос: а можно из консоли фирменного ПО прочитать ответ от прибора? Прибор не всегда записывает команды = нет ответа от него. Хочется сделать все по красоте, чтобы был повторный посыл команды в случае ошибки.
Re: Скрипт для управления термостатом Termex
Предположительно, через тот же класс (идентификатор) консоли и ControlGetText.
Re: Скрипт для управления термостатом Termex
Спасибо! Подскажите как должна выглядеть правильно команда для ControlSendText, а то все скрипт ругается, а что не пойму. По примеру на страничке гайда не смог разобраться.
Re: Скрипт для управления термостатом Termex
Code: Select all
; F1 - демонстрация ControlGetText/ControlSend
F1::
DetectHiddenWindows On
If Not WinExist("ahk_exe calc.exe") {
Run, calc.exe
WinWaitActive, ahk_exe calc.exe
}
ControlGetText, myVar, Static4, ahk_exe calc.exe
MsgBox, %myVar%
ControlSend, Static4, 1234, ahk_exe calc.exe
Sleep 100
ControlGetText, myVar, Static4, ahk_exe calc.exe
MsgBox, %myVar%
Return
- Attachments
-
- calcstatic4.png (55.26 KiB) Viewed 1671 times
Re: Скрипт для управления термостатом Termex
К сожалению, не смог ваш пример воспроизвести. Что я делаю не так? Видимо затык в ClassNN? Для моего калькулятора он ApplicationFrameInputSinkWindow1 по любому полю а не Static4 как у вас.
Если пробовать notepad.exe то работает.
Если пробовать notepad.exe то работает.
Spoiler
Re: Скрипт для управления термостатом Termex
Видимо консоль выцепить не получится.
Как тогда можно сделать через -- "Если с консолью не получится, может, выйдет автоматизировать через поле „Температуры“ (ControlSetText) и кнопку „Изменить“ (ControlClick)."?
Через ControlSetText что то через раз получается, но не понимаю как. Кнопка "Изменить" то же определяется
Spoiler
Хотя поле ввода уставки отображается в Window Spy нормально и читается.Как тогда можно сделать через -- "Если с консолью не получится, может, выйдет автоматизировать через поле „Температуры“ (ControlSetText) и кнопку „Изменить“ (ControlClick)."?
Через ControlSetText что то через раз получается, но не понимаю как. Кнопка "Изменить" то же определяется
Spoiler
И почему то ваш код требует AutoHotkey 1.1Re: Скрипт для управления термостатом Termex
Ваш калькулятор написан с применением новейших технологий, на которые AHK не рассчитан. Способы есть, но они зело мудрёны.
На скринах не увидел, почему не получится. Класс есть, но текст не извлекается?Видимо, консоль выцепить не получится.
В смысле, через раз? Можете показать ваш код?Через ControlSetText что-то через раз получается, но не понимаю как.
ControlSetText и ControlSend — две разные команды. Первая просто меняет текст в контроле (на это программа может не реагировать), вторая посылает в контрол нажатия клавиш.
Потому что AHK.v1 в разы более распространён, и в нём и у меня, и у сообщества больше опыта, а AHK.v2 только в прошлом году вышел из беты — пока не слишком уверенно на нём пишу. Ну и в вашей постановке задачи про версию ничего не было сказано.И почему-то ваш код требует AutoHotkey 1.1
Re: Скрипт для управления термостатом Termex
Да, класс одинаков для двух вкладок в программе, плюс обратил внимание, что Windows Spy читает только самую верхнюю строчкуНа скринах не увидел, почему не получится. Класс есть, но текст не извлекается?
Spoiler
Да это не код, а обрезок вашего для баловства, в нем только командаВ смысле, через раз? Можете показать ваш код?
ControlSetText, TLabeledEdit1, 17, ahk_exe MasterGraph.exe
Вставляется цифра 17, но только если курсор установлен в поле Уставка.
Да я просто подвис в какую сторону нужно работать, вставлять в поле значение а затем нажимать изменить? Мозг кипит уже, прокатит так или нет. Хотелось что бы прокатило, может таким образом блок управления будет адекватно работать.ControlSetText и ControlSend — две разные команды. Первая просто меняет текст в контроле (на это программа может не реагировать), вторая посылает в контрол нажатия клавиш.
Сейчас блок управляется через консольную команду в виртуалке по вашему самому первому коду, но к сожалению блок управления бывает подвисает на 30 минут и не отвечает на консольную команду, но главное что команды в консоль пишутся.
По сути пока все работает как то, но хочется повыпендриваться. Но познаний не хватает. Если что вот скрин с кодом кнопки изменить.
Spoiler
Это не претензия, это я сам не понял почему скрипт попросил установить версию 1.1Потому что AHK.v1 в разы более распространён, и в нём и у меня, и у сообщества больше опыта, а AHK.v2 только в прошлом году вышел из беты — пока не слишком уверенно на нём пишу. Ну и в вашей постановке задачи про версию ничего не было сказано.
Re: Скрипт для управления термостатом Termex
Увы, удалённо такие вещи решать — только головную боль множить. „Прокатит или нет“ можно узнать только через эксперименты in vivo.fizhimik wrote: ↑Да, класс одинаков для двух вкладок в программе, плюс обратил внимание, что Windows Spy читает только самую верхнюю строчку.
ControlSetText, TLabeledEdit1, 17, ahk_exe MasterGraph.exe
Вставляется цифра 17, но только если курсор установлен в поле Уставка.
Да я просто подвис в какую сторону нужно работать, вставлять в поле значение а затем нажимать изменить? Мозг кипит уже, прокатит так или нет.
Window Spy читает одну строку только чтобы показать, что что-то всё-таки можно прочесть. То, что классы одинаковые, наверное, некритично, если есть возможность оставить открытой вкладку с консолью. Экспериментируйте с ControlGetText / ControlSend.
Только определитесь с версией AHK, там синтаксис и поведение хоть и похожи, но всё же не одинаковы.
Code: Select all
ControlSetText, Control, NewText, WinTitle ; AHK.v1
ControlSetText "Text", "Control", WinTitle ; AHK.v2