Добрый день, управляю wb-mr6c с помощью следующих скриптов
lib_schedules.js
(function(Schedules) { // замыкание
function todayAt(now, month, day, hours, minutes) {
var date = new Date(now);
// i.e. "today, at HH:MM". All dates are in UTC!
date.setMonth(month-1);
date.setDate(day);
date.setHours(hours);
date.setMinutes(minutes);
return date;
}
function checkScheduleInterval(now, start_time, end_time) {
var start_date = todayAt(now, start_time[0], start_time[1], start_time[2], start_time[3]);
var end_date = todayAt(now, end_time[0], end_time[1], end_time[2], end_time[3]);
log("checkScheduleInterval {} {} {}".format(now, start_date, end_date));
if (end_date >= start_date) {
if ((now >= start_date) && (now < end_date)) {
return true;
}
} else {
// end date is less than start date,
// assuming they belong to a different days (e.g. today and tomorrow)
// option 1: what if it's now the day of "end" date?
// in this case the following is enough:
if (now < end_date) {
return true;
}
// well, that seems not to be the case. ok,
// option 2: it's the day of "start" date:
if (now >= start_date) {
return true;
}
}
return false;
}
function checkSchedule(schedule, now) {
if (now == undefined) {
now = new Date();
}
for (var i = 0; i < schedule.intervals.length; ++i) {
var item = schedule.intervals[i];
if (checkScheduleInterval(now, item[0], item[1])) {
log("found matching schedule interval at {}".format(item));
return true;
}
}
log("NOT found matching schedule interval at {}".format(item));
return false;
}
function updateSingleScheduleDevStatus(schedule) {
log("updateSingleScheduleDevStatus {}".format(schedule.name));
dev["_schedules"][schedule.name] = checkSchedule(schedule);
};
function addScheduleDevCronTasks(schedule) {
for (var i = 0; i < schedule.intervals.length; ++i) {
var interval = schedule.intervals[i];
for (var j = 0; j < 2; ++j) { // either start or end of the interval
var month = interval[j][0];
var date = interval[j][1];
var hours = interval[j][2];
var minutes = interval[j][3];
log("cron at " + "0 " + minutes + " " + hours + " " + date + " " + month + " *");
defineRule("_schedule_dev_{}_{}_{}".format(schedule.name, i, j), {
when: cron("0 " + minutes + " " + hours + " " + date + " " + month + " *"),
then: function () {
log("_schedule_dev_ {}_{}_{}".format(schedule.name, i, j));
updateSingleScheduleDevStatus(schedule);
}
});
}
}
}
function addScheduleAutoUpdCronTask(schedule) {
defineRule("_schedule_auto_upd_{}".format(schedule.name), {
when: cron("@every " + schedule.autoUpdate),
then: function() {
//dev._schedules[schedule.name] = dev._schedules[schedule.name];
}
});
}
var _schedules = {};
Schedules.registerSchedule = function(schedule) {
_schedules[schedule.name] = schedule;
};
Schedules.initSchedules = function() {
var params = {
title: "Schedule Status",
cells: {}
};
for (var schedule_name in _schedules) {
if (_schedules.hasOwnProperty(schedule_name)) {
var schedule = _schedules[schedule_name];
params.cells[schedule_name] = {type: "switch", value: false, readonly: true};
}
};
defineVirtualDevice("_schedules", params);
for (var schedule_name in _schedules) {
if (_schedules.hasOwnProperty(schedule_name)) {
var schedule = _schedules[schedule_name];
// setup cron tasks which updates the schedule dev status at schedule
// interval beginings and ends
addScheduleDevCronTasks(schedule);
// if needed, setup periodic task to trigger rules which use this schedule
if (schedule.autoUpdate) {
addScheduleAutoUpdCronTask(schedule);
}
// set schedule dev status as soon as possible at startup
(function(schedule) {
setTimeout(function() {
updateSingleScheduleDevStatus(schedule);
}, 1);
})(schedule);
};
};
};
})(Schedules);
street_lights_schedule.js
(function() {
Schedules.registerSchedule({ // замыкание к1
"name" : "streetlightsk1",
"autoUpdate" : "1m",
"intervals" : [
[ [1, 31, 16, 33], [2, 1, 8, 26] ],
//февраль
[ [2, 1, 16, 37], [2, 2, 8, 24] ],
[ [2, 2, 16, 40], [2, 3, 8, 21] ],
[ [2, 3, 16, 43], [2, 4, 8, 18] ],
[ [2, 4, 16, 46], [2, 5, 8, 15] ],
[ [2, 5, 16, 49], [2, 6, 8, 12] ],
[ [2, 6, 16, 52], [2, 7, 8, 9] ],
[ [2, 7, 16, 55], [2, 8, 8, 6] ],
[ [2, 8, 16, 58], [2, 9, 8, 3] ],
[ [2, 9, 17, 1], [2, 10, 8, 0] ],
[ [2, 10, 17, 4], [2, 11, 7, 57] ],
[ [2, 11, 17, 7], [2, 12, 7, 54] ],
[ [2, 12, 17, 10], [2, 13, 7, 51] ],
[ [2, 13, 17, 13], [2, 14, 7, 48] ],
[ [2, 14, 17, 17], [2, 15, 7, 45] ],
[ [2, 15, 17, 20], [2, 16, 7, 42] ],
[ [2, 16, 17, 23], [2, 17, 7, 38] ],
[ [2, 17, 17, 26], [2, 18, 7, 35] ],
[ [2, 18, 17, 29], [2, 19, 7, 32] ],
[ [2, 19, 17, 32], [2, 20, 7, 29] ],
[ [2, 20, 17, 35], [2, 21, 7, 25] ],
[ [2, 21, 17, 38], [2, 22, 7, 22] ],
[ [2, 22, 17, 41], [2, 23, 7, 19] ],
[ [2, 23, 17, 44], [2, 24, 7, 15] ],
[ [2, 24, 17, 47], [2, 25, 7, 12] ],
[ [2, 25, 17, 50], [2, 26, 7, 9] ],
[ [2, 26, 17, 54], [2, 27, 7, 5] ],
[ [2, 27, 17, 57], [2, 28, 7, 2] ],
[ [2, 28, 18, 0], [2, 29, 6, 59] ],
[ [2, 29, 18, 3], [3, 1, 6, 55] ],
//март
[ [3, 1, 18, 6], [3, 2, 6, 52] ],
[ [3, 2, 18, 9], [3, 3, 6, 48] ],
[ [3, 3, 18, 12], [3, 4, 6, 45] ],
[ [3, 4, 18, 15], [3, 5, 6, 41] ],
[ [3, 5, 18, 18], [3, 6, 6, 38] ],
[ [3, 6, 18, 21], [3, 7, 6, 34] ],
[ [3, 7, 18, 24], [3, 8, 6, 31] ],
[ [3, 8, 18, 27], [3, 9, 6, 27] ],
[ [3, 9, 18, 30], [3, 10, 6, 24] ],
[ [3, 10, 18, 33], [3, 11, 6, 20] ],
[ [3, 11, 18, 36], [3, 12, 6, 17] ],
[ [3, 12, 18, 39], [3, 13, 6, 13] ],
[ [3, 13, 18, 42], [3, 14, 6, 10] ],
[ [3, 14, 18, 45], [3, 15, 6, 6] ],
[ [3, 15, 18, 48], [3, 16, 6, 2] ],
[ [3, 16, 18, 51], [3, 17, 5, 59] ],
[ [3, 17, 18, 54], [3, 18, 5, 55] ],
[ [3, 18, 18, 58], [3, 19, 5, 51] ],
[ [3, 19, 19, 1], [3, 20, 5, 48] ],
[ [3, 20, 19, 4], [3, 21, 5, 44] ],
[ [3, 21, 19, 7], [3, 22, 5, 40] ],
[ [3, 22, 19, 10], [3, 23, 5, 37] ],
[ [3, 23, 19, 13], [3, 24, 5, 33] ],
[ [3, 24, 19, 16], [3, 25, 5, 29] ],
[ [3, 25, 19, 19], [3, 26, 5, 26] ],
[ [3, 26, 19, 22], [3, 27, 5, 22] ],
[ [3, 27, 19, 25], [3, 28, 5, 18] ],
[ [3, 28, 19, 29], [3, 29, 5, 15] ],
[ [3, 29, 19, 32], [3, 30, 5, 11] ],
[ [3, 30, 19, 35], [3, 31, 5, 7] ],
[ [3, 31, 19, 38], [4, 1, 5, 3] ],
//апрель
[ [4, 1, 19, 41], [4, 2, 5, 0] ],
]
});
Schedules.registerSchedule({ // замыкание к2
"name" : "streetlightsk2",
"autoUpdate" : "1m",
"intervals" : [
//январь
// [ [1, 1, 0, 0], [1, 2, 0, 0] ],
]
});
Schedules.initSchedules();
// Управление пускателем К1
defineRule("streetlightsk1OnOff", {
when: function() {
return dev._schedules.streetlightsk1 || true;
},
then: function (newValue, devName, cellName) {
if (!timers.pingTimer.firing) {
log("streetlightsk1OnOff newValue={}, devName={}, cellName={}", newValue, devName, cellName);
var on = dev._schedules.streetlightsk1;
dev["wb-mr6c/K1"] = on;
}
}
});
// Управление пускателем К2
defineRule("streetlightsk2OnOff", {
when: function() {
return dev._schedules.streetlightsk2 || true;
},
then: function (newValue, devName, cellName) {
if (!timers.pingTimer.firing) {
log("streetlightsk2OnOff newValue={}, devName={}, cellName={}", newValue, devName, cellName);
var on = dev._schedules.streetlightsk2;
dev["wb-mr6c/K2"] = on;
}
}
});
})()
В логах вижу следующие данные:
2024-09-30 11:07:29cron at 0 33 16 31 1 *
2024-09-30 11:07:29cron at 0 26 8 1 2 *
2024-09-30 11:07:29cron at 0 37 16 1 2 *
2024-09-30 11:07:29cron at 0 24 8 2 2 *
2024-09-30 11:07:29cron at 0 40 16 2 2 *
2024-09-30 11:07:29cron at 0 21 8 3 2 *
2024-09-30 11:07:29cron at 0 43 16 3 2 *
2024-09-30 11:07:29cron at 0 18 8 4 2 *
2024-09-30 11:07:29cron at 0 46 16 4 2 *
2024-09-30 11:07:29cron at 0 15 8 5 2 *
2024-09-30 11:07:29cron at 0 49 16 5 2 *
2024-09-30 11:07:29cron at 0 12 8 6 2 *
2024-09-30 11:07:29cron at 0 52 16 6 2 *
2024-09-30 11:07:29cron at 0 9 8 7 2 *
2024-09-30 11:07:29cron at 0 55 16 7 2 *
2024-09-30 11:07:29cron at 0 6 8 8 2 *
2024-09-30 11:07:29cron at 0 58 16 8 2 *
2024-09-30 11:07:29cron at 0 3 8 9 2 *
2024-09-30 11:07:29cron at 0 1 17 9 2 *
2024-09-30 11:07:29cron at 0 0 8 10 2 *
2024-09-30 11:07:29cron at 0 4 17 10 2 *
2024-09-30 11:07:29cron at 0 57 7 11 2 *
2024-09-30 11:07:29cron at 0 7 17 11 2 *
2024-09-30 11:07:29cron at 0 54 7 12 2 *
2024-09-30 11:07:29cron at 0 10 17 12 2 *
2024-09-30 11:07:29cron at 0 51 7 13 2 *
2024-09-30 11:07:29cron at 0 13 17 13 2 *
2024-09-30 11:07:29cron at 0 48 7 14 2 *
2024-09-30 11:07:29cron at 0 17 17 14 2 *
2024-09-30 11:07:29cron at 0 45 7 15 2 *
2024-09-30 11:07:29cron at 0 20 17 15 2 *
2024-09-30 11:07:29cron at 0 42 7 16 2 *
2024-09-30 11:07:29cron at 0 23 17 16 2 *
2024-09-30 11:07:29cron at 0 38 7 17 2 *
2024-09-30 11:07:29cron at 0 26 17 17 2 *
2024-09-30 11:07:29cron at 0 35 7 18 2 *
2024-09-30 11:07:29cron at 0 29 17 18 2 *
2024-09-30 11:07:29cron at 0 32 7 19 2 *
2024-09-30 11:07:29cron at 0 32 17 19 2 *
2024-09-30 11:07:29cron at 0 29 7 20 2 *
2024-09-30 11:07:29cron at 0 35 17 20 2 *
2024-09-30 11:07:29cron at 0 25 7 21 2 *
2024-09-30 11:07:29cron at 0 38 17 21 2 *
2024-09-30 11:07:29cron at 0 22 7 22 2 *
2024-09-30 11:07:29cron at 0 41 17 22 2 *
2024-09-30 11:07:29cron at 0 19 7 23 2 *
2024-09-30 11:07:29cron at 0 44 17 23 2 *
2024-09-30 11:07:29cron at 0 15 7 24 2 *
2024-09-30 11:07:29cron at 0 47 17 24 2 *
2024-09-30 11:07:29cron at 0 12 7 25 2 *
2024-09-30 11:07:29cron at 0 50 17 25 2 *
2024-09-30 11:07:29cron at 0 9 7 26 2 *
2024-09-30 11:07:29cron at 0 54 17 26 2 *
2024-09-30 11:07:29cron at 0 5 7 27 2 *
2024-09-30 11:07:29cron at 0 57 17 27 2 *
2024-09-30 11:07:29cron at 0 2 7 28 2 *
2024-09-30 11:07:29cron at 0 0 18 28 2 *
2024-09-30 11:07:29cron at 0 59 6 29 2 *
2024-09-30 11:07:29cron at 0 3 18 29 2 *
2024-09-30 11:07:29cron at 0 55 6 1 3 *
2024-09-30 11:07:29cron at 0 6 18 1 3 *
2024-09-30 11:07:29cron at 0 52 6 2 3 *
2024-09-30 11:07:29cron at 0 9 18 2 3 *
2024-09-30 11:07:29cron at 0 48 6 3 3 *
2024-09-30 11:07:29cron at 0 12 18 3 3 *
2024-09-30 11:07:29cron at 0 45 6 4 3 *
2024-09-30 11:07:29cron at 0 15 18 4 3 *
2024-09-30 11:07:29cron at 0 41 6 5 3 *
2024-09-30 11:07:29cron at 0 18 18 5 3 *
2024-09-30 11:07:29cron at 0 38 6 6 3 *
2024-09-30 11:07:29cron at 0 21 18 6 3 *
2024-09-30 11:07:29cron at 0 34 6 7 3 *
2024-09-30 11:07:29cron at 0 24 18 7 3 *
2024-09-30 11:07:29cron at 0 31 6 8 3 *
2024-09-30 11:07:29cron at 0 27 18 8 3 *
2024-09-30 11:07:29cron at 0 27 6 9 3 *
2024-09-30 11:07:29cron at 0 30 18 9 3 *
2024-09-30 11:07:29cron at 0 24 6 10 3 *
2024-09-30 11:07:29cron at 0 33 18 10 3 *
2024-09-30 11:07:29cron at 0 20 6 11 3 *
2024-09-30 11:07:29cron at 0 36 18 11 3 *
2024-09-30 11:07:29cron at 0 17 6 12 3 *
2024-09-30 11:07:29cron at 0 39 18 12 3 *
2024-09-30 11:07:29cron at 0 13 6 13 3 *
2024-09-30 11:07:29cron at 0 42 18 13 3 *
2024-09-30 11:07:29cron at 0 10 6 14 3 *
2024-09-30 11:07:29cron at 0 45 18 14 3 *
2024-09-30 11:07:29cron at 0 6 6 15 3 *
2024-09-30 11:07:29cron at 0 48 18 15 3 *
2024-09-30 11:07:29cron at 0 2 6 16 3 *
2024-09-30 11:07:29cron at 0 51 18 16 3 *
2024-09-30 11:07:29cron at 0 59 5 17 3 *
2024-09-30 11:07:29cron at 0 54 18 17 3 *
2024-09-30 11:07:29cron at 0 55 5 18 3 *
2024-09-30 11:07:29cron at 0 58 18 18 3 *
2024-09-30 11:07:29cron at 0 51 5 19 3 *
2024-09-30 11:07:29cron at 0 1 19 19 3 *
2024-09-30 11:07:29cron at 0 48 5 20 3 *
2024-09-30 11:07:29cron at 0 4 19 20 3 *
2024-09-30 11:07:29cron at 0 44 5 21 3 *
2024-09-30 11:07:29cron at 0 7 19 21 3 *
2024-09-30 11:07:29cron at 0 40 5 22 3 *
2024-09-30 11:07:29cron at 0 10 19 22 3 *
2024-09-30 11:07:29cron at 0 37 5 23 3 *
2024-09-30 11:07:29cron at 0 13 19 23 3 *
2024-09-30 11:07:29cron at 0 33 5 24 3 *
2024-09-30 11:07:29cron at 0 16 19 24 3 *
2024-09-30 11:07:29cron at 0 29 5 25 3 *
2024-09-30 11:07:29cron at 0 19 19 25 3 *
2024-09-30 11:07:29cron at 0 26 5 26 3 *
2024-09-30 11:07:29cron at 0 22 19 26 3 *
2024-09-30 11:07:29cron at 0 22 5 27 3 *
2024-09-30 11:07:29cron at 0 25 19 27 3 *
2024-09-30 11:07:29cron at 0 18 5 28 3 *
2024-09-30 11:07:29cron at 0 29 19 28 3 *
2024-09-30 11:07:29cron at 0 15 5 29 3 *
2024-09-30 11:07:29cron at 0 32 19 29 3 *
2024-09-30 11:07:29cron at 0 11 5 30 3 *
2024-09-30 11:07:29cron at 0 35 19 30 3 *
2024-09-30 11:07:29cron at 0 7 5 31 3 *
2024-09-30 11:07:29cron at 0 38 19 31 3 *
2024-09-30 11:07:29cron at 0 3 5 1 4 *
2024-09-30 11:07:29cron at 0 41 19 1 4 *
2024-09-30 11:07:29cron at 0 0 5 2 4 *
2024-09-30 11:07:29updateSingleScheduleDevStatus streetlightsk1
2024-09-30 11:07:29checkScheduleInterval 2024-09-30 11:07:28.810+03:00 2024-01-31 16:33:28.810+03:00 2024-03-01 08:26:28.810+03:00
2024-09-30 11:07:29checkScheduleInterval 2024-09-30 11:07:28.810+03:00 2024-03-01 16:37:28.810+03:00 2024-03-02 08:24:28.810+03:00
2024-09-30 11:07:29checkScheduleInterval 2024-09-30 11:07:28.810+03:00 2024-03-02 16:40:28.810+03:00 2024-03-03 08:21:28.810+03:00
2024-09-30 11:07:29checkScheduleInterval 2024-09-30 11:07:28.810+03:00 2024-03-03 16:43:28.810+03:00 2024-03-04 08:18:28.810+03:00
2024-09-30 11:07:29checkScheduleInterval 2024-09-30 11:07:28.810+03:00 2024-03-04 16:46:28.810+03:00 2024-03-05 08:15:28.810+03:00
2024-09-30 11:07:29checkScheduleInterval 2024-09-30 11:07:28.810+03:00 2024-03-05 16:49:28.810+03:00 2024-03-06 08:12:28.810+03:00
2024-09-30 11:07:29checkScheduleInterval 2024-09-30 11:07:28.810+03:00 2024-03-06 16:52:28.810+03:00 2024-03-07 08:09:28.810+03:00
2024-09-30 11:07:29checkScheduleInterval 2024-09-30 11:07:28.810+03:00 2024-03-07 16:55:28.810+03:00 2024-03-08 08:06:28.810+03:00
2024-09-30 11:07:29checkScheduleInterval 2024-09-30 11:07:28.810+03:00 2024-03-08 16:58:28.810+03:00 2024-03-09 08:03:28.810+03:00
2024-09-30 11:07:29checkScheduleInterval 2024-09-30 11:07:28.810+03:00 2024-03-09 17:01:28.810+03:00 2024-03-10 08:00:28.810+03:00
2024-09-30 11:07:29checkScheduleInterval 2024-09-30 11:07:28.810+03:00 2024-03-10 17:04:28.810+03:00 2024-03-11 07:57:28.810+03:00
2024-09-30 11:07:29checkScheduleInterval 2024-09-30 11:07:28.810+03:00 2024-03-11 17:07:28.810+03:00 2024-03-12 07:54:28.810+03:00
2024-09-30 11:07:29checkScheduleInterval 2024-09-30 11:07:28.810+03:00 2024-03-12 17:10:28.810+03:00 2024-03-13 07:51:28.810+03:00
2024-09-30 11:07:29checkScheduleInterval 2024-09-30 11:07:28.810+03:00 2024-03-13 17:13:28.810+03:00 2024-03-14 07:48:28.810+03:00
2024-09-30 11:07:29checkScheduleInterval 2024-09-30 11:07:28.810+03:00 2024-03-14 17:17:28.810+03:00 2024-03-15 07:45:28.810+03:00
2024-09-30 11:07:29checkScheduleInterval 2024-09-30 11:07:28.810+03:00 2024-03-15 17:20:28.810+03:00 2024-03-16 07:42:28.810+03:00
2024-09-30 11:07:29checkScheduleInterval 2024-09-30 11:07:28.810+03:00 2024-03-16 17:23:28.810+03:00 2024-03-17 07:38:28.810+03:00
2024-09-30 11:07:29checkScheduleInterval 2024-09-30 11:07:28.810+03:00 2024-03-17 17:26:28.810+03:00 2024-03-18 07:35:28.810+03:00
2024-09-30 11:07:29checkScheduleInterval 2024-09-30 11:07:28.810+03:00 2024-03-18 17:29:28.810+03:00 2024-03-19 07:32:28.810+03:00
2024-09-30 11:07:29checkScheduleInterval 2024-09-30 11:07:28.810+03:00 2024-03-19 17:32:28.810+03:00 2024-03-20 07:29:28.810+03:00
2024-09-30 11:07:29checkScheduleInterval 2024-09-30 11:07:28.810+03:00 2024-03-20 17:35:28.810+03:00 2024-03-21 07:25:28.810+03:00
2024-09-30 11:07:29checkScheduleInterval 2024-09-30 11:07:28.810+03:00 2024-03-21 17:38:28.810+03:00 2024-03-22 07:22:28.810+03:00
2024-09-30 11:07:29checkScheduleInterval 2024-09-30 11:07:28.810+03:00 2024-03-22 17:41:28.810+03:00 2024-03-23 07:19:28.810+03:00
2024-09-30 11:07:29checkScheduleInterval 2024-09-30 11:07:28.810+03:00 2024-03-23 17:44:28.810+03:00 2024-03-24 07:15:28.810+03:00
2024-09-30 11:07:29checkScheduleInterval 2024-09-30 11:07:28.810+03:00 2024-03-24 17:47:28.810+03:00 2024-03-25 07:12:28.810+03:00
2024-09-30 11:07:29checkScheduleInterval 2024-09-30 11:07:28.810+03:00 2024-03-25 17:50:28.810+03:00 2024-03-26 07:09:28.810+03:00
2024-09-30 11:07:29checkScheduleInterval 2024-09-30 11:07:28.810+03:00 2024-03-26 17:54:28.810+03:00 2024-03-27 07:05:28.810+03:00
2024-09-30 11:07:29checkScheduleInterval 2024-09-30 11:07:28.810+03:00 2024-03-27 17:57:28.810+03:00 2024-03-28 07:02:28.810+03:00
2024-09-30 11:07:29checkScheduleInterval 2024-09-30 11:07:28.810+03:00 2024-03-28 18:00:28.810+03:00 2024-03-29 06:59:28.810+03:00
2024-09-30 11:07:29checkScheduleInterval 2024-09-30 11:07:28.810+03:00 2024-03-29 18:03:28.810+03:00 2024-03-01 06:55:28.810+03:00
2024-09-30 11:07:29found matching schedule interval at 2,29,18,3,3,1,6,55
2024-09-30 11:07:29updateSingleScheduleDevStatus streetlightsk2
2024-09-30 11:07:29NOT found matching schedule interval at undefined
2024-09-30 11:07:29streetlightsk1OnOff newValue=5.141, devName=wb-adc, cellName=V5_0
2024-09-30 11:07:29streetlightsk2OnOff newValue=5.141, devName=wb-adc, cellName=V5_0
2024-09-30 11:07:29streetlightsk1OnOff newValue=true, devName=_schedules, cellName=streetlightsk1
2024-09-30 11:07:29streetlightsk2OnOff newValue=false, devName=_schedules, cellName=streetlightsk2
В частоности, инетерсует момент по какой причине перескакиевеит месяц проверки с февраля на март, хотя в расписании задан февраль, к пимеру вот в этой строчке
2024-09-30 11:07:29checkScheduleInterval 2024-09-30 11:07:28.810+03:00 2024-01-31 16:33:28.810+03:00 2024-03-01 08:26:28.810+03:00
Прошу помочь разобраться, где я допустил ошибку