Страница 124 из 126

Re: [Модуль] Tuya

Добавлено: Вт дек 26, 2023 2:24 pm
xor
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); рассыпано по коду, где меняется привязка - удаляем привязанное ранее, а потом новое добавляем. ну, или метрику просто удаляем с привязкой

Re: [Модуль] Tuya

Добавлено: Вт дек 26, 2023 4:23 pm
samolet
Всем здравия, подскажите пожалуйста друзья, прикупил себе WIFI счетчик TUYA, дело в том что у меня стоит двухтарифный счетчик а туя однотарифый, подскажите пожалуйста код для вывода информации на два тарифа по времени. Как разделить киловаты по определнным часам в мажордоме?

Re: [Модуль] Tuya

Добавлено: Вт дек 26, 2023 4:42 pm
fandaymon
xor писал(а):
Вт дек 26, 2023 2:24 pm

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

дропы в uninstall модуля вроде бы тоже есть... removeLinkedProperty в uninstall добавлю

Re: [Модуль] Tuya

Добавлено: Вт дек 26, 2023 5:23 pm
xor
samolet писал(а):
Вт дек 26, 2023 4:23 pm
Всем здравия, подскажите пожалуйста друзья, прикупил себе WIFI счетчик TUYA, дело в том что у меня стоит двухтарифный счетчик а туя однотарифый, подскажите пожалуйста код для вывода информации на два тарифа по времени. Как разделить киловаты по определнным часам в мажордоме?
арифметически это выглядит так - считать дельту между было и стало, например, по часам, и эту дельту класть в разные свойства-накопители в зависимости от времени. если дельта с 22 до 23, то в дневной, а если с 23 до 0 - в ночной, и т.д.

Re: [Модуль] Tuya

Добавлено: Вт дек 26, 2023 5:50 pm
samolet
а как это в коде отразить я не совсем понимаю, можете приблизительно код написать дальше я уже сам как то, спасибо. Или може пример какой то имется на основе вычислений по времени?

Re: [Модуль] Tuya

Добавлено: Вт дек 26, 2023 6:15 pm
xor
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 вроде, там то, что вам надо, правда, закомменченное)

Re: [Модуль] Tuya

Добавлено: Вт дек 26, 2023 10:11 pm
samolet
Сделал так, содал в модуле 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);

}

Re: [Модуль] Tuya

Добавлено: Ср дек 27, 2023 4:01 pm
xor
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 не в обоих интервалах учитывается?

Re: [Модуль] Tuya

Добавлено: Ср дек 27, 2023 10:14 pm
samolet
Все учитывается как положено
код еще сократил
пока все норм
очень полезная функция 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);

Вот еще бы кто написал модуль для автоматической отправки в электросети, было бы вообще великолепно.
вот примерно как получилось

Re: [Модуль] Tuya

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