[Модуль] Tuya

Разработка дополнительных модулей, подключение различных приложений.

Модератор: immortal

Аватара пользователя
xor
Сообщения: 2039
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 286 раз
Поблагодарили: 629 раз

Re: [Модуль] Tuya

Сообщение xor » Вт дек 26, 2023 2:24 pm

fandaymon писал(а):
Вт дек 26, 2023 4:21 am
С привязками я особо не разбирался - когда собирал модуль просто взял всё что касается прилинкованных свойств из какого-то модуля (ксяоми кажется), так что всё работает как работало там. Деинсталляция имеется в виду деинсталляция модуля?
Вот так у автора, например, сделано в деинсталляции. наверное, это хороший тон - убрать за собой)

Код: Выделить всё

     * Module uninstall routine
     *
     * @access public
     */
    function uninstall()
    {
        SQLExec('DROP TABLE IF EXISTS yastations');
        SQLExec('DROP TABLE IF EXISTS yadevices');

        //Отвяжемся от свойств
        $req = SQLSelect("SELECT * FROM yadevices_capabilities WHERE LINKED_OBJECT != '' AND LINKED_PROPERTY != ''");

        foreach ($req as $prop) {
            removeLinkedProperty($prop['LINKED_OBJECT'], $prop['LINKED_PROPERTY'], $this->name);
        }

        SQLExec('DROP TABLE IF EXISTS yadevices_capabilities');
        parent::uninstall();
    }
и вот это removeLinkedProperty($prop['prev_LINKED_OBJECT'], $prop['prev_LINKED_PROPERTY'], $this->name); рассыпано по коду, где меняется привязка - удаляем привязанное ранее, а потом новое добавляем. ну, или метрику просто удаляем с привязкой
Аватара пользователя
samolet
Сообщения: 472
Зарегистрирован: Чт июн 29, 2017 10:29 am
Благодарил (а): 46 раз
Поблагодарили: 45 раз

Re: [Модуль] Tuya

Сообщение samolet » Вт дек 26, 2023 4:23 pm

Всем здравия, подскажите пожалуйста друзья, прикупил себе WIFI счетчик TUYA, дело в том что у меня стоит двухтарифный счетчик а туя однотарифый, подскажите пожалуйста код для вывода информации на два тарифа по времени. Как разделить киловаты по определнным часам в мажордоме?
fandaymon
Сообщения: 1554
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

Re: [Модуль] Tuya

Сообщение fandaymon » Вт дек 26, 2023 4:42 pm

xor писал(а):
Вт дек 26, 2023 2:24 pm

и вот это removeLinkedProperty($prop['prev_LINKED_OBJECT'], $prop['prev_LINKED_PROPERTY'], $this->name); рассыпано по коду, где меняется привязка - удаляем привязанное ранее, а потом новое добавляем. ну, или метрику просто удаляем с привязкой
removeLinkedProperty вроде бы в коде есть

дропы в uninstall модуля вроде бы тоже есть... removeLinkedProperty в uninstall добавлю
За это сообщение автора fandaymon поблагодарил:
xor (Вт дек 26, 2023 5:12 pm)
Рейтинг: 1.16%
Аватара пользователя
xor
Сообщения: 2039
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 286 раз
Поблагодарили: 629 раз

Re: [Модуль] Tuya

Сообщение xor » Вт дек 26, 2023 5:23 pm

samolet писал(а):
Вт дек 26, 2023 4:23 pm
Всем здравия, подскажите пожалуйста друзья, прикупил себе WIFI счетчик TUYA, дело в том что у меня стоит двухтарифный счетчик а туя однотарифый, подскажите пожалуйста код для вывода информации на два тарифа по времени. Как разделить киловаты по определнным часам в мажордоме?
арифметически это выглядит так - считать дельту между было и стало, например, по часам, и эту дельту класть в разные свойства-накопители в зависимости от времени. если дельта с 22 до 23, то в дневной, а если с 23 до 0 - в ночной, и т.д.
Аватара пользователя
samolet
Сообщения: 472
Зарегистрирован: Чт июн 29, 2017 10:29 am
Благодарил (а): 46 раз
Поблагодарили: 45 раз

Re: [Модуль] Tuya

Сообщение samolet » Вт дек 26, 2023 5:50 pm

а как это в коде отразить я не совсем понимаю, можете приблизительно код написать дальше я уже сам как то, спасибо. Или може пример какой то имется на основе вычислений по времени?
Аватара пользователя
xor
Сообщения: 2039
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 286 раз
Поблагодарили: 629 раз

Re: [Модуль] Tuya

Сообщение xor » Вт дек 26, 2023 6:15 pm

samolet писал(а):
Вт дек 26, 2023 5:50 pm
а как это в коде отразить я не совсем понимаю, можете приблизительно код написать дальше я уже сам как то, спасибо. Или може пример какой то имется на основе вычислений по времени?
это уж как-то совсем не по теме топика
смотрите https://kb.mjdm.ru/vstroennie-v-majordomo-funkcii/ Время/интервалы
наверное, вам вот это надо для определения тарифа
timeBetween('23:00', '07:00') -- проверяет входит ли текущее время в заданный интервал (каждое hh:mm, причем $tm1 может быть больше чем $tm2, например 23:00 05:00)
ps. гляньте \modules\devices\SCounters_valueWorkUpdated.php вроде, там то, что вам надо, правда, закомменченное)
За это сообщение автора xor поблагодарил:
samolet (Ср дек 27, 2023 10:25 pm)
Рейтинг: 1.16%
Аватара пользователя
samolet
Сообщения: 472
Зарегистрирован: Чт июн 29, 2017 10:29 am
Благодарил (а): 46 раз
Поблагодарили: 45 раз

Re: [Модуль] Tuya

Сообщение samolet » Вт дек 26, 2023 10:11 pm

Сделал так, содал в модуле CRON опрос каждую минуту
$vat = gg('Vattg.status'); // читаем и записываем в переменную показания нового счетчика
$vatn = gg('Vattn.status'); // читаем и записываем в переменную показания ночного тарифа счетчика
$vatm = gg('Vattm.status');// читаем и записываем в переменную показания суммы старого и нового счетчика
$vatd = gg('Vattd.status');//читаем и записываем в переменную показания дневного счетчика
$vatm = $vat+376545;
sg("Vattm.status",$vatm);
if (timeBetween("07:00", "23:00")) {



$vatd = $vatm - $vatn;
sg("Vattd.status",$vatd);

}
if (timeBetween("23:00", "07:00")) {



$vatn = $vatm - $vatd;
sg("Vattn.status",$vatn);

}
Аватара пользователя
xor
Сообщения: 2039
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 286 раз
Поблагодарили: 629 раз

Re: [Модуль] Tuya

Сообщение xor » Ср дек 27, 2023 4:01 pm

samolet писал(а):
Вт дек 26, 2023 10:11 pm
Сделал так, содал в модуле CRON опрос каждую минуту
$vat = gg('Vattg.status'); // читаем и записываем в переменную показания нового счетчика
$vatn = gg('Vattn.status'); // читаем и записываем в переменную показания ночного тарифа счетчика
$vatm = gg('Vattm.status');// читаем и записываем в переменную показания суммы старого и нового счетчика
$vatd = gg('Vattd.status');//читаем и записываем в переменную показания дневного счетчика
$vatm = $vat+376545;
sg("Vattm.status",$vatm);
if (timeBetween("07:00", "23:00")) {



$vatd = $vatm - $vatn;
sg("Vattd.status",$vatd);

}
if (timeBetween("23:00", "07:00")) {



$vatn = $vatm - $vatd;
sg("Vattn.status",$vatn);

}
на границах в 7 и 23 не в обоих интервалах учитывается?
Аватара пользователя
samolet
Сообщения: 472
Зарегистрирован: Чт июн 29, 2017 10:29 am
Благодарил (а): 46 раз
Поблагодарили: 45 раз

Re: [Модуль] Tuya

Сообщение samolet » Ср дек 27, 2023 10:14 pm

Все учитывается как положено
код еще сократил
пока все норм
очень полезная функция timeBetween большое спасибо XOR за подсказку.


$vat = gg('Vattg.status'); // читаем и записываем в переменную показания нового счетчика
$vatn = gg('Vattn.status'); // читаем и записываем в переменную показания ночного тарифа счетчика
$vatd = gg('Vattd.status'); //читаем и записываем в переменную показания дневного тарифа счетчика
$vatm = $vat+376545;// 376545 это показания общие старого счетчика, от него и идет сложение с новым сетчиком.
//Vattn.status в этот обьект статус, днем записал параметры со старого счетчика ночные показания, у меня были такие 124654, так как он не изменяется до 23.00 отнего и показывает дневной тариф через вычитание
sg("Vattm.status",$vatm);
if (timeBetween("07:00", "23:00")) {
$vatd = $vatm - $vatn;
sg("Vattd.status",$vatd);
}
if (timeBetween("23:00", "07:00")) {
$vatn = $vatm - $vatd;
sg("Vattn.status",$vatn);
}

В крон содал еще одну задачу с кодом для вывода целого числа
$t=(int)gg("Vattm.status");
$tt=(int)gg("Vattd.status");
$ttt=(int)gg("Vattn.status");
sg("Vattm25.status",$t);
sg("Vattd25.status",$tt);
sg("Vattn25.status",$ttt);

Вот еще бы кто написал модуль для автоматической отправки в электросети, было бы вообще великолепно.
вот примерно как получилось
Вложения
15.png
15.png (719.09 КБ) 386 просмотров
yray
Сообщения: 106
Зарегистрирован: Чт дек 14, 2017 12:51 am
Благодарил (а): 13 раз
Поблагодарили: 16 раз

Re: [Модуль] Tuya

Сообщение yray » Ср янв 17, 2024 11:39 pm

samolet писал(а):
Ср дек 27, 2023 10:14 pm
Вот еще бы кто написал модуль для автоматической отправки в электросети, было бы вообще великолепно.
Я в свои отправляю обычным письмом, принимают, не жалуются, несколько раз мд сбоил и дичь отправлял, так они перезванивали или писали мне чтобы проверил присланные данные. Так что вполне работоспособно, модуль отправки писем есть, пользуйте.
Ответить