Диапазон дат выставлен такой, что туда ничего не попадает...Alexander Znamensky писал(а): ↑Пн авг 17, 2020 6:49 pmСпойлерПоказать$service:
{"acl":{},"calendarList":{},"calendars":{},"channels":{},"colors":{},"events":{},"freebusy":{},"settings":{},"batchPath":"batch\/calendar\/v3","rootUrl":"https:\/\/www.googleapis.com\/","version":"v3","servicePath":"calendar\/v3\/","availableScopes":null,"resource":null,"serviceName":"calendar"}
$optParams:
{"maxResults":10,"orderBy":"startTime","singleEvents":true,"timeMin":"2020-08-17T23:59:59+03:00","timeMax":"2020-08-18T00:00:01+03:00"}
$results:
{"accessRole":"reader","description":null,"etag":"\"p324a7clon2hem0g\"","kind":"calendar#events","nextPageToken":null,"nextSyncToken":null,"summary":"Main_email_address@gmail.com","timeZone":"Europe\/Moscow","updated":"2020-08-17T14:24:25.285Z","defaultReminders":[],"items":[]}
[Модуль] Simple Calendar (app_calendar)
Модератор: immortal
-
- Сообщения: 1554
- Зарегистрирован: Сб янв 13, 2018 5:00 pm
- Благодарил (а): 39 раз
- Поблагодарили: 574 раза
Re: [Модуль] Simple Calendar (app_calendar)
- Alexander Znamensky
- Сообщения: 160
- Зарегистрирован: Ср дек 18, 2019 11:13 am
- Откуда: Москва
- Благодарил (а): 87 раз
- Поблагодарили: 25 раз
Re: [Модуль] Simple Calendar (app_calendar)
Спасибо. Вроде бы суточный диапазон указал, как у Вас а примере. Я его сейчас раздвинул до 3 дней.fandaymon писал(а): ↑Пн авг 17, 2020 9:21 pmДиапазон дат выставлен такой, что туда ничего не попадает...Alexander Znamensky писал(а): ↑Пн авг 17, 2020 6:49 pmСпойлерПоказать$service:
{"acl":{},"calendarList":{},"calendars":{},"channels":{},"colors":{},"events":{},"freebusy":{},"settings":{},"batchPath":"batch\/calendar\/v3","rootUrl":"https:\/\/www.googleapis.com\/","version":"v3","servicePath":"calendar\/v3\/","availableScopes":null,"resource":null,"serviceName":"calendar"}
$optParams:
{"maxResults":10,"orderBy":"startTime","singleEvents":true,"timeMin":"2020-08-17T23:59:59+03:00","timeMax":"2020-08-18T00:00:01+03:00"}
$results:
{"accessRole":"reader","description":null,"etag":"\"p324a7clon2hem0g\"","kind":"calendar#events","nextPageToken":null,"nextSyncToken":null,"summary":"Main_email_address@gmail.com","timeZone":"Europe\/Moscow","updated":"2020-08-17T14:24:25.285Z","defaultReminders":[],"items":[]}
Но в основной календарь все равно ничего не залетает.....
Хотя из Google calendar данные начали приходить.....
Raspberry Pi4 B+, образ v4_44 -> Alpha, PHP 7.3, Xiaomi Gateway 2, Tuya, Blynk, ESP8266
-
- Сообщения: 1554
- Зарегистрирован: Сб янв 13, 2018 5:00 pm
- Благодарил (а): 39 раз
- Поблагодарили: 574 раза
Re: [Модуль] Simple Calendar (app_calendar)
Можно попробовать не добавлять сразу в календарь, а вывести сначала на экран, чтобы посмотреть что именно считывается. + обязательно добавить проверку на существование такой записи в календаре. Чтобы не добавлять каждый раз, когда запускается сценарийAlexander Znamensky писал(а): ↑Пн авг 17, 2020 10:50 pm
Спасибо. Вроде бы суточный диапазон указал, как у Вас а примере. Я его сейчас раздвинул до 3 дней.
Но в основной календарь все равно ничего не залетает.....
Хотя из Google calendar данные начали приходить.....
- Alexander Znamensky
- Сообщения: 160
- Зарегистрирован: Ср дек 18, 2019 11:13 am
- Откуда: Москва
- Благодарил (а): 87 раз
- Поблагодарили: 25 раз
Re: [Модуль] Simple Calendar (app_calendar)
Да. Еще надо не мало сделать. Но главное - синхронизация налажена! Пусть криво пока, без дат и с дублированием )fandaymon писал(а): ↑Пн авг 17, 2020 11:11 pmМожно попробовать не добавлять сразу в календарь, а вывести сначала на экран, чтобы посмотреть что именно считывается. + обязательно добавить проверку на существование такой записи в календаре. Чтобы не добавлять каждый раз, когда запускается сценарийAlexander Znamensky писал(а): ↑Пн авг 17, 2020 10:50 pm
Спасибо. Вроде бы суточный диапазон указал, как у Вас а примере. Я его сейчас раздвинул до 3 дней.
Но в основной календарь все равно ничего не залетает.....
Хотя из Google calendar данные начали приходить.....
Спасибо Вам большое!
Я вот еще подозреваю, что косяки могут быть связаны с тем, что модуль Google Calendar использует старую библиотеку.
Например, при синхронизации контактов, выскакивает ошибка:
Error: Error calling GET https://www.googleapis.com/calendar/v3/ ... ary/events?
pageToken=***-----****: (400) Invalid Value
А праздники и основной календарь - без ошибок.
СпойлерПоказать
Raspberry Pi4 B+, образ v4_44 -> Alpha, PHP 7.3, Xiaomi Gateway 2, Tuya, Blynk, ESP8266
- Alexander Znamensky
- Сообщения: 160
- Зарегистрирован: Ср дек 18, 2019 11:13 am
- Откуда: Москва
- Благодарил (а): 87 раз
- Поблагодарили: 25 раз
Re: [Модуль] Simple Calendar (app_calendar)
Добрый день, уважаемый Fandaymon! Спасибо Вам за помощь, советы и разъяснения. Все сделал, настроил, все прекрасно работает!fandaymon писал(а): ↑Пн авг 17, 2020 11:11 pmМожно попробовать не добавлять сразу в календарь, а вывести сначала на экран, чтобы посмотреть что именно считывается. + обязательно добавить проверку на существование такой записи в календаре. Чтобы не добавлять каждый раз, когда запускается сценарийAlexander Znamensky писал(а): ↑Пн авг 17, 2020 10:50 pm
Спасибо. Вроде бы суточный диапазон указал, как у Вас а примере. Я его сейчас раздвинул до 3 дней.
Но в основной календарь все равно ничего не залетает.....
Хотя из Google calendar данные начали приходить.....
Для тех, кто, как и я, не очень разбирается в тонкостях php, как и обещал, выкладываю пошаговую инструкцию (все сделано исключительно по рекомендациям Fandaymona - моей заслуги никакой).
1. Делаем сервисный аккаунт. По ссылке https://console.cloud.google.com создаем новый проект - Create project, даем ему имя, создаем Service account, называем его (например, Google synchroinisation), Role – owner, DONE. Видим созданный сервисный e-mail.
СпойлерПоказать
СпойлерПоказать
СпойлерПоказать
СпойлерПоказать
4. Если будете использовать скрипт Fandaymona, исправьте кавычки в строке $client->setApplicationName(‘TestCalendarAPI’); Также имейте ввиду, что модуль Ивана Google Calendar использует старую библиотеку Гугла, поэтому в скрипте делаем обращение к новой библиотеке, не перепутайте, а то будут сыпаться ошибки при выполнении скрипта.
5. Далее, правим скрипт:
- убеждаемся, что путь к нашей новой библиотеке прописан верно: require_once '/var/www/html/modules/google-api-php-client/vendor/autoload.php';
- проверяем, что json доступен для пользователя МДМ и находится в /home/pi/;
- указываем ID своего календаря – он совпадает с вашим e-mail $calendarId = 'e-mail@gmail.com';
Код: Выделить всё
//Источники:
//https://mjdm.ru/forum/viewtopic.php?f=5&t=34&start=290#p96440
//https://github.com/googleapis/google-api-php-client
//https://cloud.google.com/docs/authentication/production#auth-cloud-implicit-php
//Скачиваем и распаковываем папку google-api-php-client с google-api-php-client
//Делаем сервисный аккаунт
//Календарь с задачами расшаривается для этого аккаунта
//Создаём json для авторизации от сервисного аккаунта
//Помещаем json на сервер (например, в /var/www/html/)
//Раз в день (или чаще) считываются задачи из гугл-календаря и записываются в МДМ
//Тут надо поставить правильный путь до файла autoload.php из новой библиотеки:
//include your composer dependencies
require_once '/var/www/html/modules/google-api-php-client/vendor/autoload.php';
//Здесь полный путь и название json:
//Set the path to these credentials using the GOOGLE_APPLICATION_CREDENTIALS environment variable:
putenv('GOOGLE_APPLICATION_CREDENTIALS=/home/pi/google_calendar.json');
//Tell the Google client to use your service account credentials to authenticate:
$client = new Google_Client();
$client->useApplicationDefaultCredentials();
//Set the scopes required for the API you are going to call
$client->setApplicationName('TestCalendarAPI');
$client->setScopes('https://www.googleapis.com/auth/calendar');
$service = new Google_Service_Calendar($client);
// Берём 20 задач за сегодня
$calendarId = 'e-mail@gmail.com'; // id основного календаря совпадает с е-мейлом
$optParams = array(
'maxResults' => 20,
'orderBy' => 'startTime',
'singleEvents' => TRUE,
'timeMin' => date('Y-m-d',strtotime('today')) .'T00:00:00+03:00',
'timeMax' => date('Y-m-d',strtotime('+1 day')) .'T00:00:00+03:00',
);
//удаляем записи из базы
$dateMin = date('Y-m-d',strtotime('today'));
$dateMax = date('Y-m-d',strtotime('+1 day'));
SQLExec("DELETE FROM calendar_events WHERE DUE='".$dateMin."' AND CALENDAR_CATEGORY_ID=20");
SQLExec("DELETE FROM calendar_events WHERE DUE='".$dateMax."' AND CALENDAR_CATEGORY_ID=20");
$results = $service->events->listEvents($calendarId, $optParams);
if (count($results->getItems()) > 0)
{
foreach ($results->getItems() as $event)
{
$rec=array();
$rec['TITLE']=$event->getSummary();
// Notes
$notes = $event->getDescription();
if ($notes){
$rec['NOTES'] = $event->getDescription();
}
// DUE
$due = $event->getStart();
if ($due) {
if ($due['dateTime']){
$rec['DUE'] = date('Y-m-d H:i:s', strtotime( $due['dateTime'] ));
} else if ($due['date']){
$rec['DUE'] = date('Y-m-d H:i:s', strtotime( $due['date'] ));
} else {
$RESULT_LOG[] = "Invalid start date :".print_r($due, true);
}
}
// DONE_WHEN
$done_when = $event->getEnd();
if ($done_when) {
if ($done_when['dateTime']){
$rec['DONE_WHEN'] = date('Y-m-d H:i:s', strtotime( $done_when['dateTime'] ));
} else if ($done_when['date']){
$rec['DONE_WHEN'] = date('Y-m-d H:i:s', strtotime( $done_when['date'] ));
} else {
$RESULT_LOG[] = "Invalid end date :".print_r($done_when, true);
}
}
$rec['CALENDAR_CATEGORY_ID']=20;
$rec['IS_TASK']=0; //1-Задача, 0-Событие
// ADDED
$added = $event->getCreated();
if ($added) {
$rec['ADDED'] = date('Y-m-d H:i:s', strtotime( $added ));
}
$rec['ID']=SQLInsert('calendar_events', $rec);
// echo json_encode($rec).'<br/>\n';
}
}
include_once('./modules/app_calendar/app_calendar.class.php');
$calendar = new app_calendar();
$calendar->calendar_getholidays();
Еще лайф-хак – у меня рабочая почта из outlook синхронизируется с Гугл-календарем используя приложение для Винды gSyncit.
Таким образом получаем утром напоминание из МДМ о всех делах на сегодня (и личные и рабочие).
Говорим спасибо Ивану и Fandaymonу.
Всем удачи!
СпойлерПоказать
- За это сообщение автора Alexander Znamensky поблагодарил:
- grifindorec (Ср сен 29, 2021 11:45 am)
- Рейтинг: 1.16%
Raspberry Pi4 B+, образ v4_44 -> Alpha, PHP 7.3, Xiaomi Gateway 2, Tuya, Blynk, ESP8266
- xor
- Сообщения: 2039
- Зарегистрирован: Сб ноя 22, 2014 8:45 pm
- Благодарил (а): 286 раз
- Поблагодарили: 629 раз
Re: [Модуль] Simple Calendar (app_calendar)
А только у меня праздники в подписи в календаре дважды своё название показывают?
не знаю, правильно или нет, но задвоения ушли
поправил 115 строку в calendar_full.inc.php
Код: Выделить всё
$calendar_day='<div class="calendar_hd' . $today_class . '" data-toggle="tooltip" title="' . $ev_tips .'">';
win10 connect https://connect.smartliving.ru/profile/303
- xor
- Сообщения: 2039
- Зарегистрирован: Сб ноя 22, 2014 8:45 pm
- Благодарил (а): 286 раз
- Поблагодарили: 629 раз
Re: [Модуль] Simple Calendar (app_calendar)
риторический вопрос:
вот модуль календарь - зачем на отдельной таблице делали? супер бы сделать на классе и объектах - задачи и события - можно крон прикрутить готовый(или свой цикл сгородить) для запуска хоть повторов, хоть одноразовых напоминалок. плюс - не только по дате, но и по времени. Просто шедулер с функцией заодно и календаря. так естественно в существующую модель ложится.
((
понятно, что так исторически сложилось, но от этого модуля хочется большего. те же закаты/рассветы, запуск скриптов по расписанию...
вот модуль календарь - зачем на отдельной таблице делали? супер бы сделать на классе и объектах - задачи и события - можно крон прикрутить готовый(или свой цикл сгородить) для запуска хоть повторов, хоть одноразовых напоминалок. плюс - не только по дате, но и по времени. Просто шедулер с функцией заодно и календаря. так естественно в существующую модель ложится.
((
понятно, что так исторически сложилось, но от этого модуля хочется большего. те же закаты/рассветы, запуск скриптов по расписанию...
win10 connect https://connect.smartliving.ru/profile/303
-
- Сообщения: 1554
- Зарегистрирован: Сб янв 13, 2018 5:00 pm
- Благодарил (а): 39 раз
- Поблагодарили: 574 раза
Re: [Модуль] Simple Calendar (app_calendar)
Ммм... Чем наличие таблиц может помешать сделать всё выше перечисленное?xor писал(а): ↑Чт сен 10, 2020 1:59 pmриторический вопрос:
вот модуль календарь - зачем на отдельной таблице делали? супер бы сделать на классе и объектах - задачи и события - можно крон прикрутить готовый(или свой цикл сгородить) для запуска хоть повторов, хоть одноразовых напоминалок. плюс - не только по дате, но и по времени. Просто шедулер с функцией заодно и календаря. так естественно в существующую модель ложится.
((
понятно, что так исторически сложилось, но от этого модуля хочется большего. те же закаты/рассветы, запуск скриптов по расписанию...
Отдельные таблицы гораздо удобнее и быстрее работают. Добавить задачу значит записать одну запись в 1 таблицу. А не 1 запись в таблицу объектов, 10 записей в таблицу свойств и 10 записей в таблицу текущих значений свойств
Наличие отдельной таблицы никак не отменяет того факта, что календарь и так сделан на классе и объектах....
- xor
- Сообщения: 2039
- Зарегистрирован: Сб ноя 22, 2014 8:45 pm
- Благодарил (а): 286 раз
- Поблагодарили: 629 раз
Re: [Модуль] Simple Calendar (app_calendar)
отдельный инструмент(модуль календарь) при наличии универсального (мдм) должен предоставлять кучу фич, которые он делает лучше/быстрее/удобнее универсального. сейчас это не особо заметно(fandaymon писал(а): ↑Чт сен 10, 2020 2:18 pmМмм... Чем наличие таблиц может помешать сделать всё выше перечисленное?xor писал(а): ↑Чт сен 10, 2020 1:59 pmриторический вопрос:
вот модуль календарь - зачем на отдельной таблице делали? супер бы сделать на классе и объектах - задачи и события - можно крон прикрутить готовый(или свой цикл сгородить) для запуска хоть повторов, хоть одноразовых напоминалок. плюс - не только по дате, но и по времени. Просто шедулер с функцией заодно и календаря. так естественно в существующую модель ложится.
((
понятно, что так исторически сложилось, но от этого модуля хочется большего. те же закаты/рассветы, запуск скриптов по расписанию...
Отдельные таблицы гораздо удобнее и быстрее работают. Добавить задачу значит записать одну запись в 1 таблицу. А не 1 запись в таблицу объектов, 10 записей в таблицу свойств и 10 записей в таблицу текущих значений свойств
Наличие отдельной таблицы никак не отменяет того факта, что календарь и так сделан на классе и объектах....
жисть щас такая, что работа с интервалом в сутки уже не интересна. имхо, разумеется
пс. от умного дома я ожидаю не просто -
сегодня встретить бабушку в аэропорту
а чего-то типа -
Сегодня встретить бабушку в аэропорту в 17:30. по данным ... рейс опаздывает на 20 минут, с учётом дорожной обстановки выезжать лучше тогда-то. следующая запланированная задача - кино в 18:30 - под угрозой срыва. удалить, перенести?
не, я понимаю - модуль называется симпл, но возможность-то есть?(
win10 connect https://connect.smartliving.ru/profile/303
-
- Сообщения: 1554
- Зарегистрирован: Сб янв 13, 2018 5:00 pm
- Благодарил (а): 39 раз
- Поблагодарили: 574 раза
Re: [Модуль] Simple Calendar (app_calendar)
Он и предоставляет - календарь. В самом МДМ календаря нет. Т.е. хранение праздников, ДР, именин и т.д., формирование на их основе собственно календаря и ежедневной сводкиxor писал(а): ↑Чт сен 10, 2020 4:27 pmотдельный инструмент(модуль календарь) при наличии универсального (мдм) должен предоставлять кучу фич, которые он делает лучше/быстрее/удобнее универсального. сейчас это не особо заметно(fandaymon писал(а): ↑Чт сен 10, 2020 2:18 pmМмм... Чем наличие таблиц может помешать сделать всё выше перечисленное?xor писал(а): ↑Чт сен 10, 2020 1:59 pmриторический вопрос:
вот модуль календарь - зачем на отдельной таблице делали? супер бы сделать на классе и объектах - задачи и события - можно крон прикрутить готовый(или свой цикл сгородить) для запуска хоть повторов, хоть одноразовых напоминалок. плюс - не только по дате, но и по времени. Просто шедулер с функцией заодно и календаря. так естественно в существующую модель ложится.
((
понятно, что так исторически сложилось, но от этого модуля хочется большего. те же закаты/рассветы, запуск скриптов по расписанию...
Отдельные таблицы гораздо удобнее и быстрее работают. Добавить задачу значит записать одну запись в 1 таблицу. А не 1 запись в таблицу объектов, 10 записей в таблицу свойств и 10 записей в таблицу текущих значений свойств
Наличие отдельной таблицы никак не отменяет того факта, что календарь и так сделан на классе и объектах....
жисть щас такая, что работа с интервалом в сутки уже не интересна. имхо, разумеется
Не очень понимаю о чём спор. Вам хочется каких-то фич, которых нет в simple calendar? Пишите, обсудим. Сергей вроде бы этим модулем сейчас не занимается, но могу попробовать я что-то реализовать в рамках своих не очень больших знаний php...