Skip to content

Commit 420ed02

Browse files
authored
Merge pull request #212 from FBoissadier/master
Move power schedule set and load from core_sys_info to event_scheduler
2 parents 99d75bf + a0177a4 commit 420ed02

File tree

3 files changed

+108
-74
lines changed

3 files changed

+108
-74
lines changed

README.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,6 @@ This wrapper cover the following APIs for now:
192192
| SYNO.Core.Hardware.BeepControl |
193193
| SYNO.Core.Hardware.FanSpeed |
194194
| SYNO.Core.Hardware.Hibernation |
195-
| SYNO.Core.Hardware.PowerSchedule |
196195
| SYNO.Core.Network |
197196
| SYNO.Core.Network.Bond |
198197
| SYNO.Core.Network.Bridge |
@@ -300,6 +299,7 @@ This wrapper cover the following APIs for now:
300299
| SYNO.Core.TaskScheduler.Root |
301300
| SYNO.Core.EventScheduler |
302301
| SYNO.Core.EventScheduler.Root |
302+
| SYNO.Core.Hardware.PowerSchedule |
303303

304304
### Not all Surveillance Station functions works.
305305
| Surveillance Station |
@@ -526,7 +526,6 @@ DS info with below functions:
526526
| `hardware_fan_speed()` |
527527
| `hardware_hibernation()` |
528528
| `hardware_ups()` |
529-
| `hardware_power_schedule()` |
530529
| `terminal_info()` |
531530
| `snmp_info()` |
532531
| `process()` |
@@ -854,6 +853,8 @@ DS info with below functions:
854853
| `task_run()` | Run a Event Triggered task. |
855854
| `task_delete()` | Delete a Event Triggered task. |
856855
| `task_create_or_set()` | Create or modify a Event Triggered task. |
856+
| `set_power_schedule()` | Set the power schedule, poweron tasks and poweroff tasks |
857+
| `get_power_schedule()` | Load the power schedule, poweron tasks and poweroff tasks |
857858

858859
#### What's still missing
859860

synology_api/core_sys_info.py

Lines changed: 0 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -569,79 +569,7 @@ def hardware_ups(self) -> dict[str, object] | str:
569569
req_param = {'version': info['maxVersion'], 'method': 'get'}
570570

571571
return self.request_data(api_name, api_path, req_param)
572-
573-
def hardware_power_schedule(self) -> dict[str, object] | str:
574-
api_name = 'SYNO.Core.Hardware.PowerSchedule'
575-
info = self.core_list[api_name]
576-
api_path = info['path']
577-
req_param = {'version': info['maxVersion'], 'method': 'load'}
578-
579-
return self.request_data(api_name, api_path, req_param)
580572

581-
def hardware_set_power_schedule(self, poweron_tasks: List[dict] = [], poweroff_tasks: List[dict] = []) -> dict:
582-
"""Set the power schedule, poweron tasks and poweroff tasks
583-
584-
Parameters
585-
----------
586-
poweron_tasks : List[dict], optional
587-
List of tasks for power on. Defaults to `[]`
588-
Example of a task:
589-
```python
590-
{
591-
"enabled": True, # Enable or not the task
592-
"hour": 13, # Hour 0-23
593-
"min": 59, # Minutes 0-59
594-
"weekdays": "0,1,2,3,4,5,6" # All days of the week (Sunday, Monday, Tuesday, Wednesday, Thrusday, Friday, Saturday)
595-
}
596-
```
597-
poweroff_tasks : List[dict], optional
598-
List of tasks for power off. Defaults to `[]`
599-
Example of a task:
600-
```python
601-
{
602-
"enabled": True, # Enable or not the task
603-
"hour": 13, # Hour 0-23
604-
"min": 59, # Minutes 0-59
605-
"weekdays": "0,1,2,3,4,5,6" # All days of the week (Sunday, Monday, Tuesday, Wednesday, Thrusday, Friday, Saturday)
606-
}
607-
```
608-
Returns
609-
-------
610-
dict
611-
List of tasks in power schedule
612-
613-
Example return
614-
----------
615-
```json
616-
{
617-
"data": {
618-
"poweroff_tasks": [],
619-
"poweron_tasks": [
620-
{
621-
"enabled": true,
622-
"hour": 0,
623-
"min": 0,
624-
"weekdays": "1,2,3,4,5"
625-
}
626-
]
627-
},
628-
"success": true
629-
}
630-
```
631-
"""
632-
633-
api_name = 'SYNO.Core.Hardware.PowerSchedule'
634-
info = self.core_list[api_name]
635-
api_path = info["path"]
636-
req_param = {
637-
"version": info["maxVersion"],
638-
"method": "save",
639-
"poweron_tasks": json.dumps(poweron_tasks),
640-
"poweroff_tasks": json.dumps(poweroff_tasks)
641-
}
642-
643-
return self.request_data(api_name, api_path, req_param)
644-
645573
def terminal_info(self) -> dict[str, object] | str:
646574
api_name = 'SYNO.Core.Terminal'
647575
info = self.core_list[api_name]

synology_api/event_scheduler.py

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
from . import base_api
33
from .core_sys_info import SysInfo
44
import json
5+
from typing import List
56

67
class EventScheduler(base_api.BaseApi):
78
"""Event Scheduler API implementation.
@@ -14,6 +15,7 @@ class EventScheduler(base_api.BaseApi):
1415
- Get result output
1516
- Setters:
1617
- Set task settings
18+
- Set power schedule
1719
- Actions:
1820
- Enable task
1921
- Disable task
@@ -340,4 +342,107 @@ def task_create_or_set(
340342
api_name = 'SYNO.Core.EventScheduler.Root'
341343
req_param['SynoConfirmPWToken'] = self.__get_root_token()
342344

345+
return self.request_data(api_name, api_path, req_param)
346+
347+
def set_power_schedule(self, poweron_tasks: List[dict] = [], poweroff_tasks: List[dict] = []) -> dict:
348+
"""Set the power schedule, poweron tasks and poweroff tasks
349+
350+
Parameters
351+
----------
352+
poweron_tasks : List[dict], optional
353+
List of tasks for power on. Defaults to `[]`
354+
Example of a task:
355+
```python
356+
{
357+
"enabled": True, # Enable or not the task
358+
"hour": 13, # Hour 0-23
359+
"min": 59, # Minutes 0-59
360+
"weekdays": "0,1,2,3,4,5,6" # All days of the week (Sunday, Monday, Tuesday, Wednesday, Thrusday, Friday, Saturday)
361+
}
362+
```
363+
poweroff_tasks : List[dict], optional
364+
List of tasks for power off. Defaults to `[]`
365+
Example of a task:
366+
```python
367+
{
368+
"enabled": True, # Enable or not the task
369+
"hour": 13, # Hour 0-23
370+
"min": 59, # Minutes 0-59
371+
"weekdays": "0,1,2,3,4,5,6" # All days of the week (Sunday, Monday, Tuesday, Wednesday, Thrusday, Friday, Saturday)
372+
}
373+
```
374+
Returns
375+
-------
376+
dict
377+
List of tasks in power schedule
378+
379+
Example return
380+
----------
381+
```json
382+
{
383+
"data": {
384+
"poweroff_tasks": [],
385+
"poweron_tasks": [
386+
{
387+
"enabled": true,
388+
"hour": 0,
389+
"min": 0,
390+
"weekdays": "1,2,3,4,5"
391+
}
392+
]
393+
},
394+
"success": true
395+
}
396+
```
397+
"""
398+
399+
api_name = 'SYNO.Core.Hardware.PowerSchedule'
400+
info = self.core_list[api_name]
401+
api_path = info["path"]
402+
req_param = {
403+
"version": info["maxVersion"],
404+
"method": "save",
405+
"poweron_tasks": json.dumps(poweron_tasks),
406+
"poweroff_tasks": json.dumps(poweroff_tasks)
407+
}
408+
409+
return self.request_data(api_name, api_path, req_param)
410+
411+
412+
def load_power_schedule(self) -> dict:
413+
"""Load the power schedule, poweron tasks and poweroff tasks
414+
415+
Returns
416+
-------
417+
dict
418+
List of tasks in power schedule
419+
420+
Example return
421+
----------
422+
```json
423+
{
424+
"data": {
425+
"poweroff_tasks": [],
426+
"poweron_tasks": [
427+
{
428+
"enabled": true,
429+
"hour": 0,
430+
"min": 0,
431+
"weekdays": "1,2,3,4,5"
432+
}
433+
]
434+
},
435+
"success": true
436+
}
437+
```
438+
"""
439+
440+
api_name = 'SYNO.Core.Hardware.PowerSchedule'
441+
info = self.core_list[api_name]
442+
api_path = info['path']
443+
req_param = {
444+
'version': info['maxVersion'],
445+
'method': 'load'
446+
}
447+
343448
return self.request_data(api_name, api_path, req_param)

0 commit comments

Comments
 (0)