Quick Python script to query using GraphQL your slots for Intelligent Octopus. I use this with Home Assistant to run my automations.
I haven't explained the logic well in the script but I wanted to prevent my automations from triggering on/off through the day. The script checks if there is a slot adjacent to it and if the slot is in the off-peak period. There are most likely some edge usecases where the script won't output the correct times - in my limited testing (and simluating different use cases) it has been working.
You'll need to enter the two variables before executing the script:
- Octopus Developer API Key
- Octopus Account Number (found on your account section)
Add the code below to your config to call the python script.
sensor:
- platform: command_line
name: Intelligent Octopus Times
json_attributes:
- nextRunStart
- nextRunEnd
- timesObj
command: "python3 /config/io.py"
scan_interval: 3600
value_template: "{{ value_json.updatedAt }}"
template:
- binary_sensor:
- name: "Octopus Intelligent Slot"
state: '{{ as_timestamp(states("sensor.intelligent_octopus_start")) <= as_timestamp(now()) <= as_timestamp(states("sensor.intelligent_octopus_end")) }}'
- sensor:
- name: 'Intelligent Octopus Start'
state: '{{ state_attr("sensor.intelligent_octopus_times","nextRunStart") }}'
- name: 'Intelligent Octopus End'
state: '{{ state_attr("sensor.intelligent_octopus_times","nextRunEnd") }}'
In your automations, you can use binary_sensor.octopus_intelligent_slot
.