💡 Fully automatic light management based on conditions like motion, illuminance, humidity, and other clever features

Overview

automoli

Fully automatic light management based on motion as AppDaemon app.

🕓 multiple daytimes to define different scenes for morning, noon, ...
💡 supports Hue (for Hue Rooms/Groups) & Home Assistant scenes
🔌 switches lights and plugs (with lights)
☀️ supports illumination sensors to switch the light just if needed
💦 supports humidity sensors as blocker (the "shower case")
🔍 automatic discovery of lights and sensors
⛰️ stable and tested by many people with different homes

Getting Started

Docker Image (amd64, arm and arm64)

You can try AutoMoLi via Docker without installing anything! The Image is the default AppDaemon one with AutoMoLi and a simple default configuration added. See the AppDaemon Docker Tutorial on how to use it in general.

AutoMoLi expects motion sensors and lights including a room name. The exact patterns are listed in Auto-Discovery of Lights and Sensors You can set a room with the AUTOMOLI_ROOM variable in the Docker run command.

" \ --env TOKEN=" " \ --env AUTOMOLI_ROOM="bathroom" \ --ports 5050:5050 \ benleb/automoli:latest">
docker run --rm --interactive --tty --name AutoMoLi \
--env HA_URL="
     
      "
      \
--env TOKEN="
     
      "
      \
--env AUTOMOLI_ROOM="bathroom" \
--ports 5050:5050 \
benleb/automoli:latest

Port 5050 is opened to give access to the AppDaemon Admin-UI at http://127.0.0.1:5050

Example

To test AutoMoLi in your Esszimmer (german for dining room), use ... --env AUTOMOLI_ROOM="esszimmer" ... in the Docker run command.

  • AppDaemon will show you its config file on startup: cfg

  • If everything works, AutoMoLi will show you the configuration it has parsed, including the discovered sensors: cfg-loaded

  • This is how it looks when AutoMoLi manages your lights: running

Installation

Use HACS or download the automoli directory from inside the apps directory here to your local apps directory, then add the configuration to enable the automoli module.

Example App Configuration

Add your configuration to appdaemon/apps/apps.yaml, an example with two rooms is below.

livingroom:
  module: automoli
  class: AutoMoLi
  room: livingroom
  disable_switch_entities:
    - input_boolean.automoli
    - input_boolean.disable_my_house
  delay: 600
  daytimes:
      # This rule "morning" uses a scene, the scene.livingroom_morning Home Assistant scene will be used
    - { starttime: "sunrise", name: morning, light: "scene.livingroom_morning" }

    - { starttime: "07:30", name: day, light: "scene.livingroom_working" }

      # This rule"evening" uses a percentage brightness value, and the lights specified in lights: below will be set to 90%
    - { starttime: "sunset-01:00", name: evening, light: 90 }

    - { starttime: "22:30", name: night, light: 20 }

      # This rule has the lights set to 0, so they will no turn on during this time period
    - { starttime: "23:30", name: more_night, light: 0 }

  # If you are using an illuminance sensor you can set the lowest value here that blocks the lights turning on if its already light enough
  illuminance: sensor.illuminance_livingroom
  illuminance_threshold: 100

  # You can specify a light group or list of lights here
  lights:
    - light.livingroom

  # You can specify a list of motion sensors here
  motion:
    - binary_sensor.motion_sensor_153d000224f421
    - binary_sensor.motion_sensor_128d4101b95fb7

  # See below for info on humidity
  humidity:
    - sensor.humidity_128d4101b95fb7


bathroom:
  module: automoli
  class: AutoMoLi
  room: bathroom
  delay: 180
  motion_state_on: "on"
  motion_state_off: "off"
  daytimes:
    - { starttime: "05:30", name: morning, light: 45 }
    - { starttime: "07:30", name: day, light: "Day" }
    - { starttime: "20:30", name: evening, light: 100 }
    - { starttime: "sunset+01:00", name: night, light: 0 }

  # As this is a bathroom there could be the case that when taking a bath or shower, motion is not detected and the lights turn off, which isnt helpful, so the following settings allow you to use a humidity sensor and humidity threshold to prevent this by detecting the humidity from the shower and blocking the lights turning off.
  humidity:
    - sensor.humidity_128d4101b95fb7
  humidity_threshold: 75

  lights:
    - light.bathroom
    - switch.plug_68fe8b4c9fa1
  motion:
    - binary_sensor.motion_sensor_158d033224e141

Auto-Discovery of Lights and Sensors

AutoMoLi is built around rooms. Every room or area in your home is represented as a seperate app in AppDaemon with separat light setting. In your configuration you will have one config block for every room, see example configuration.
For the auto-discovery of your lights and sensors to work, AutoMoLi expects motion sensors and lights including a room name (can also be something else than a real room) like below:

  • sensor.illumination_room
  • binary_sensor.motion_sensor_room
  • binary_sensor.motion_sensor_room_something
  • light.room

AutoMoLi will detect them automatically. Manually configured entities will take precedence.

Configuration Options

key optional type default description
module False string automoli The module name of the app.
class False string AutoMoLi The name of the Class.
room False string The "room" used to find matching sensors/light
disable_switch_entities True list/string One or more Home Assistant Entities as switch for AutoMoLi. If the state of any entity is off, AutoMoLi is deactivated. (Use an input_boolean for example)
only_own_events True bool Track if automoli switched this light on. If not, an existing timer will be deleted and the state will not change
disable_switch_states True list/string ["off"] Custom states for disable_switch_entities. If the state of any entity is in this list, AutoMoLi is deactivated. Can be used to disable with media_players in playing state for example.
disable_hue_groups False boolean Disable the use of Hue Groups/Scenes
delay True integer 150 Seconds without motion until lights will switched off. Can be disabled (lights stay always on) with 0
motion_event True string replaced by motion_state_on/off
daytimes True list see code Different daytimes with light settings (see below)
transition_on_daytime_switch True bool False directly activate a daytime on its start time (instead to just set it as active daytime used if lights are switched from off to on)
lights True list/string auto detect Light entities
motion True list/string auto detect Motion sensor entities
illuminance True list/string Illuminance sensor entities
illuminance_threshold True integer If illuminance is above this value, lights will not switched on
humidity True list/string Humidity sensor entities
humidity_threshold True integer If humidity is above this value, lights will not switched off
motion_state_on True integer If using motion sensors which don't send events if already activated, like Xiaomi do, add this to your config with "on". This will listen to state changes instead
motion_state_off True integer If using motion sensors which don't send events if already activated, like Xiaomi do, add this to your config with "off". This will listen to the state changes instead.
debug_log True bool false Activate debug logging (for this room)

daytimes

key optional type default description
starttime False string Time this daytime starts or sunrise
name False string A name for this daytime
delay True integer 150 Seconds without motion until lights will switched off. Can be disabled (lights stay always on) with 0. Setting this will overwrite the global delay setting for this daytime.
light False integer/string Light setting (percent integer value (0-100) in or scene entity

Meta

Ben Lebherz: automation lover ⚙️ developer & maintainer - @benleb | @ben_leb

This project is licensed under the MIT License - see the LICENSE file for details

Comments
  • Home Assistant 2020.12.0 Illuminance sensors not working anymore

    Home Assistant 2020.12.0 Illuminance sensors not working anymore

    The last commits seem to have fixed the canceling but it only worked until I updated to Home Assistant 2020.12.0 now the lights show as turned on in home assistant but in reality they dim down and won't turn back on ever as home assistant sees them as on. Not sure if this is a HA bug or an issue here.

    Originally posted by @paviro in https://github.com/benleb/ad-automoli/issues/10#issuecomment-745389089

    bug 
    opened by benleb 26
  • Upgrading HA AppDaemon addon to 0.8.0 (4.2.0 AppDaemon) breaks AutoMoLi

    Upgrading HA AppDaemon addon to 0.8.0 (4.2.0 AppDaemon) breaks AutoMoLi

    😩 Describe the issue/bug After upgrading to AppDaemon 4.2.0 (AppDaemon addon version 0.8.0) in HomeAssistant, AutoMoLi turns on all associated lights regardless of whether there is motion or not.

    😒 Expected behavior AutoMoLi respects motion triggers and keeps lights off when there isn't any motion

    🎛️ Configuration

    trapp:
      module: automoli
      class: AutoMoLi
      room: trapp
      delay: 120
      motion_state_on: "on"
      motion_state_off: "off"
      transition_on_daytime_switch: true
      daytimes:
        - { starttime: "07:30", name: day, light: 80 }
        - { starttime: "18:30", name: evening, light: 40 }
        - { starttime: "23:00", name: night, light: 25 }
      lights:
        - light.lampe_trapp
      motion:
        - binary_sensor.multisensor_gang_1_etg_home_security_motion_detection
        - binary_sensor.multisensor_gang_2_etg_home_security_motion_detection
        
    kjokken:
      module: automoli
      class: AutoMoLi
      room: kitchen
      delay: 120
      motion_state_on: "on"
      motion_state_off: "off"
      transition_on_daytime_switch: true
      daytimes:
        - { starttime: "07:30", name: day, light: 85 }
        - { starttime: "18:30", name: evening, light: 40 }
        - { starttime: "23:00", name: night, light: 20 }
      lights:
        - light.taklys_kjokken
        - light.skaplys_kjokken
      motion:
        - binary_sensor.multisensor_kjokken_home_security_motion_detection
        
    spisestue:
      module: automoli
      class: AutoMoLi
      room: spisestue
      delay: 1200
      motion_state_on: "on"
      motion_state_off: "off"
      transition_on_daytime_switch: true
      daytimes:
        - { starttime: "07:30", name: day, light: 80 }
        - { starttime: "18:30", name: evening, light: 40 }
        - { starttime: "23:00", name: night, light: 20 }
      lights:
        - light.taklampe_spisestue
        - light.taklys_spisestue
        - light.vegglampe_spisestue
      motion:
        - binary_sensor.multisensor_spisestue_home_security_motion_detection
        
    gang_1_etasje:
      module: automoli
      class: AutoMoLi
      room: gang_1_etasje
      delay: 120
      motion_state_on: "on"
      motion_state_off: "off"
      transition_on_daytime_switch: true
      daytimes:
        - { starttime: "07:30", name: day, light: 80 }
        - { starttime: "18:30", name: evening, light: 40 }
        - { starttime: "23:00", name: night, light: 20 }
      lights:
        - light.taklys_gang_1_etg
      motion:
        - binary_sensor.multisensor_gang_1_etg_home_security_motion_detection
    
    gang_1_etasje_bordlampe:
      module: automoli
      class: AutoMoLi
      room: gang_1_etasje
      delay: 120
      motion_state_on: "on"
      motion_state_off: "off"
      transition_on_daytime_switch: true
      daytimes:
        - { starttime: "07:30", name: day, light: 100 }
        - { starttime: "18:30", name: evening, light: 80 }
        - { starttime: "23:00", name: night, light: 40 }
      lights:
        - light.bordlampe_gang_nede
      motion:
        - binary_sensor.multisensor_gang_1_etg_home_security_motion_detection  
        
        
    gang_2_etasje:
      module: automoli
      class: AutoMoLi
      room: gang_2_etasje
      delay: 120
      motion_state_on: "on"
      motion_state_off: "off"
      transition_on_daytime_switch: true
      daytimes:
        - { starttime: "07:30", name: day, light: 80 }
        - { starttime: "18:30", name: evening, light: 41 }
        - { starttime: "23:00", name: night, light: 20 }
      lights:
        - light.taklys_gang_2_etg
      motion:
        - binary_sensor.multisensor_gang_2_etg_home_security_motion_detection
    
    bad_1_etasje:
      module: automoli
      class: AutoMoLi
      room: bad_1_etasje
      delay: 300
      motion_state_on: "on"
      motion_state_off: "off"
      transition_on_daytime_switch: true
      daytimes:
        - { starttime: "07:30", name: day, light: 95 }
        - { starttime: "18:30", name: evening, light: 40 }
        - { starttime: "23:00", name: night, light: 20 }
      lights:
        - light.speillys_bad_1_etg
        - light.taklys_bad_1_etg
      motion:
        - binary_sensor.multisensor_bad_1_etg_home_security_motion_detection
    
    bad_2_etasje:
      module: automoli
      class: AutoMoLi
      room: bad_2_etasje
      delay: 300
      motion_state_on: "on"
      motion_state_off: "off"
      transition_on_daytime_switch: true
      daytimes:
        - { starttime: "07:30", name: day, light: 95 }
        - { starttime: "18:30", name: evening, light: 50 }
        - { starttime: "23:00", name: night, light: 25 }
      lights:
        - light.speillys_bad_2_etg
        - light.taklys_bad_2_etg
      motion:
        - binary_sensor.multisensor_bad_2_etg_home_security_motion_detection
        
    vaskerom:
      module: automoli
      class: AutoMoLi
      room: vaskerom
      delay: 300
      motion_state_on: "on"
      motion_state_off: "off"
      transition_on_daytime_switch: true
      daytimes:
        - { starttime: "07:30", name: day, light: 95 }
        - { starttime: "18:30", name: evening, light: 40 }
        - { starttime: "23:00", name: night, light: 20 }
      lights:
        - light.taklys_vaskerom
      motion:
        - binary_sensor.multisensor_vaskerom_home_security_motion_detection
    

    🧠 System

    • AppDaemon: 4.2.0 (HA addon version 0.8.0)
      • running mode: Installed with Home Assistant as a addon, so docker?
    • Home-Assistant: core-2021.12.8
      • running mode: Home Assistant OS 7.1
    • Python: Whichever comes with the aforementioned Home Assistant versions

    🗒️ Logs

    
    
    2022-01-08  09:54:05.080946 INFO replay_lights: did not turn light.skaplys_kjokken  off because input_boolean.bortemodusbryter is not on
    --
    2022-01-08  09:54:05.057591 INFO replay_lights: did not turn light.taklys_kjokken  off because input_boolean.bortemodusbryter is not on
    2022-01-08 09:54:05.046080 INFO AppDaemon: Previous message repeated 3 times
    2022-01-08  09:53:45.156239 INFO replay_lights: did not turn  light.vaskerom_taklys_vaskerom_dimmer off because  input_boolean.bortemodusbryter is not on
    2022-01-08  09:53:45.134237 INFO replay_lights: did not turn light.taklys_vaskerom  off because input_boolean.bortemodusbryter is not on
    2022-01-08 09:53:45.120001 INFO AppDaemon: Previous message repeated 139 times
    2022-01-08  09:53:10.792363 INFO spisestue:  motion_event: light in Spisestue  already on → refreshing timer \| self.dimming = False
    2022-01-08  09:53:10.733083 INFO spisestue:  motion_event: light in Spisestue  already on → refreshing timer \| self.dimming = False
    2022-01-08  09:53:10.725749 INFO bad_2_etasje:  motion_event: light in Bad_2_etasje  already on → refreshing timer \| self.dimming = False
    2022-01-08  09:53:10.718020 INFO bad_1_etasje:  motion_event: light in Bad_1_etasje  already on → refreshing timer \| self.dimming = False
    2022-01-08 09:53:10.708583 INFO kjokken:  motion_event: light in Kitchen already on → refreshing timer \| self.dimming = False
    2022-01-08  09:53:10.627427 INFO bad_2_etasje:  motion_event: light in Bad_2_etasje  already on → refreshing timer \| self.dimming = False
    2022-01-08  09:53:10.620570 INFO bad_1_etasje:  motion_event: light in Bad_1_etasje  already on → refreshing timer \| self.dimming = False
    2022-01-08 09:53:10.612166 INFO kjokken:  motion_event: light in Kitchen already on → refreshing timer \| self.dimming = False
    2022-01-08 09:53:10.605421 INFO vaskerom:  motion_event: light in Vaskerom already on → refreshing timer \| self.dimming = False
    2022-01-08  09:53:10.598205 INFO gang_2_etasje:  motion_event: light in  Gang_2_etasje already on → refreshing timer \| self.dimming = False
    2022-01-08  09:53:10.591437 INFO gang_1_etasje_bordlampe:  motion_event: light in  Gang_1_etasje already on → refreshing timer \| self.dimming = False
    2022-01-08  09:53:10.584030 INFO gang_1_etasje:  motion_event: light in  Gang_1_etasje already on → refreshing timer \| self.dimming = False
    2022-01-08 09:53:10.569045 INFO trapp:  motion_event: light in Trapp already on → refreshing timer \| self.dimming = False
    2022-01-08 09:53:10.568910 INFO trapp: Previous message repeated 1 times
    2022-01-08 09:53:10.522954 INFO AppDaemon: Previous message repeated 1 times
    2022-01-08 09:53:10.522277 INFO trapp: Previous message repeated 1 times
    2022-01-08 09:53:10.418445 INFO vaskerom:  motion_event: light in Vaskerom already on → refreshing timer \| self.dimming = False
    2022-01-08  09:53:10.410539 INFO gang_2_etasje:  motion_event: light in  Gang_2_etasje already on → refreshing timer \| self.dimming = False
    2022-01-08  09:53:10.402873 INFO gang_1_etasje_bordlampe:  motion_event: light in  Gang_1_etasje already on → refreshing timer \| self.dimming = False
    2022-01-08  09:53:10.394737 INFO gang_1_etasje:  motion_event: light in  Gang_1_etasje already on → refreshing timer \| self.dimming = False
    2022-01-08 09:53:10.378810 INFO trapp:  motion_event: light in Trapp already on → refreshing timer \| self.dimming = False
    2022-01-08 09:53:10.355715 INFO vaskerom:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:53:10.354631 INFO vaskerom:  motion_event: received  'state_changed_detection' event from  'light.spisestue_taklys_spisestue_dimmer' \| self.dimming = False
    2022-01-08  09:53:10.353505 INFO vaskerom:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:53:10.352432 INFO vaskerom:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:53:10.351238 INFO vaskerom:  motion_detected: light.spisestue_taklys_spisestue_dimmer changed state from off to on
    2022-01-08 09:53:10.346486 INFO bad_2_etasje:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:53:10.345365 INFO bad_2_etasje:  motion_event: received  'state_changed_detection' event from  'light.spisestue_taklys_spisestue_dimmer' \| self.dimming = False
    2022-01-08  09:53:10.344231 INFO bad_2_etasje:  motion_detected: handles cleared  and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:53:10.343147 INFO bad_2_etasje:  clear_handles: cancelled scheduled callbacks
    2022-01-08  09:53:10.342009 INFO bad_2_etasje:  motion_detected:  light.spisestue_taklys_spisestue_dimmer changed state from off to on
    2022-01-08 09:53:10.337706 INFO bad_1_etasje:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:53:10.336645 INFO bad_1_etasje:  motion_event: received  'state_changed_detection' event from  'light.spisestue_taklys_spisestue_dimmer' \| self.dimming = False
    2022-01-08  09:53:10.335572 INFO bad_1_etasje:  motion_detected: handles cleared  and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:53:10.334567 INFO bad_1_etasje:  clear_handles: cancelled scheduled callbacks
    2022-01-08  09:53:10.333459 INFO bad_1_etasje:  motion_detected:  light.spisestue_taklys_spisestue_dimmer changed state from off to on
    2022-01-08 09:53:10.328709 INFO gang_2_etasje:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:53:10.327556 INFO gang_2_etasje:  motion_event: received  'state_changed_detection' event from  'light.spisestue_taklys_spisestue_dimmer' \| self.dimming = False
    2022-01-08  09:53:10.326421 INFO gang_2_etasje:  motion_detected: handles cleared  and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:53:10.325327 INFO gang_2_etasje:  clear_handles: cancelled scheduled callbacks
    2022-01-08  09:53:10.324138 INFO gang_2_etasje:  motion_detected:  light.spisestue_taklys_spisestue_dimmer changed state from off to on
    2022-01-08 09:53:10.319818 INFO gang_1_etasje_bordlampe:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:53:10.318707 INFO gang_1_etasje_bordlampe:  motion_event: received  'state_changed_detection' event from  'light.spisestue_taklys_spisestue_dimmer' \| self.dimming = False
    2022-01-08  09:53:10.317608 INFO gang_1_etasje_bordlampe:  motion_detected: handles  cleared and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:53:10.316561 INFO gang_1_etasje_bordlampe:  clear_handles: cancelled scheduled callbacks
    2022-01-08  09:53:10.315453 INFO gang_1_etasje_bordlampe:  motion_detected:  light.spisestue_taklys_spisestue_dimmer changed state from off to on
    2022-01-08 09:53:10.310737 INFO gang_1_etasje:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:53:10.309655 INFO gang_1_etasje:  motion_event: received  'state_changed_detection' event from  'light.spisestue_taklys_spisestue_dimmer' \| self.dimming = False
    2022-01-08  09:53:10.308491 INFO gang_1_etasje:  motion_detected: handles cleared  and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:53:10.307438 INFO gang_1_etasje:  clear_handles: cancelled scheduled callbacks
    2022-01-08  09:53:10.306314 INFO gang_1_etasje:  motion_detected:  light.spisestue_taklys_spisestue_dimmer changed state from off to on
    2022-01-08 09:53:10.301787 INFO spisestue:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:53:10.300661 INFO spisestue:  motion_event: received  'state_changed_detection' event from  'light.spisestue_taklys_spisestue_dimmer' \| self.dimming = False
    2022-01-08  09:53:10.299539 INFO spisestue:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:53:10.298387 INFO spisestue:  clear_handles: cancelled scheduled callbacks
    2022-01-08  09:53:10.297097 INFO spisestue:  motion_detected:  light.spisestue_taklys_spisestue_dimmer changed state from off to on
    2022-01-08 09:53:10.292514 INFO kjokken:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:53:10.291339 INFO kjokken:  motion_event: received  'state_changed_detection' event from  'light.spisestue_taklys_spisestue_dimmer' \| self.dimming = False
    2022-01-08  09:53:10.290066 INFO kjokken:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:53:10.288817 INFO kjokken:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:53:10.287460 INFO kjokken:  motion_detected: light.spisestue_taklys_spisestue_dimmer changed state from off to on
    2022-01-08 09:53:10.281648 INFO trapp:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:53:10.280550 INFO trapp:  motion_event: received  'state_changed_detection' event from  'light.spisestue_taklys_spisestue_dimmer' \| self.dimming = False
    2022-01-08  09:53:10.279435 INFO trapp:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:53:10.278412 INFO trapp:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:53:10.277260 INFO trapp:  motion_detected: light.spisestue_taklys_spisestue_dimmer changed state from off to on
    2022-01-08 09:53:10.272665 INFO trapp:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:53:10.271548 INFO trapp:  motion_event: received  'state_changed_detection' event from  'light.spisestue_taklys_spisestue_dimmer' \| self.dimming = False
    2022-01-08  09:53:10.270455 INFO trapp:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:53:10.269405 INFO trapp:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:53:10.268237 INFO trapp:  motion_detected: light.spisestue_taklys_spisestue_dimmer changed state from off to on
    2022-01-08 09:53:10.268103 INFO trapp: Previous message repeated 1 times
    2022-01-08 09:53:10.236676 INFO AppDaemon: Previous message repeated 1 times
    2022-01-08 09:53:10.165139 INFO vaskerom:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:53:10.164015 INFO vaskerom:  motion_event: received  'state_changed_detection' event from 'light.taklys_spisestue' \|  self.dimming = False
    2022-01-08  09:53:10.162874 INFO vaskerom:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:53:10.161789 INFO vaskerom:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:53:10.160550 INFO vaskerom:  motion_detected: light.taklys_spisestue changed state from off to on
    2022-01-08 09:53:10.155803 INFO bad_2_etasje:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:53:10.154425 INFO bad_2_etasje:  motion_event: received  'state_changed_detection' event from 'light.taklys_spisestue' \|  self.dimming = False
    2022-01-08  09:53:10.152769 INFO bad_2_etasje:  motion_detected: handles cleared  and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:53:10.151069 INFO bad_2_etasje:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:53:10.149801 INFO bad_2_etasje:  motion_detected: light.taklys_spisestue changed state from off to on
    2022-01-08 09:53:10.144410 INFO bad_1_etasje:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:53:10.143173 INFO bad_1_etasje:  motion_event: received  'state_changed_detection' event from 'light.taklys_spisestue' \|  self.dimming = False
    2022-01-08  09:53:10.141946 INFO bad_1_etasje:  motion_detected: handles cleared  and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:53:10.140897 INFO bad_1_etasje:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:53:10.139673 INFO bad_1_etasje:  motion_detected: light.taklys_spisestue changed state from off to on
    2022-01-08 09:53:10.134843 INFO gang_2_etasje:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:53:10.133761 INFO gang_2_etasje:  motion_event: received  'state_changed_detection' event from 'light.taklys_spisestue' \|  self.dimming = False
    2022-01-08  09:53:10.132645 INFO gang_2_etasje:  motion_detected: handles cleared  and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:53:10.131605 INFO gang_2_etasje:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:53:10.130441 INFO gang_2_etasje:  motion_detected: light.taklys_spisestue changed state from off to on
    2022-01-08 09:53:10.126410 INFO gang_1_etasje_bordlampe:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:53:10.125273 INFO gang_1_etasje_bordlampe:  motion_event: received  'state_changed_detection' event from 'light.taklys_spisestue' \|  self.dimming = False
    2022-01-08  09:53:10.123597 INFO gang_1_etasje_bordlampe:  motion_detected: handles  cleared and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:53:10.122365 INFO gang_1_etasje_bordlampe:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:53:10.121187 INFO gang_1_etasje_bordlampe:  motion_detected: light.taklys_spisestue changed state from off to on
    2022-01-08 09:53:10.116799 INFO gang_1_etasje:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:53:10.115695 INFO gang_1_etasje:  motion_event: received  'state_changed_detection' event from 'light.taklys_spisestue' \|  self.dimming = False
    2022-01-08  09:53:10.114570 INFO gang_1_etasje:  motion_detected: handles cleared  and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:53:10.113549 INFO gang_1_etasje:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:53:10.112402 INFO gang_1_etasje:  motion_detected: light.taklys_spisestue changed state from off to on
    2022-01-08 09:53:10.107795 INFO spisestue:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:53:10.106695 INFO spisestue:  motion_event: received  'state_changed_detection' event from 'light.taklys_spisestue' \|  self.dimming = False
    2022-01-08  09:53:10.105585 INFO spisestue:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:53:10.104551 INFO spisestue:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:53:10.103434 INFO spisestue:  motion_detected: light.taklys_spisestue changed state from off to on
    2022-01-08 09:53:10.099416 INFO kjokken:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:53:10.098330 INFO kjokken:  motion_event: received  'state_changed_detection' event from 'light.taklys_spisestue' \|  self.dimming = False
    2022-01-08  09:53:10.097014 INFO kjokken:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:53:10.095938 INFO kjokken:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:53:10.094727 INFO kjokken:  motion_detected: light.taklys_spisestue changed state from off to on
    2022-01-08 09:53:10.090517 INFO trapp:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:53:10.089431 INFO trapp:  motion_event: received  'state_changed_detection' event from 'light.taklys_spisestue' \|  self.dimming = False
    2022-01-08  09:53:10.088301 INFO trapp:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:53:10.087251 INFO trapp:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:53:10.086082 INFO trapp:  motion_detected: light.taklys_spisestue changed state from off to on
    2022-01-08 09:53:10.081441 INFO trapp:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:53:10.080309 INFO trapp:  motion_event: received  'state_changed_detection' event from 'light.taklys_spisestue' \|  self.dimming = False
    2022-01-08  09:53:10.079162 INFO trapp:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:53:10.078112 INFO trapp:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:53:10.076928 INFO trapp:  motion_detected: light.taklys_spisestue changed state from off to on
    2022-01-08 09:53:10.076782 INFO trapp: Previous message repeated 1 times
    2022-01-08  09:53:10.066059 INFO spisestue:  motion_event: light in Spisestue  already on → refreshing timer \| self.dimming = False
    2022-01-08  09:53:10.002337 INFO spisestue:  motion_event: light in Spisestue  already on → refreshing timer \| self.dimming = False
    2022-01-08  09:53:09.993417 INFO bad_2_etasje:  motion_event: light in Bad_2_etasje  already on → refreshing timer \| self.dimming = False
    2022-01-08  09:53:09.986600 INFO bad_1_etasje:  motion_event: light in Bad_1_etasje  already on → refreshing timer \| self.dimming = False
    2022-01-08 09:53:09.979418 INFO kjokken:  motion_event: light in Kitchen already on → refreshing timer \| self.dimming = False
    2022-01-08  09:53:09.896915 INFO bad_2_etasje:  motion_event: light in Bad_2_etasje  already on → refreshing timer \| self.dimming = False
    2022-01-08  09:53:09.887601 INFO bad_1_etasje:  motion_event: light in Bad_1_etasje  already on → refreshing timer \| self.dimming = False
    2022-01-08 09:53:09.880092 INFO kjokken:  motion_event: light in Kitchen already on → refreshing timer \| self.dimming = False
    2022-01-08 09:53:09.872602 INFO vaskerom:  motion_event: light in Vaskerom already on → refreshing timer \| self.dimming = False
    2022-01-08  09:53:09.864680 INFO gang_2_etasje:  motion_event: light in  Gang_2_etasje already on → refreshing timer \| self.dimming = False
    2022-01-08  09:53:09.857509 INFO gang_1_etasje_bordlampe:  motion_event: light in  Gang_1_etasje already on → refreshing timer \| self.dimming = False
    2022-01-08  09:53:09.849658 INFO gang_1_etasje:  motion_event: light in  Gang_1_etasje already on → refreshing timer \| self.dimming = False
    2022-01-08 09:53:09.833991 INFO trapp:  motion_event: light in Trapp already on → refreshing timer \| self.dimming = False
    2022-01-08 09:53:09.833853 INFO trapp: Previous message repeated 1 times
    2022-01-08 09:53:09.771413 INFO AppDaemon: Previous message repeated 1 times
    2022-01-08 09:53:09.770888 INFO trapp: Previous message repeated 1 times
    2022-01-08 09:53:09.653656 INFO vaskerom:  motion_event: light in Vaskerom already on → refreshing timer \| self.dimming = False
    2022-01-08  09:53:09.645179 INFO gang_2_etasje:  motion_event: light in  Gang_2_etasje already on → refreshing timer \| self.dimming = False
    2022-01-08  09:53:09.637944 INFO gang_1_etasje_bordlampe:  motion_event: light in  Gang_1_etasje already on → refreshing timer \| self.dimming = False
    2022-01-08  09:53:09.630360 INFO gang_1_etasje:  motion_event: light in  Gang_1_etasje already on → refreshing timer \| self.dimming = False
    2022-01-08 09:53:09.613077 INFO trapp:  motion_event: light in Trapp already on → refreshing timer \| self.dimming = False
    2022-01-08 09:53:09.587920 INFO vaskerom:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:53:09.586800 INFO vaskerom:  motion_event: received  'state_changed_detection' event from  'light.spisestue_taklampe_spisestue_dimmer' \| self.dimming = False
    2022-01-08  09:53:09.585712 INFO vaskerom:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:53:09.584683 INFO vaskerom:  clear_handles: cancelled scheduled callbacks
    2022-01-08  09:53:09.583537 INFO vaskerom:  motion_detected:  light.spisestue_taklampe_spisestue_dimmer changed state from off to on
    2022-01-08 09:53:09.579122 INFO bad_2_etasje:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:53:09.578011 INFO bad_2_etasje:  motion_event: received  'state_changed_detection' event from  'light.spisestue_taklampe_spisestue_dimmer' \| self.dimming = False
    2022-01-08  09:53:09.576866 INFO bad_2_etasje:  motion_detected: handles cleared  and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:53:09.575801 INFO bad_2_etasje:  clear_handles: cancelled scheduled callbacks
    2022-01-08  09:53:09.574609 INFO bad_2_etasje:  motion_detected:  light.spisestue_taklampe_spisestue_dimmer changed state from off to on
    2022-01-08 09:53:09.569463 INFO bad_1_etasje:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:53:09.568324 INFO bad_1_etasje:  motion_event: received  'state_changed_detection' event from  'light.spisestue_taklampe_spisestue_dimmer' \| self.dimming = False
    2022-01-08  09:53:09.567139 INFO bad_1_etasje:  motion_detected: handles cleared  and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:53:09.566035 INFO bad_1_etasje:  clear_handles: cancelled scheduled callbacks
    2022-01-08  09:53:09.564759 INFO bad_1_etasje:  motion_detected:  light.spisestue_taklampe_spisestue_dimmer changed state from off to on
    2022-01-08 09:53:09.558752 INFO gang_2_etasje:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:53:09.557534 INFO gang_2_etasje:  motion_event: received  'state_changed_detection' event from  'light.spisestue_taklampe_spisestue_dimmer' \| self.dimming = False
    2022-01-08  09:53:09.556282 INFO gang_2_etasje:  motion_detected: handles cleared  and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:53:09.555224 INFO gang_2_etasje:  clear_handles: cancelled scheduled callbacks
    2022-01-08  09:53:09.554039 INFO gang_2_etasje:  motion_detected:  light.spisestue_taklampe_spisestue_dimmer changed state from off to on
    2022-01-08 09:53:09.549667 INFO gang_1_etasje_bordlampe:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:53:09.548623 INFO gang_1_etasje_bordlampe:  motion_event: received  'state_changed_detection' event from  'light.spisestue_taklampe_spisestue_dimmer' \| self.dimming = False
    2022-01-08  09:53:09.547503 INFO gang_1_etasje_bordlampe:  motion_detected: handles  cleared and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:53:09.546480 INFO gang_1_etasje_bordlampe:  clear_handles: cancelled scheduled callbacks
    2022-01-08  09:53:09.545261 INFO gang_1_etasje_bordlampe:  motion_detected:  light.spisestue_taklampe_spisestue_dimmer changed state from off to on
    2022-01-08 09:53:09.539527 INFO gang_1_etasje:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:53:09.538448 INFO gang_1_etasje:  motion_event: received  'state_changed_detection' event from  'light.spisestue_taklampe_spisestue_dimmer' \| self.dimming = False
    2022-01-08  09:53:09.537350 INFO gang_1_etasje:  motion_detected: handles cleared  and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:53:09.536325 INFO gang_1_etasje:  clear_handles: cancelled scheduled callbacks
    2022-01-08  09:53:09.535132 INFO gang_1_etasje:  motion_detected:  light.spisestue_taklampe_spisestue_dimmer changed state from off to on
    2022-01-08 09:53:09.530605 INFO spisestue:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:53:09.529340 INFO spisestue:  motion_event: received  'state_changed_detection' event from  'light.spisestue_taklampe_spisestue_dimmer' \| self.dimming = False
    2022-01-08  09:53:09.528216 INFO spisestue:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:53:09.527169 INFO spisestue:  clear_handles: cancelled scheduled callbacks
    2022-01-08  09:53:09.526006 INFO spisestue:  motion_detected:  light.spisestue_taklampe_spisestue_dimmer changed state from off to on
    2022-01-08 09:53:09.521347 INFO kjokken:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:53:09.520226 INFO kjokken:  motion_event: received  'state_changed_detection' event from  'light.spisestue_taklampe_spisestue_dimmer' \| self.dimming = False
    2022-01-08  09:53:09.519078 INFO kjokken:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:53:09.517987 INFO kjokken:  clear_handles: cancelled scheduled callbacks
    2022-01-08  09:53:09.516310 INFO kjokken:  motion_detected:  light.spisestue_taklampe_spisestue_dimmer changed state from off to on
    2022-01-08 09:53:09.511899 INFO trapp:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:53:09.510759 INFO trapp:  motion_event: received  'state_changed_detection' event from  'light.spisestue_taklampe_spisestue_dimmer' \| self.dimming = False
    2022-01-08  09:53:09.509643 INFO trapp:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:53:09.508573 INFO trapp:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:53:09.507396 INFO trapp:  motion_detected: light.spisestue_taklampe_spisestue_dimmer changed state from off to on
    2022-01-08 09:53:09.502710 INFO trapp:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:53:09.501653 INFO trapp:  motion_event: received  'state_changed_detection' event from  'light.spisestue_taklampe_spisestue_dimmer' \| self.dimming = False
    2022-01-08  09:53:09.500576 INFO trapp:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:53:09.499580 INFO trapp:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:53:09.498414 INFO trapp:  motion_detected: light.spisestue_taklampe_spisestue_dimmer changed state from off to on
    2022-01-08 09:53:09.498275 INFO trapp: Previous message repeated 1 times
    2022-01-08  09:53:09.485248 INFO spisestue:  motion_event: light in Spisestue  already on → refreshing timer \| self.dimming = False
    2022-01-08 09:53:09.452191 INFO AppDaemon: Previous message repeated 1 times
    2022-01-08 09:53:09.382148 INFO vaskerom:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:53:09.381001 INFO vaskerom:  motion_event: received  'state_changed_detection' event from 'light.taklampe_spisestue' \|  self.dimming = False
    2022-01-08  09:53:09.379690 INFO vaskerom:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:53:09.378663 INFO vaskerom:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:53:09.377565 INFO vaskerom:  motion_detected: light.taklampe_spisestue changed state from off to on
    2022-01-08 09:53:09.373568 INFO bad_2_etasje:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:53:09.372498 INFO bad_2_etasje:  motion_event: received  'state_changed_detection' event from 'light.taklampe_spisestue' \|  self.dimming = False
    2022-01-08  09:53:09.371409 INFO bad_2_etasje:  motion_detected: handles cleared  and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:53:09.370343 INFO bad_2_etasje:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:53:09.369161 INFO bad_2_etasje:  motion_detected: light.taklampe_spisestue changed state from off to on
    2022-01-08 09:53:09.363342 INFO bad_1_etasje:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:53:09.362160 INFO bad_1_etasje:  motion_event: received  'state_changed_detection' event from 'light.taklampe_spisestue' \|  self.dimming = False
    2022-01-08  09:53:09.361035 INFO bad_1_etasje:  motion_detected: handles cleared  and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:53:09.359761 INFO bad_1_etasje:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:53:09.358609 INFO bad_1_etasje:  motion_detected: light.taklampe_spisestue changed state from off to on
    2022-01-08 09:53:09.354642 INFO gang_2_etasje:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:53:09.353571 INFO gang_2_etasje:  motion_event: received  'state_changed_detection' event from 'light.taklampe_spisestue' \|  self.dimming = False
    2022-01-08  09:53:09.352290 INFO gang_2_etasje:  motion_detected: handles cleared  and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:53:09.351226 INFO gang_2_etasje:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:53:09.350053 INFO gang_2_etasje:  motion_detected: light.taklampe_spisestue changed state from off to on
    2022-01-08 09:53:09.345689 INFO gang_1_etasje_bordlampe:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:53:09.344625 INFO gang_1_etasje_bordlampe:  motion_event: received  'state_changed_detection' event from 'light.taklampe_spisestue' \|  self.dimming = False
    2022-01-08  09:53:09.343542 INFO gang_1_etasje_bordlampe:  motion_detected: handles  cleared and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:53:09.342526 INFO gang_1_etasje_bordlampe:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:53:09.341380 INFO gang_1_etasje_bordlampe:  motion_detected: light.taklampe_spisestue changed state from off to on
    2022-01-08 09:53:09.336673 INFO gang_1_etasje:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:53:09.335555 INFO gang_1_etasje:  motion_event: received  'state_changed_detection' event from 'light.taklampe_spisestue' \|  self.dimming = False
    2022-01-08  09:53:09.334424 INFO gang_1_etasje:  motion_detected: handles cleared  and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:53:09.333373 INFO gang_1_etasje:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:53:09.332185 INFO gang_1_etasje:  motion_detected: light.taklampe_spisestue changed state from off to on
    2022-01-08 09:53:09.328001 INFO spisestue:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:53:09.326910 INFO spisestue:  motion_event: received  'state_changed_detection' event from 'light.taklampe_spisestue' \|  self.dimming = False
    2022-01-08  09:53:09.325519 INFO spisestue:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:53:09.324436 INFO spisestue:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:53:09.323242 INFO spisestue:  motion_detected: light.taklampe_spisestue changed state from off to on
    2022-01-08 09:53:09.318706 INFO kjokken:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:53:09.317613 INFO kjokken:  motion_event: received  'state_changed_detection' event from 'light.taklampe_spisestue' \|  self.dimming = False
    2022-01-08  09:53:09.316525 INFO kjokken:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:53:09.315514 INFO kjokken:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:53:09.313724 INFO kjokken:  motion_detected: light.taklampe_spisestue changed state from off to on
    2022-01-08 09:53:09.307687 INFO trapp:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:53:09.306516 INFO trapp:  motion_event: received  'state_changed_detection' event from 'light.taklampe_spisestue' \|  self.dimming = False
    2022-01-08  09:53:09.305350 INFO trapp:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:53:09.304178 INFO trapp:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:53:09.302951 INFO trapp:  motion_detected: light.taklampe_spisestue changed state from off to on
    2022-01-08 09:53:09.297498 INFO trapp:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:53:09.295528 INFO trapp:  motion_event: received  'state_changed_detection' event from 'light.taklampe_spisestue' \|  self.dimming = False
    2022-01-08  09:53:09.292891 INFO trapp:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:53:09.290935 INFO trapp:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:53:09.289366 INFO trapp:  motion_detected: light.taklampe_spisestue changed state from off to on
    2022-01-08 09:53:09.289179 INFO trapp: Previous message repeated 1 times
    2022-01-08  09:53:09.249778 INFO bad_2_etasje:  motion_event: light in Bad_2_etasje  already on → refreshing timer \| self.dimming = False
    2022-01-08  09:53:09.243083 INFO bad_1_etasje:  motion_event: light in Bad_1_etasje  already on → refreshing timer \| self.dimming = False
    2022-01-08 09:53:09.236134 INFO kjokken:  motion_event: light in Kitchen already on → refreshing timer \| self.dimming = False
    2022-01-08  09:53:09.196054 INFO spisestue:  motion_event: light in Spisestue  already on → refreshing timer \| self.dimming = False
    2022-01-08 09:53:09.156339 INFO vaskerom:  motion_event: light in Vaskerom already on → refreshing timer \| self.dimming = False
    2022-01-08  09:53:09.148014 INFO gang_2_etasje:  motion_event: light in  Gang_2_etasje already on → refreshing timer \| self.dimming = False
    2022-01-08  09:53:09.141298 INFO gang_1_etasje_bordlampe:  motion_event: light in  Gang_1_etasje already on → refreshing timer \| self.dimming = False
    2022-01-08  09:53:09.133821 INFO gang_1_etasje:  motion_event: light in  Gang_1_etasje already on → refreshing timer \| self.dimming = False
    2022-01-08 09:53:09.117988 INFO trapp:  motion_event: light in Trapp already on → refreshing timer \| self.dimming = False
    2022-01-08 09:53:09.117788 INFO trapp: Previous message repeated 1 times
    2022-01-08 09:53:09.059754 INFO AppDaemon: Previous message repeated 1 times
    2022-01-08  09:53:09.014059 INFO bad_2_etasje:  motion_event: light in Bad_2_etasje  already on → refreshing timer \| self.dimming = False
    2022-01-08  09:53:09.006176 INFO bad_1_etasje:  motion_event: light in Bad_1_etasje  already on → refreshing timer \| self.dimming = False
    2022-01-08 09:53:08.997904 INFO kjokken:  motion_event: light in Kitchen already on → refreshing timer \| self.dimming = False
    2022-01-08 09:53:08.949359 INFO vaskerom:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:53:08.947430 INFO vaskerom:  motion_event: received  'state_changed_detection' event from 'light.taklys_bad_1_etg' \|  self.dimming = False
    2022-01-08  09:53:08.945428 INFO vaskerom:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:53:08.943449 INFO vaskerom:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:53:08.941229 INFO vaskerom:  motion_detected: light.taklys_bad_1_etg changed state from off to on
    2022-01-08 09:53:08.935358 INFO bad_2_etasje:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:53:08.933603 INFO bad_2_etasje:  motion_event: received  'state_changed_detection' event from 'light.taklys_bad_1_etg' \|  self.dimming = False
    2022-01-08  09:53:08.931445 INFO bad_2_etasje:  motion_detected: handles cleared  and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:53:08.929476 INFO bad_2_etasje:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:53:08.928183 INFO bad_2_etasje:  motion_detected: light.taklys_bad_1_etg changed state from off to on
    2022-01-08 09:53:08.924159 INFO bad_1_etasje:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:53:08.923050 INFO bad_1_etasje:  motion_event: received  'state_changed_detection' event from 'light.taklys_bad_1_etg' \|  self.dimming = False
    2022-01-08  09:53:08.921937 INFO bad_1_etasje:  motion_detected: handles cleared  and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:53:08.920901 INFO bad_1_etasje:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:53:08.919726 INFO bad_1_etasje:  motion_detected: light.taklys_bad_1_etg changed state from off to on
    2022-01-08 09:53:08.914669 INFO gang_2_etasje:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:53:08.913554 INFO gang_2_etasje:  motion_event: received  'state_changed_detection' event from 'light.taklys_bad_1_etg' \|  self.dimming = False
    2022-01-08  09:53:08.912466 INFO gang_2_etasje:  motion_detected: handles cleared  and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:53:08.911431 INFO gang_2_etasje:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:53:08.910253 INFO gang_2_etasje:  motion_detected: light.taklys_bad_1_etg changed state from off to on
    2022-01-08 09:53:08.905770 INFO gang_1_etasje_bordlampe:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:53:08.904509 INFO gang_1_etasje_bordlampe:  motion_event: received  'state_changed_detection' event from 'light.taklys_bad_1_etg' \|  self.dimming = False
    2022-01-08  09:53:08.903412 INFO gang_1_etasje_bordlampe:  motion_detected: handles  cleared and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:53:08.902389 INFO gang_1_etasje_bordlampe:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:53:08.901199 INFO gang_1_etasje_bordlampe:  motion_detected: light.taklys_bad_1_etg changed state from off to on
    2022-01-08 09:53:08.896608 INFO gang_1_etasje:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:53:08.895494 INFO gang_1_etasje:  motion_event: received  'state_changed_detection' event from 'light.taklys_bad_1_etg' \|  self.dimming = False
    2022-01-08  09:53:08.894375 INFO gang_1_etasje:  motion_detected: handles cleared  and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:53:08.893356 INFO gang_1_etasje:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:53:08.892195 INFO gang_1_etasje:  motion_detected: light.taklys_bad_1_etg changed state from off to on
    2022-01-08 09:53:08.888305 INFO spisestue:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:53:08.887209 INFO spisestue:  motion_event: received  'state_changed_detection' event from 'light.taklys_bad_1_etg' \|  self.dimming = False
    2022-01-08  09:53:08.886106 INFO spisestue:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:53:08.885057 INFO spisestue:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:53:08.883879 INFO spisestue:  motion_detected: light.taklys_bad_1_etg changed state from off to on
    2022-01-08 09:53:08.879482 INFO kjokken:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:53:08.878398 INFO kjokken:  motion_event: received  'state_changed_detection' event from 'light.taklys_bad_1_etg' \|  self.dimming = False
    2022-01-08  09:53:08.877312 INFO kjokken:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:53:08.876270 INFO kjokken:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:53:08.875125 INFO kjokken:  motion_detected: light.taklys_bad_1_etg changed state from off to on
    2022-01-08 09:53:08.870524 INFO trapp:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:53:08.869445 INFO trapp:  motion_event: received  'state_changed_detection' event from 'light.taklys_bad_1_etg' \|  self.dimming = False
    2022-01-08  09:53:08.868318 INFO trapp:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:53:08.867273 INFO trapp:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:53:08.866114 INFO trapp:  motion_detected: light.taklys_bad_1_etg changed state from off to on
    2022-01-08 09:53:08.861712 INFO trapp:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:53:08.860635 INFO trapp:  motion_event: received  'state_changed_detection' event from 'light.taklys_bad_1_etg' \|  self.dimming = False
    2022-01-08  09:53:08.859574 INFO trapp:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:53:08.858533 INFO trapp:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:53:08.857362 INFO trapp:  motion_detected: light.taklys_bad_1_etg changed state from off to on
    2022-01-08 09:53:08.857210 INFO trapp: Previous message repeated 1 times
    2022-01-08  09:53:08.835362 INFO spisestue:  motion_event: light in Spisestue  already on → refreshing timer \| self.dimming = False
    2022-01-08 09:53:08.778886 INFO vaskerom:  motion_event: light in Vaskerom already on → refreshing timer \| self.dimming = False
    2022-01-08  09:53:08.771599 INFO gang_2_etasje:  motion_event: light in  Gang_2_etasje already on → refreshing timer \| self.dimming = False
    2022-01-08  09:53:08.764126 INFO gang_1_etasje_bordlampe:  motion_event: light in  Gang_1_etasje already on → refreshing timer \| self.dimming = False
    2022-01-08  09:53:08.756466 INFO gang_1_etasje:  motion_event: light in  Gang_1_etasje already on → refreshing timer \| self.dimming = False
    2022-01-08 09:53:08.740330 INFO trapp:  motion_event: light in Trapp already on → refreshing timer \| self.dimming = False
    2022-01-08 09:53:08.740146 INFO trapp: Previous message repeated 1 times
    2022-01-08 09:53:08.684818 INFO AppDaemon: Previous message repeated 1 times
    2022-01-08  09:53:08.662574 INFO bad_2_etasje:  motion_event: light in Bad_2_etasje  already on → refreshing timer \| self.dimming = False
    2022-01-08  09:53:08.655467 INFO bad_1_etasje:  motion_event: light in Bad_1_etasje  already on → refreshing timer \| self.dimming = False
    2022-01-08 09:53:08.647715 INFO kjokken:  motion_event: light in Kitchen already on → refreshing timer \| self.dimming = False
    2022-01-08 09:53:08.575865 INFO vaskerom:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:53:08.574690 INFO vaskerom:  motion_event: received  'state_changed_detection' event from  'light.bad_1_etasje_taklys_bad_1_etg_dimmer' \| self.dimming = False
    2022-01-08  09:53:08.573531 INFO vaskerom:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:53:08.572450 INFO vaskerom:  clear_handles: cancelled scheduled callbacks
    2022-01-08  09:53:08.571022 INFO vaskerom:  motion_detected:  light.bad_1_etasje_taklys_bad_1_etg_dimmer changed state from off to on
    2022-01-08 09:53:08.566595 INFO bad_2_etasje:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:53:08.565459 INFO bad_2_etasje:  motion_event: received  'state_changed_detection' event from  'light.bad_1_etasje_taklys_bad_1_etg_dimmer' \| self.dimming = False
    2022-01-08  09:53:08.564302 INFO bad_2_etasje:  motion_detected: handles cleared  and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:53:08.563228 INFO bad_2_etasje:  clear_handles: cancelled scheduled callbacks
    2022-01-08  09:53:08.562019 INFO bad_2_etasje:  motion_detected:  light.bad_1_etasje_taklys_bad_1_etg_dimmer changed state from off to on
    2022-01-08 09:53:08.557721 INFO bad_1_etasje:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:53:08.556577 INFO bad_1_etasje:  motion_event: received  'state_changed_detection' event from  'light.bad_1_etasje_taklys_bad_1_etg_dimmer' \| self.dimming = False
    2022-01-08  09:53:08.555404 INFO bad_1_etasje:  motion_detected: handles cleared  and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:53:08.554338 INFO bad_1_etasje:  clear_handles: cancelled scheduled callbacks
    2022-01-08  09:53:08.553128 INFO bad_1_etasje:  motion_detected:  light.bad_1_etasje_taklys_bad_1_etg_dimmer changed state from off to on
    2022-01-08 09:53:08.548605 INFO gang_2_etasje:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:53:08.547418 INFO gang_2_etasje:  motion_event: received  'state_changed_detection' event from  'light.bad_1_etasje_taklys_bad_1_etg_dimmer' \| self.dimming = False
    2022-01-08  09:53:08.546203 INFO gang_2_etasje:  motion_detected: handles cleared  and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:53:08.544856 INFO gang_2_etasje:  clear_handles: cancelled scheduled callbacks
    2022-01-08  09:53:08.543522 INFO gang_2_etasje:  motion_detected:  light.bad_1_etasje_taklys_bad_1_etg_dimmer changed state from off to on
    2022-01-08 09:53:08.538696 INFO gang_1_etasje_bordlampe:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:53:08.537508 INFO gang_1_etasje_bordlampe:  motion_event: received  'state_changed_detection' event from  'light.bad_1_etasje_taklys_bad_1_etg_dimmer' \| self.dimming = False
    2022-01-08  09:53:08.536293 INFO gang_1_etasje_bordlampe:  motion_detected: handles  cleared and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:53:08.535156 INFO gang_1_etasje_bordlampe:  clear_handles: cancelled scheduled callbacks
    2022-01-08  09:53:08.533867 INFO gang_1_etasje_bordlampe:  motion_detected:  light.bad_1_etasje_taklys_bad_1_etg_dimmer changed state from off to on
    2022-01-08 09:53:08.528796 INFO gang_1_etasje:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:53:08.527649 INFO gang_1_etasje:  motion_event: received  'state_changed_detection' event from  'light.bad_1_etasje_taklys_bad_1_etg_dimmer' \| self.dimming = False
    2022-01-08  09:53:08.526450 INFO gang_1_etasje:  motion_detected: handles cleared  and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:53:08.525276 INFO gang_1_etasje:  clear_handles: cancelled scheduled callbacks
    2022-01-08  09:53:08.523784 INFO gang_1_etasje:  motion_detected:  light.bad_1_etasje_taklys_bad_1_etg_dimmer changed state from off to on
    2022-01-08 09:53:08.490084 INFO spisestue:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:53:08.488879 INFO spisestue:  motion_event: received  'state_changed_detection' event from  'light.bad_1_etasje_taklys_bad_1_etg_dimmer' \| self.dimming = False
    2022-01-08  09:53:08.487759 INFO spisestue:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:53:08.486716 INFO spisestue:  clear_handles: cancelled scheduled callbacks
    2022-01-08  09:53:08.485538 INFO spisestue:  motion_detected:  light.bad_1_etasje_taklys_bad_1_etg_dimmer changed state from off to on
    2022-01-08 09:53:08.481009 INFO kjokken:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:53:08.479680 INFO kjokken:  motion_event: received  'state_changed_detection' event from  'light.bad_1_etasje_taklys_bad_1_etg_dimmer' \| self.dimming = False
    2022-01-08  09:53:08.478389 INFO kjokken:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:53:08.477115 INFO kjokken:  clear_handles: cancelled scheduled callbacks
    2022-01-08  09:53:08.475767 INFO kjokken:  motion_detected:  light.bad_1_etasje_taklys_bad_1_etg_dimmer changed state from off to on
    2022-01-08 09:53:08.471422 INFO trapp:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:53:08.470090 INFO trapp:  motion_event: received  'state_changed_detection' event from  'light.bad_1_etasje_taklys_bad_1_etg_dimmer' \| self.dimming = False
    2022-01-08  09:53:08.468826 INFO trapp:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:53:08.466899 INFO trapp:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:53:08.463276 INFO trapp:  motion_detected: light.bad_1_etasje_taklys_bad_1_etg_dimmer changed state from off to on
    2022-01-08 09:53:08.457736 INFO trapp:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:53:08.456624 INFO trapp:  motion_event: received  'state_changed_detection' event from  'light.bad_1_etasje_taklys_bad_1_etg_dimmer' \| self.dimming = False
    2022-01-08  09:53:08.455503 INFO trapp:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:53:08.454445 INFO trapp:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:53:08.453260 INFO trapp:  motion_detected: light.bad_1_etasje_taklys_bad_1_etg_dimmer changed state from off to on
    2022-01-08 09:53:08.453091 INFO trapp: Previous message repeated 1 times
    2022-01-08 09:53:08.372929 INFO vaskerom:  motion_event: light in Vaskerom already on → refreshing timer \| self.dimming = False
    2022-01-08  09:53:08.362775 INFO gang_2_etasje:  motion_event: light in  Gang_2_etasje already on → refreshing timer \| self.dimming = False
    2022-01-08  09:53:08.355160 INFO gang_1_etasje_bordlampe:  motion_event: light in  Gang_1_etasje already on → refreshing timer \| self.dimming = False
    2022-01-08  09:53:08.347715 INFO gang_1_etasje:  motion_event: light in  Gang_1_etasje already on → refreshing timer \| self.dimming = False
    2022-01-08 09:53:08.332962 INFO trapp:  motion_event: light in Trapp already on → refreshing timer \| self.dimming = False
    2022-01-08 09:53:08.332794 INFO trapp: Previous message repeated 1 times
    2022-01-08 09:53:08.300681 INFO AppDaemon: Previous message repeated 1 times
    2022-01-08 09:53:08.241127 INFO vaskerom:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:53:08.239992 INFO vaskerom:  motion_event: received  'state_changed_detection' event from 'light.speillys_bad_1_etg' \|  self.dimming = False
    2022-01-08  09:53:08.238823 INFO vaskerom:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:53:08.237831 INFO vaskerom:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:53:08.236719 INFO vaskerom:  motion_detected: light.speillys_bad_1_etg changed state from off to on
    2022-01-08 09:53:08.231970 INFO bad_2_etasje:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:53:08.230789 INFO bad_2_etasje:  motion_event: received  'state_changed_detection' event from 'light.speillys_bad_1_etg' \|  self.dimming = False
    2022-01-08  09:53:08.229663 INFO bad_2_etasje:  motion_detected: handles cleared  and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:53:08.228670 INFO bad_2_etasje:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:53:08.227487 INFO bad_2_etasje:  motion_detected: light.speillys_bad_1_etg changed state from off to on
    2022-01-08 09:53:08.223089 INFO bad_1_etasje:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:53:08.221660 INFO bad_1_etasje:  motion_event: received  'state_changed_detection' event from 'light.speillys_bad_1_etg' \|  self.dimming = False
    2022-01-08  09:53:08.220532 INFO bad_1_etasje:  motion_detected: handles cleared  and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:53:08.219445 INFO bad_1_etasje:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:53:08.218232 INFO bad_1_etasje:  motion_detected: light.speillys_bad_1_etg changed state from off to on
    2022-01-08 09:53:08.212372 INFO gang_2_etasje:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:53:08.211113 INFO gang_2_etasje:  motion_event: received  'state_changed_detection' event from 'light.speillys_bad_1_etg' \|  self.dimming = False
    2022-01-08  09:53:08.209901 INFO gang_2_etasje:  motion_detected: handles cleared  and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:53:08.208765 INFO gang_2_etasje:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:53:08.207522 INFO gang_2_etasje:  motion_detected: light.speillys_bad_1_etg changed state from off to on
    2022-01-08 09:53:08.201951 INFO gang_1_etasje_bordlampe:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:53:08.200696 INFO gang_1_etasje_bordlampe:  motion_event: received  'state_changed_detection' event from 'light.speillys_bad_1_etg' \|  self.dimming = False
    2022-01-08  09:53:08.199214 INFO gang_1_etasje_bordlampe:  motion_detected: handles  cleared and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:53:08.197355 INFO gang_1_etasje_bordlampe:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:53:08.195499 INFO gang_1_etasje_bordlampe:  motion_detected: light.speillys_bad_1_etg changed state from off to on
    2022-01-08 09:53:08.190617 INFO gang_1_etasje:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:53:08.188894 INFO gang_1_etasje:  motion_event: received  'state_changed_detection' event from 'light.speillys_bad_1_etg' \|  self.dimming = False
    2022-01-08  09:53:08.186534 INFO gang_1_etasje:  motion_detected: handles cleared  and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:53:08.184510 INFO gang_1_etasje:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:53:08.182865 INFO gang_1_etasje:  motion_detected: light.speillys_bad_1_etg changed state from off to on
    2022-01-08 09:53:08.176907 INFO spisestue:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:53:08.175777 INFO spisestue:  motion_event: received  'state_changed_detection' event from 'light.speillys_bad_1_etg' \|  self.dimming = False
    2022-01-08  09:53:08.174384 INFO spisestue:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:53:08.173360 INFO spisestue:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:53:08.172170 INFO spisestue:  motion_detected: light.speillys_bad_1_etg changed state from off to on
    2022-01-08 09:53:08.166524 INFO kjokken:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:53:08.164810 INFO kjokken:  motion_event: received  'state_changed_detection' event from 'light.speillys_bad_1_etg' \|  self.dimming = False
    2022-01-08  09:53:08.163542 INFO kjokken:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:53:08.162492 INFO kjokken:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:53:08.161254 INFO kjokken:  motion_detected: light.speillys_bad_1_etg changed state from off to on
    2022-01-08 09:53:08.155435 INFO trapp:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:53:08.151100 INFO trapp:  motion_event: received  'state_changed_detection' event from 'light.speillys_bad_1_etg' \|  self.dimming = False
    2022-01-08  09:53:08.149322 INFO trapp:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:53:08.147646 INFO trapp:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:53:08.145736 INFO trapp:  motion_detected: light.speillys_bad_1_etg changed state from off to on
    2022-01-08 09:53:08.139007 INFO trapp:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:53:08.137350 INFO trapp:  motion_event: received  'state_changed_detection' event from 'light.speillys_bad_1_etg' \|  self.dimming = False
    2022-01-08  09:53:08.135304 INFO trapp:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:53:08.133364 INFO trapp:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:53:08.131556 INFO trapp:  motion_detected: light.speillys_bad_1_etg changed state from off to on
    2022-01-08 09:53:08.131262 INFO trapp: Previous message repeated 1 times
    2022-01-08 09:53:08.126564 INFO AppDaemon: Previous message repeated 200 times
    2022-01-08  09:52:57.006708 WARNING AppDaemon: Excessive time spent in utility  loop: 2648.0ms, 2644.0ms in check_app_updates(), 4.0ms in other
    2022-01-08  09:52:56.842095 INFO bad_1_etasje: 💡 Bad_1_etasje turned  on → brightness: 95% \| delay: 5min
    2022-01-08  09:52:56.837687 INFO bad_1_etasje: 💡 Bad_1_etasje turned  on → brightness: 95% \| delay: 5min
    2022-01-08  09:52:56.814442 INFO bad_1_etasje: 💡 Bad_1_etasje turned  on → brightness: 95% \| delay: 5min
    2022-01-08  09:52:56.801817 INFO spisestue:  motion_event: light in Spisestue  already on → refreshing timer \| self.dimming = False
    2022-01-08  09:52:56.794172 INFO bad_1_etasje: 💡 Bad_1_etasje turned  on → brightness: 95% \| delay: 5min
    2022-01-08  09:52:56.767413 INFO bad_2_etasje:  motion_event: light in Bad_2_etasje  already on → refreshing timer \| self.dimming = False
    2022-01-08  09:52:56.765299 INFO bad_1_etasje:  lights_on:  self.thresholds.get(EntityType.ILLUMINANCE.idx) = None \| self.dimming =  False \| force = False \| bool(force or self.dimming) = False
    2022-01-08 09:52:56.763983 INFO bad_1_etasje:  motion_event: switching on \| self.dimming = False
    2022-01-08 09:52:56.763817 INFO bad_1_etasje: Previous message repeated 1 times
    2022-01-08 09:52:56.756067 INFO kjokken:  motion_event: light in Kitchen already on → refreshing timer \| self.dimming = False
    2022-01-08 09:52:56.735706 INFO bad_1_etasje: Previous message repeated 1 times
    2022-01-08  09:52:56.719557 INFO spisestue:  motion_event: light in Spisestue  already on → refreshing timer \| self.dimming = False
    2022-01-08 09:52:56.680496 INFO vaskerom:  motion_event: light in Vaskerom already on → refreshing timer \| self.dimming = False
    2022-01-08  09:52:56.673474 INFO gang_2_etasje:  motion_event: light in  Gang_2_etasje already on → refreshing timer \| self.dimming = False
    2022-01-08  09:52:56.666769 INFO gang_1_etasje_bordlampe:  motion_event: light in  Gang_1_etasje already on → refreshing timer \| self.dimming = False
    2022-01-08  09:52:56.659444 INFO gang_1_etasje:  motion_event: light in  Gang_1_etasje already on → refreshing timer \| self.dimming = False
    2022-01-08 09:52:56.641743 INFO trapp:  motion_event: light in Trapp already on → refreshing timer \| self.dimming = False
    2022-01-08 09:52:56.641581 INFO trapp: Previous message repeated 1 times
    2022-01-08 09:52:56.600261 INFO AppDaemon: Previous message repeated 1 times
    2022-01-08  09:52:56.584106 INFO bad_2_etasje:  motion_event: light in Bad_2_etasje  already on → refreshing timer \| self.dimming = False
    2022-01-08  09:52:56.582554 INFO bad_1_etasje:  lights_on:  self.thresholds.get(EntityType.ILLUMINANCE.idx) = None \| self.dimming =  False \| force = False \| bool(force or self.dimming) = False
    2022-01-08 09:52:56.580861 INFO bad_1_etasje:  motion_event: switching on \| self.dimming = False
    2022-01-08 09:52:56.573505 INFO kjokken:  motion_event: light in Kitchen already on → refreshing timer \| self.dimming = False
    2022-01-08 09:52:56.512490 INFO vaskerom:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:56.511375 INFO vaskerom:  motion_event: received  'state_changed_detection' event from  'light.bad_2_etasje_taklys_bad_2_etg_dimmer' \| self.dimming = False
    2022-01-08  09:52:56.510089 INFO vaskerom:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:56.509011 INFO vaskerom:  clear_handles: cancelled scheduled callbacks
    2022-01-08  09:52:56.507827 INFO vaskerom:  motion_detected:  light.bad_2_etasje_taklys_bad_2_etg_dimmer changed state from off to on
    2022-01-08 09:52:56.503286 INFO bad_2_etasje:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:56.501637 INFO bad_2_etasje:  motion_event: received  'state_changed_detection' event from  'light.bad_2_etasje_taklys_bad_2_etg_dimmer' \| self.dimming = False
    2022-01-08  09:52:56.499554 INFO bad_2_etasje:  motion_detected: handles cleared  and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:56.497584 INFO bad_2_etasje:  clear_handles: cancelled scheduled callbacks
    2022-01-08  09:52:56.495360 INFO bad_2_etasje:  motion_detected:  light.bad_2_etasje_taklys_bad_2_etg_dimmer changed state from off to on
    2022-01-08 09:52:56.490303 INFO bad_1_etasje:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:56.489070 INFO bad_1_etasje:  motion_event: received  'state_changed_detection' event from  'light.bad_2_etasje_taklys_bad_2_etg_dimmer' \| self.dimming = False
    2022-01-08  09:52:56.487966 INFO bad_1_etasje:  motion_detected: handles cleared  and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:56.486969 INFO bad_1_etasje:  clear_handles: cancelled scheduled callbacks
    2022-01-08  09:52:56.485810 INFO bad_1_etasje:  motion_detected:  light.bad_2_etasje_taklys_bad_2_etg_dimmer changed state from off to on
    2022-01-08 09:52:56.481695 INFO gang_2_etasje:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:56.480639 INFO gang_2_etasje:  motion_event: received  'state_changed_detection' event from  'light.bad_2_etasje_taklys_bad_2_etg_dimmer' \| self.dimming = False
    2022-01-08  09:52:56.479504 INFO gang_2_etasje:  motion_detected: handles cleared  and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:56.478484 INFO gang_2_etasje:  clear_handles: cancelled scheduled callbacks
    2022-01-08  09:52:56.477228 INFO gang_2_etasje:  motion_detected:  light.bad_2_etasje_taklys_bad_2_etg_dimmer changed state from off to on
    2022-01-08 09:52:56.471044 INFO gang_1_etasje_bordlampe:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:56.469799 INFO gang_1_etasje_bordlampe:  motion_event: received  'state_changed_detection' event from  'light.bad_2_etasje_taklys_bad_2_etg_dimmer' \| self.dimming = False
    2022-01-08  09:52:56.468371 INFO gang_1_etasje_bordlampe:  motion_detected: handles  cleared and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:56.466325 INFO gang_1_etasje_bordlampe:  clear_handles: cancelled scheduled callbacks
    2022-01-08  09:52:56.464492 INFO gang_1_etasje_bordlampe:  motion_detected:  light.bad_2_etasje_taklys_bad_2_etg_dimmer changed state from off to on
    2022-01-08 09:52:56.459754 INFO gang_1_etasje:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:56.458017 INFO gang_1_etasje:  motion_event: received  'state_changed_detection' event from  'light.bad_2_etasje_taklys_bad_2_etg_dimmer' \| self.dimming = False
    2022-01-08  09:52:56.456033 INFO gang_1_etasje:  motion_detected: handles cleared  and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:56.454352 INFO gang_1_etasje:  clear_handles: cancelled scheduled callbacks
    2022-01-08  09:52:56.452597 INFO gang_1_etasje:  motion_detected:  light.bad_2_etasje_taklys_bad_2_etg_dimmer changed state from off to on
    2022-01-08 09:52:56.446820 INFO spisestue:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:56.444987 INFO spisestue:  motion_event: received  'state_changed_detection' event from  'light.bad_2_etasje_taklys_bad_2_etg_dimmer' \| self.dimming = False
    2022-01-08  09:52:56.443005 INFO spisestue:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:56.441181 INFO spisestue:  clear_handles: cancelled scheduled callbacks
    2022-01-08  09:52:56.439228 INFO spisestue:  motion_detected:  light.bad_2_etasje_taklys_bad_2_etg_dimmer changed state from off to on
    2022-01-08 09:52:56.433081 INFO kjokken:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:56.431158 INFO kjokken:  motion_event: received  'state_changed_detection' event from  'light.bad_2_etasje_taklys_bad_2_etg_dimmer' \| self.dimming = False
    2022-01-08  09:52:56.429370 INFO kjokken:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:56.427679 INFO kjokken:  clear_handles: cancelled scheduled callbacks
    2022-01-08  09:52:56.425779 INFO kjokken:  motion_detected:  light.bad_2_etasje_taklys_bad_2_etg_dimmer changed state from off to on
    2022-01-08 09:52:56.419484 INFO trapp:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:56.417659 INFO trapp:  motion_event: received  'state_changed_detection' event from  'light.bad_2_etasje_taklys_bad_2_etg_dimmer' \| self.dimming = False
    2022-01-08  09:52:56.415858 INFO trapp:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:56.413945 INFO trapp:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:52:56.411729 INFO trapp:  motion_detected: light.bad_2_etasje_taklys_bad_2_etg_dimmer changed state from off to on
    2022-01-08 09:52:56.406034 INFO trapp:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:56.404312 INFO trapp:  motion_event: received  'state_changed_detection' event from  'light.bad_2_etasje_taklys_bad_2_etg_dimmer' \| self.dimming = False
    2022-01-08  09:52:56.402577 INFO trapp:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:56.400808 INFO trapp:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:52:56.398763 INFO trapp:  motion_detected: light.bad_2_etasje_taklys_bad_2_etg_dimmer changed state from off to on
    2022-01-08 09:52:56.398547 INFO trapp: Previous message repeated 1 times
    2022-01-08 09:52:56.316894 INFO vaskerom:  motion_event: light in Vaskerom already on → refreshing timer \| self.dimming = False
    2022-01-08  09:52:56.307043 INFO gang_2_etasje:  motion_event: light in  Gang_2_etasje already on → refreshing timer \| self.dimming = False
    2022-01-08  09:52:56.299396 INFO gang_1_etasje_bordlampe:  motion_event: light in  Gang_1_etasje already on → refreshing timer \| self.dimming = False
    2022-01-08  09:52:56.293106 INFO gang_1_etasje:  motion_event: light in  Gang_1_etasje already on → refreshing timer \| self.dimming = False
    2022-01-08 09:52:56.279158 INFO trapp:  motion_event: light in Trapp already on → refreshing timer \| self.dimming = False
    2022-01-08 09:52:56.278971 INFO trapp: Previous message repeated 1 times
    2022-01-08 09:52:56.245175 INFO AppDaemon: Previous message repeated 1 times
    2022-01-08 09:52:56.185809 INFO vaskerom:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:56.184468 INFO vaskerom:  motion_event: received  'state_changed_detection' event from 'light.taklys_bad_2_etg' \|  self.dimming = False
    2022-01-08  09:52:56.182681 INFO vaskerom:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:56.181581 INFO vaskerom:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:52:56.180344 INFO vaskerom:  motion_detected: light.taklys_bad_2_etg changed state from off to on
    2022-01-08 09:52:56.175276 INFO bad_2_etasje:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:56.173959 INFO bad_2_etasje:  motion_event: received  'state_changed_detection' event from 'light.taklys_bad_2_etg' \|  self.dimming = False
    2022-01-08  09:52:56.172790 INFO bad_2_etasje:  motion_detected: handles cleared  and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:56.171795 INFO bad_2_etasje:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:52:56.170665 INFO bad_2_etasje:  motion_detected: light.taklys_bad_2_etg changed state from off to on
    2022-01-08 09:52:56.166253 INFO bad_1_etasje:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:56.164599 INFO bad_1_etasje:  motion_event: received  'state_changed_detection' event from 'light.taklys_bad_2_etg' \|  self.dimming = False
    2022-01-08  09:52:56.163426 INFO bad_1_etasje:  motion_detected: handles cleared  and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:56.162376 INFO bad_1_etasje:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:52:56.161194 INFO bad_1_etasje:  motion_detected: light.taklys_bad_2_etg changed state from off to on
    2022-01-08 09:52:56.156755 INFO gang_2_etasje:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:56.155624 INFO gang_2_etasje:  motion_event: received  'state_changed_detection' event from 'light.taklys_bad_2_etg' \|  self.dimming = False
    2022-01-08  09:52:56.154446 INFO gang_2_etasje:  motion_detected: handles cleared  and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:56.153270 INFO gang_2_etasje:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:52:56.151920 INFO gang_2_etasje:  motion_detected: light.taklys_bad_2_etg changed state from off to on
    2022-01-08 09:52:56.146924 INFO gang_1_etasje_bordlampe:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:56.145675 INFO gang_1_etasje_bordlampe:  motion_event: received  'state_changed_detection' event from 'light.taklys_bad_2_etg' \|  self.dimming = False
    2022-01-08  09:52:56.144192 INFO gang_1_etasje_bordlampe:  motion_detected: handles  cleared and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:56.142287 INFO gang_1_etasje_bordlampe:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:52:56.140582 INFO gang_1_etasje_bordlampe:  motion_detected: light.taklys_bad_2_etg changed state from off to on
    2022-01-08 09:52:56.136497 INFO gang_1_etasje:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:56.135435 INFO gang_1_etasje:  motion_event: received  'state_changed_detection' event from 'light.taklys_bad_2_etg' \|  self.dimming = False
    2022-01-08  09:52:56.134354 INFO gang_1_etasje:  motion_detected: handles cleared  and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:56.133294 INFO gang_1_etasje:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:52:56.132079 INFO gang_1_etasje:  motion_detected: light.taklys_bad_2_etg changed state from off to on
    2022-01-08 09:52:56.127107 INFO spisestue:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:56.125989 INFO spisestue:  motion_event: received  'state_changed_detection' event from 'light.taklys_bad_2_etg' \|  self.dimming = False
    2022-01-08  09:52:56.124863 INFO spisestue:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:56.123862 INFO spisestue:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:52:56.122613 INFO spisestue:  motion_detected: light.taklys_bad_2_etg changed state from off to on
    2022-01-08 09:52:56.118275 INFO kjokken:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:56.117169 INFO kjokken:  motion_event: received  'state_changed_detection' event from 'light.taklys_bad_2_etg' \|  self.dimming = False
    2022-01-08  09:52:56.116028 INFO kjokken:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:56.115009 INFO kjokken:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:52:56.113814 INFO kjokken:  motion_detected: light.taklys_bad_2_etg changed state from off to on
    2022-01-08 09:52:56.109426 INFO trapp:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:56.108247 INFO trapp:  motion_event: received  'state_changed_detection' event from 'light.taklys_bad_2_etg' \|  self.dimming = False
    2022-01-08  09:52:56.107120 INFO trapp:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:56.106067 INFO trapp:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:52:56.104901 INFO trapp:  motion_detected: light.taklys_bad_2_etg changed state from off to on
    2022-01-08 09:52:56.099927 INFO trapp:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:56.098804 INFO trapp:  motion_event: received  'state_changed_detection' event from 'light.taklys_bad_2_etg' \|  self.dimming = False
    2022-01-08  09:52:56.097669 INFO trapp:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:56.096634 INFO trapp:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:52:56.095477 INFO trapp:  motion_detected: light.taklys_bad_2_etg changed state from off to on
    2022-01-08 09:52:56.095347 INFO trapp: Previous message repeated 1 times
    2022-01-08  09:52:56.056825 INFO bad_1_etasje: 💡 Bad_1_etasje turned  on → brightness: 95% \| delay: 5min
    2022-01-08  09:52:56.052097 INFO bad_1_etasje: 💡 Bad_1_etasje turned  on → brightness: 95% \| delay: 5min
    2022-01-08  09:52:56.019743 INFO bad_1_etasje: 💡 Bad_1_etasje turned  on → brightness: 95% \| delay: 5min
    2022-01-08  09:52:56.003812 INFO spisestue:  motion_event: light in Spisestue  already on → refreshing timer \| self.dimming = False
    2022-01-08  09:52:55.995929 INFO bad_1_etasje: 💡 Bad_1_etasje turned  on → brightness: 95% \| delay: 5min
    2022-01-08  09:52:55.958431 INFO bad_2_etasje:  motion_event: light in Bad_2_etasje  already on → refreshing timer \| self.dimming = False
    2022-01-08  09:52:55.957010 INFO bad_1_etasje:  lights_on:  self.thresholds.get(EntityType.ILLUMINANCE.idx) = None \| self.dimming =  False \| force = False \| bool(force or self.dimming) = False
    2022-01-08 09:52:55.955778 INFO bad_1_etasje:  motion_event: switching on \| self.dimming = False
    2022-01-08 09:52:55.955621 INFO bad_1_etasje: Previous message repeated 1 times
    2022-01-08 09:52:55.947203 INFO kjokken:  motion_event: light in Kitchen already on → refreshing timer \| self.dimming = False
    2022-01-08 09:52:55.917456 INFO bad_1_etasje: Previous message repeated 1 times
    2022-01-08  09:52:55.898851 INFO spisestue:  motion_event: light in Spisestue  already on → refreshing timer \| self.dimming = False
    2022-01-08 09:52:55.861204 INFO vaskerom:  motion_event: light in Vaskerom already on → refreshing timer \| self.dimming = False
    2022-01-08  09:52:55.853099 INFO gang_2_etasje:  motion_event: light in  Gang_2_etasje already on → refreshing timer \| self.dimming = False
    2022-01-08  09:52:55.846692 INFO gang_1_etasje_bordlampe:  motion_event: light in  Gang_1_etasje already on → refreshing timer \| self.dimming = False
    2022-01-08  09:52:55.840406 INFO gang_1_etasje:  motion_event: light in  Gang_1_etasje already on → refreshing timer \| self.dimming = False
    2022-01-08 09:52:55.826094 INFO trapp:  motion_event: light in Trapp already on → refreshing timer \| self.dimming = False
    2022-01-08 09:52:55.825872 INFO trapp: Previous message repeated 1 times
    2022-01-08 09:52:55.776143 INFO AppDaemon: Previous message repeated 1 times
    2022-01-08  09:52:55.751383 INFO bad_2_etasje:  motion_event: light in Bad_2_etasje  already on → refreshing timer \| self.dimming = False
    2022-01-08  09:52:55.749870 INFO bad_1_etasje:  lights_on:  self.thresholds.get(EntityType.ILLUMINANCE.idx) = None \| self.dimming =  False \| force = False \| bool(force or self.dimming) = False
    2022-01-08 09:52:55.748722 INFO bad_1_etasje:  motion_event: switching on \| self.dimming = False
    2022-01-08 09:52:55.741540 INFO kjokken:  motion_event: light in Kitchen already on → refreshing timer \| self.dimming = False
    2022-01-08 09:52:55.664298 INFO vaskerom:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:55.663198 INFO vaskerom:  motion_event: received  'state_changed_detection' event from  'light.bad_2_etasje_speillys_bad_2_etg_dimmer' \| self.dimming = False
    2022-01-08  09:52:55.662062 INFO vaskerom:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:55.661005 INFO vaskerom:  clear_handles: cancelled scheduled callbacks
    2022-01-08  09:52:55.659826 INFO vaskerom:  motion_detected:  light.bad_2_etasje_speillys_bad_2_etg_dimmer changed state from off to  on
    2022-01-08 09:52:55.655233 INFO bad_2_etasje:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:55.653577 INFO bad_2_etasje:  motion_event: received  'state_changed_detection' event from  'light.bad_2_etasje_speillys_bad_2_etg_dimmer' \| self.dimming = False
    2022-01-08  09:52:55.651385 INFO bad_2_etasje:  motion_detected: handles cleared  and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:55.649342 INFO bad_2_etasje:  clear_handles: cancelled scheduled callbacks
    2022-01-08  09:52:55.647170 INFO bad_2_etasje:  motion_detected:  light.bad_2_etasje_speillys_bad_2_etg_dimmer changed state from off to  on
    2022-01-08 09:52:55.642108 INFO bad_1_etasje:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:55.640467 INFO bad_1_etasje:  motion_event: received  'state_changed_detection' event from  'light.bad_2_etasje_speillys_bad_2_etg_dimmer' \| self.dimming = False
    2022-01-08  09:52:55.638533 INFO bad_1_etasje:  motion_detected: handles cleared  and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:55.636534 INFO bad_1_etasje:  clear_handles: cancelled scheduled callbacks
    2022-01-08  09:52:55.634297 INFO bad_1_etasje:  motion_detected:  light.bad_2_etasje_speillys_bad_2_etg_dimmer changed state from off to  on
    2022-01-08 09:52:55.629063 INFO gang_2_etasje:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:55.627984 INFO gang_2_etasje:  motion_event: received  'state_changed_detection' event from  'light.bad_2_etasje_speillys_bad_2_etg_dimmer' \| self.dimming = False
    2022-01-08  09:52:55.626834 INFO gang_2_etasje:  motion_detected: handles cleared  and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:55.625785 INFO gang_2_etasje:  clear_handles: cancelled scheduled callbacks
    2022-01-08  09:52:55.624650 INFO gang_2_etasje:  motion_detected:  light.bad_2_etasje_speillys_bad_2_etg_dimmer changed state from off to  on
    2022-01-08 09:52:55.620553 INFO gang_1_etasje_bordlampe:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:55.619184 INFO gang_1_etasje_bordlampe:  motion_event: received  'state_changed_detection' event from  'light.bad_2_etasje_speillys_bad_2_etg_dimmer' \| self.dimming = False
    2022-01-08  09:52:55.618044 INFO gang_1_etasje_bordlampe:  motion_detected: handles  cleared and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:55.616912 INFO gang_1_etasje_bordlampe:  clear_handles: cancelled scheduled callbacks
    2022-01-08  09:52:55.615606 INFO gang_1_etasje_bordlampe:  motion_detected:  light.bad_2_etasje_speillys_bad_2_etg_dimmer changed state from off to  on
    2022-01-08 09:52:55.611148 INFO gang_1_etasje:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:55.610026 INFO gang_1_etasje:  motion_event: received  'state_changed_detection' event from  'light.bad_2_etasje_speillys_bad_2_etg_dimmer' \| self.dimming = False
    2022-01-08  09:52:55.608886 INFO gang_1_etasje:  motion_detected: handles cleared  and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:55.607795 INFO gang_1_etasje:  clear_handles: cancelled scheduled callbacks
    2022-01-08  09:52:55.606588 INFO gang_1_etasje:  motion_detected:  light.bad_2_etasje_speillys_bad_2_etg_dimmer changed state from off to  on
    2022-01-08 09:52:55.602114 INFO spisestue:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:55.600947 INFO spisestue:  motion_event: received  'state_changed_detection' event from  'light.bad_2_etasje_speillys_bad_2_etg_dimmer' \| self.dimming = False
    2022-01-08  09:52:55.599762 INFO spisestue:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:55.598630 INFO spisestue:  clear_handles: cancelled scheduled callbacks
    2022-01-08  09:52:55.597114 INFO spisestue:  motion_detected:  light.bad_2_etasje_speillys_bad_2_etg_dimmer changed state from off to  on
    2022-01-08 09:52:55.591301 INFO kjokken:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:55.588412 INFO kjokken:  motion_event: received  'state_changed_detection' event from  'light.bad_2_etasje_speillys_bad_2_etg_dimmer' \| self.dimming = False
    2022-01-08  09:52:55.586691 INFO kjokken:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:55.585571 INFO kjokken:  clear_handles: cancelled scheduled callbacks
    2022-01-08  09:52:55.584386 INFO kjokken:  motion_detected:  light.bad_2_etasje_speillys_bad_2_etg_dimmer changed state from off to  on
    2022-01-08 09:52:55.580376 INFO trapp:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:55.579319 INFO trapp:  motion_event: received  'state_changed_detection' event from  'light.bad_2_etasje_speillys_bad_2_etg_dimmer' \| self.dimming = False
    2022-01-08  09:52:55.578166 INFO trapp:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:55.576748 INFO trapp:  clear_handles: cancelled scheduled callbacks
    2022-01-08  09:52:55.575064 INFO trapp:  motion_detected:  light.bad_2_etasje_speillys_bad_2_etg_dimmer changed state from off to  on
    2022-01-08 09:52:55.571042 INFO trapp:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:55.569916 INFO trapp:  motion_event: received  'state_changed_detection' event from  'light.bad_2_etasje_speillys_bad_2_etg_dimmer' \| self.dimming = False
    2022-01-08  09:52:55.568757 INFO trapp:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:55.567690 INFO trapp:  clear_handles: cancelled scheduled callbacks
    2022-01-08  09:52:55.566502 INFO trapp:  motion_detected:  light.bad_2_etasje_speillys_bad_2_etg_dimmer changed state from off to  on
    2022-01-08 09:52:55.566358 INFO trapp: Previous message repeated 1 times
    2022-01-08 09:52:55.490855 INFO vaskerom:  motion_event: light in Vaskerom already on → refreshing timer \| self.dimming = False
    2022-01-08  09:52:55.483802 INFO gang_2_etasje:  motion_event: light in  Gang_2_etasje already on → refreshing timer \| self.dimming = False
    2022-01-08  09:52:55.477771 INFO gang_1_etasje_bordlampe:  motion_event: light in  Gang_1_etasje already on → refreshing timer \| self.dimming = False
    2022-01-08  09:52:55.470102 INFO gang_1_etasje:  motion_event: light in  Gang_1_etasje already on → refreshing timer \| self.dimming = False
    2022-01-08 09:52:55.453630 INFO trapp:  motion_event: light in Trapp already on → refreshing timer \| self.dimming = False
    2022-01-08 09:52:55.453434 INFO trapp: Previous message repeated 1 times
    2022-01-08 09:52:55.414909 INFO AppDaemon: Previous message repeated 1 times
    2022-01-08 09:52:55.350625 INFO vaskerom:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:55.348874 INFO vaskerom:  motion_event: received  'state_changed_detection' event from 'light.speillys_bad_2_etg' \|  self.dimming = False
    2022-01-08  09:52:55.347570 INFO vaskerom:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:55.346356 INFO vaskerom:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:52:55.344762 INFO vaskerom:  motion_detected: light.speillys_bad_2_etg changed state from off to on
    2022-01-08 09:52:55.340779 INFO bad_2_etasje:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:55.339731 INFO bad_2_etasje:  motion_event: received  'state_changed_detection' event from 'light.speillys_bad_2_etg' \|  self.dimming = False
    2022-01-08  09:52:55.338673 INFO bad_2_etasje:  motion_detected: handles cleared  and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:55.337685 INFO bad_2_etasje:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:52:55.336584 INFO bad_2_etasje:  motion_detected: light.speillys_bad_2_etg changed state from off to on
    2022-01-08 09:52:55.332497 INFO bad_1_etasje:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:55.331411 INFO bad_1_etasje:  motion_event: received  'state_changed_detection' event from 'light.speillys_bad_2_etg' \|  self.dimming = False
    2022-01-08  09:52:55.330297 INFO bad_1_etasje:  motion_detected: handles cleared  and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:55.329248 INFO bad_1_etasje:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:52:55.328019 INFO bad_1_etasje:  motion_detected: light.speillys_bad_2_etg changed state from off to on
    2022-01-08 09:52:55.323568 INFO gang_2_etasje:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:55.322494 INFO gang_2_etasje:  motion_event: received  'state_changed_detection' event from 'light.speillys_bad_2_etg' \|  self.dimming = False
    2022-01-08  09:52:55.321418 INFO gang_2_etasje:  motion_detected: handles cleared  and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:55.320358 INFO gang_2_etasje:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:52:55.318980 INFO gang_2_etasje:  motion_detected: light.speillys_bad_2_etg changed state from off to on
    2022-01-08 09:52:55.314654 INFO gang_1_etasje_bordlampe:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:55.313568 INFO gang_1_etasje_bordlampe:  motion_event: received  'state_changed_detection' event from 'light.speillys_bad_2_etg' \|  self.dimming = False
    2022-01-08  09:52:55.312069 INFO gang_1_etasje_bordlampe:  motion_detected: handles  cleared and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:55.310119 INFO gang_1_etasje_bordlampe:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:52:55.308784 INFO gang_1_etasje_bordlampe:  motion_detected: light.speillys_bad_2_etg changed state from off to on
    2022-01-08 09:52:55.304820 INFO gang_1_etasje:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:55.303730 INFO gang_1_etasje:  motion_event: received  'state_changed_detection' event from 'light.speillys_bad_2_etg' \|  self.dimming = False
    2022-01-08  09:52:55.302517 INFO gang_1_etasje:  motion_detected: handles cleared  and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:55.300532 INFO gang_1_etasje:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:52:55.298258 INFO gang_1_etasje:  motion_detected: light.speillys_bad_2_etg changed state from off to on
    2022-01-08 09:52:55.290072 INFO spisestue:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:55.287540 INFO spisestue:  motion_event: received  'state_changed_detection' event from 'light.speillys_bad_2_etg' \|  self.dimming = False
    2022-01-08  09:52:55.285448 INFO spisestue:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:55.284129 INFO spisestue:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:52:55.282623 INFO spisestue:  motion_detected: light.speillys_bad_2_etg changed state from off to on
    2022-01-08 09:52:55.278475 INFO kjokken:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:55.277408 INFO kjokken:  motion_event: received  'state_changed_detection' event from 'light.speillys_bad_2_etg' \|  self.dimming = False
    2022-01-08  09:52:55.276231 INFO kjokken:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:55.275153 INFO kjokken:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:52:55.273980 INFO kjokken:  motion_detected: light.speillys_bad_2_etg changed state from off to on
    2022-01-08 09:52:55.269234 INFO trapp:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:55.268127 INFO trapp:  motion_event: received  'state_changed_detection' event from 'light.speillys_bad_2_etg' \|  self.dimming = False
    2022-01-08  09:52:55.267009 INFO trapp:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:55.265958 INFO trapp:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:52:55.264792 INFO trapp:  motion_detected: light.speillys_bad_2_etg changed state from off to on
    2022-01-08 09:52:55.260896 INFO trapp:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:55.259778 INFO trapp:  motion_event: received  'state_changed_detection' event from 'light.speillys_bad_2_etg' \|  self.dimming = False
    2022-01-08  09:52:55.258678 INFO trapp:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:55.257670 INFO trapp:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:52:55.255957 INFO trapp:  motion_detected: light.speillys_bad_2_etg changed state from off to on
    2022-01-08 09:52:55.255795 INFO trapp: Previous message repeated 1 times
    2022-01-08  09:52:55.179250 INFO bad_2_etasje: 💡 Bad_2_etasje turned  on → brightness: 95% \| delay: 5min
    2022-01-08  09:52:55.170861 INFO bad_1_etasje: 💡 Bad_1_etasje turned  on → brightness: 95% \| delay: 5min
    2022-01-08  09:52:55.160742 INFO bad_2_etasje: 💡 Bad_2_etasje turned  on → brightness: 95% \| delay: 5min
    2022-01-08  09:52:55.157914 INFO bad_1_etasje: 💡 Bad_1_etasje turned  on → brightness: 95% \| delay: 5min
    2022-01-08  09:52:55.110693 INFO bad_2_etasje: 💡 Bad_2_etasje turned  on → brightness: 95% \| delay: 5min
    2022-01-08  09:52:55.103867 INFO bad_1_etasje: 💡 Bad_1_etasje turned  on → brightness: 95% \| delay: 5min
    2022-01-08  09:52:55.085796 INFO spisestue:  motion_event: light in Spisestue  already on → refreshing timer \| self.dimming = False
    2022-01-08  09:52:55.078927 INFO bad_2_etasje: 💡 Bad_2_etasje turned  on → brightness: 95% \| delay: 5min
    2022-01-08  09:52:55.077353 INFO bad_1_etasje: 💡 Bad_1_etasje turned  on → brightness: 95% \| delay: 5min
    2022-01-08  09:52:55.054180 INFO bad_2_etasje:  lights_on:  self.thresholds.get(EntityType.ILLUMINANCE.idx) = None \| self.dimming =  False \| force = False \| bool(force or self.dimming) = False
    2022-01-08 09:52:55.052981 INFO bad_2_etasje:  motion_event: switching on \| self.dimming = False
    2022-01-08 09:52:55.052827 INFO bad_2_etasje: Previous message repeated 1 times
    2022-01-08  09:52:55.050995 INFO bad_1_etasje:  lights_on:  self.thresholds.get(EntityType.ILLUMINANCE.idx) = None \| self.dimming =  False \| force = False \| bool(force or self.dimming) = False
    2022-01-08 09:52:55.049204 INFO bad_1_etasje:  motion_event: switching on \| self.dimming = False
    2022-01-08 09:52:55.048986 INFO bad_1_etasje: Previous message repeated 1 times
    2022-01-08 09:52:55.037466 INFO kjokken:  motion_event: light in Kitchen already on → refreshing timer \| self.dimming = False
    2022-01-08 09:52:55.005355 INFO bad_2_etasje: Previous message repeated 1 times
    2022-01-08 09:52:55.004691 INFO bad_1_etasje: Previous message repeated 1 times
    2022-01-08  09:52:54.986057 INFO spisestue:  motion_event: light in Spisestue  already on → refreshing timer \| self.dimming = False
    2022-01-08 09:52:54.942665 INFO vaskerom:  motion_event: light in Vaskerom already on → refreshing timer \| self.dimming = False
    2022-01-08  09:52:54.932716 INFO gang_2_etasje:  motion_event: light in  Gang_2_etasje already on → refreshing timer \| self.dimming = False
    2022-01-08  09:52:54.924138 INFO gang_1_etasje_bordlampe:  motion_event: light in  Gang_1_etasje already on → refreshing timer \| self.dimming = False
    2022-01-08  09:52:54.918080 INFO gang_1_etasje:  motion_event: light in  Gang_1_etasje already on → refreshing timer \| self.dimming = False
    2022-01-08 09:52:54.903402 INFO trapp:  motion_event: light in Trapp already on → refreshing timer \| self.dimming = False
    2022-01-08 09:52:54.903232 INFO trapp: Previous message repeated 1 times
    2022-01-08 09:52:54.848090 INFO AppDaemon: Previous message repeated 1 times
    2022-01-08  09:52:54.836191 INFO bad_2_etasje:  lights_on:  self.thresholds.get(EntityType.ILLUMINANCE.idx) = None \| self.dimming =  False \| force = False \| bool(force or self.dimming) = False
    2022-01-08 09:52:54.834952 INFO bad_2_etasje:  motion_event: switching on \| self.dimming = False
    2022-01-08  09:52:54.833479 INFO bad_1_etasje:  lights_on:  self.thresholds.get(EntityType.ILLUMINANCE.idx) = None \| self.dimming =  False \| force = False \| bool(force or self.dimming) = False
    2022-01-08 09:52:54.832276 INFO bad_1_etasje:  motion_event: switching on \| self.dimming = False
    2022-01-08 09:52:54.825957 INFO kjokken:  motion_event: light in Kitchen already on → refreshing timer \| self.dimming = False
    2022-01-08 09:52:54.761827 INFO vaskerom:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:54.760686 INFO vaskerom:  motion_event: received  'state_changed_detection' event from  'light.gang_2_etasje_taklys_gang_1_etg_dimmer' \| self.dimming = False
    2022-01-08  09:52:54.759464 INFO vaskerom:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:54.758385 INFO vaskerom:  clear_handles: cancelled scheduled callbacks
    2022-01-08  09:52:54.757147 INFO vaskerom:  motion_detected:  light.gang_2_etasje_taklys_gang_1_etg_dimmer changed state from off to  on
    2022-01-08 09:52:54.752797 INFO bad_2_etasje:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:54.751269 INFO bad_2_etasje:  motion_event: received  'state_changed_detection' event from  'light.gang_2_etasje_taklys_gang_1_etg_dimmer' \| self.dimming = False
    2022-01-08  09:52:54.749123 INFO bad_2_etasje:  motion_detected: handles cleared  and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:54.748061 INFO bad_2_etasje:  clear_handles: cancelled scheduled callbacks
    2022-01-08  09:52:54.746896 INFO bad_2_etasje:  motion_detected:  light.gang_2_etasje_taklys_gang_1_etg_dimmer changed state from off to  on
    2022-01-08 09:52:54.742699 INFO bad_1_etasje:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:54.740534 INFO bad_1_etasje:  motion_event: received  'state_changed_detection' event from  'light.gang_2_etasje_taklys_gang_1_etg_dimmer' \| self.dimming = False
    2022-01-08  09:52:54.739170 INFO bad_1_etasje:  motion_detected: handles cleared  and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:54.738001 INFO bad_1_etasje:  clear_handles: cancelled scheduled callbacks
    2022-01-08  09:52:54.736812 INFO bad_1_etasje:  motion_detected:  light.gang_2_etasje_taklys_gang_1_etg_dimmer changed state from off to  on
    2022-01-08 09:52:54.732169 INFO gang_2_etasje:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:54.731060 INFO gang_2_etasje:  motion_event: received  'state_changed_detection' event from  'light.gang_2_etasje_taklys_gang_1_etg_dimmer' \| self.dimming = False
    2022-01-08  09:52:54.729911 INFO gang_2_etasje:  motion_detected: handles cleared  and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:54.728832 INFO gang_2_etasje:  clear_handles: cancelled scheduled callbacks
    2022-01-08  09:52:54.727748 INFO gang_2_etasje:  motion_detected:  light.gang_2_etasje_taklys_gang_1_etg_dimmer changed state from off to  on
    2022-01-08 09:52:54.723754 INFO gang_1_etasje_bordlampe:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:54.722693 INFO gang_1_etasje_bordlampe:  motion_event: received  'state_changed_detection' event from  'light.gang_2_etasje_taklys_gang_1_etg_dimmer' \| self.dimming = False
    2022-01-08  09:52:54.721597 INFO gang_1_etasje_bordlampe:  motion_detected: handles  cleared and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:54.720538 INFO gang_1_etasje_bordlampe:  clear_handles: cancelled scheduled callbacks
    2022-01-08  09:52:54.719374 INFO gang_1_etasje_bordlampe:  motion_detected:  light.gang_2_etasje_taklys_gang_1_etg_dimmer changed state from off to  on
    2022-01-08 09:52:54.715070 INFO gang_1_etasje:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:54.713957 INFO gang_1_etasje:  motion_event: received  'state_changed_detection' event from  'light.gang_2_etasje_taklys_gang_1_etg_dimmer' \| self.dimming = False
    2022-01-08  09:52:54.712828 INFO gang_1_etasje:  motion_detected: handles cleared  and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:54.711775 INFO gang_1_etasje:  clear_handles: cancelled scheduled callbacks
    2022-01-08  09:52:54.710530 INFO gang_1_etasje:  motion_detected:  light.gang_2_etasje_taklys_gang_1_etg_dimmer changed state from off to  on
    2022-01-08 09:52:54.705975 INFO spisestue:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:54.704838 INFO spisestue:  motion_event: received  'state_changed_detection' event from  'light.gang_2_etasje_taklys_gang_1_etg_dimmer' \| self.dimming = False
    2022-01-08  09:52:54.703674 INFO spisestue:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:54.702640 INFO spisestue:  clear_handles: cancelled scheduled callbacks
    2022-01-08  09:52:54.701496 INFO spisestue:  motion_detected:  light.gang_2_etasje_taklys_gang_1_etg_dimmer changed state from off to  on
    2022-01-08 09:52:54.697699 INFO kjokken:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:54.696588 INFO kjokken:  motion_event: received  'state_changed_detection' event from  'light.gang_2_etasje_taklys_gang_1_etg_dimmer' \| self.dimming = False
    2022-01-08  09:52:54.695497 INFO kjokken:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:54.694495 INFO kjokken:  clear_handles: cancelled scheduled callbacks
    2022-01-08  09:52:54.693413 INFO kjokken:  motion_detected:  light.gang_2_etasje_taklys_gang_1_etg_dimmer changed state from off to  on
    2022-01-08 09:52:54.689404 INFO trapp:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:54.688338 INFO trapp:  motion_event: received  'state_changed_detection' event from  'light.gang_2_etasje_taklys_gang_1_etg_dimmer' \| self.dimming = False
    2022-01-08  09:52:54.687225 INFO trapp:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:54.686174 INFO trapp:  clear_handles: cancelled scheduled callbacks
    2022-01-08  09:52:54.685022 INFO trapp:  motion_detected:  light.gang_2_etasje_taklys_gang_1_etg_dimmer changed state from off to  on
    2022-01-08 09:52:54.681212 INFO trapp:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:54.680084 INFO trapp:  motion_event: received  'state_changed_detection' event from  'light.gang_2_etasje_taklys_gang_1_etg_dimmer' \| self.dimming = False
    2022-01-08  09:52:54.678970 INFO trapp:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:54.677925 INFO trapp:  clear_handles: cancelled scheduled callbacks
    2022-01-08  09:52:54.676814 INFO trapp:  motion_detected:  light.gang_2_etasje_taklys_gang_1_etg_dimmer changed state from off to  on
    2022-01-08 09:52:54.676685 INFO trapp: Previous message repeated 1 times
    2022-01-08 09:52:54.610329 INFO vaskerom:  motion_event: light in Vaskerom already on → refreshing timer \| self.dimming = False
    2022-01-08  09:52:54.600404 INFO gang_2_etasje:  motion_event: light in  Gang_2_etasje already on → refreshing timer \| self.dimming = False
    2022-01-08  09:52:54.591391 INFO gang_1_etasje_bordlampe:  motion_event: light in  Gang_1_etasje already on → refreshing timer \| self.dimming = False
    2022-01-08  09:52:54.583589 INFO gang_1_etasje:  motion_event: light in  Gang_1_etasje already on → refreshing timer \| self.dimming = False
    2022-01-08 09:52:54.569503 INFO trapp:  motion_event: light in Trapp already on → refreshing timer \| self.dimming = False
    2022-01-08 09:52:54.569330 INFO trapp: Previous message repeated 1 times
    2022-01-08 09:52:54.539216 INFO AppDaemon: Previous message repeated 1 times
    2022-01-08 09:52:54.481050 INFO vaskerom:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:54.479936 INFO vaskerom:  motion_event: received  'state_changed_detection' event from 'light.taklys_gang_2_etg' \|  self.dimming = False
    2022-01-08  09:52:54.478800 INFO vaskerom:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:54.477565 INFO vaskerom:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:52:54.476393 INFO vaskerom:  motion_detected: light.taklys_gang_2_etg changed state from off to on
    2022-01-08 09:52:54.472653 INFO bad_2_etasje:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:54.471600 INFO bad_2_etasje:  motion_event: received  'state_changed_detection' event from 'light.taklys_gang_2_etg' \|  self.dimming = False
    2022-01-08  09:52:54.470523 INFO bad_2_etasje:  motion_detected: handles cleared  and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:54.469492 INFO bad_2_etasje:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:52:54.468350 INFO bad_2_etasje:  motion_detected: light.taklys_gang_2_etg changed state from off to on
    2022-01-08 09:52:54.464297 INFO bad_1_etasje:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:54.463153 INFO bad_1_etasje:  motion_event: received  'state_changed_detection' event from 'light.taklys_gang_2_etg' \|  self.dimming = False
    2022-01-08  09:52:54.461926 INFO bad_1_etasje:  motion_detected: handles cleared  and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:54.460061 INFO bad_1_etasje:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:52:54.458202 INFO bad_1_etasje:  motion_detected: light.taklys_gang_2_etg changed state from off to on
    2022-01-08 09:52:54.452230 INFO gang_2_etasje:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:54.450356 INFO gang_2_etasje:  motion_event: received  'state_changed_detection' event from 'light.taklys_gang_2_etg' \|  self.dimming = False
    2022-01-08  09:52:54.448367 INFO gang_2_etasje:  motion_detected: handles cleared  and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:54.446293 INFO gang_2_etasje:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:52:54.444093 INFO gang_2_etasje:  motion_detected: light.taklys_gang_2_etg changed state from off to on
    2022-01-08 09:52:54.438767 INFO gang_1_etasje_bordlampe:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:54.436790 INFO gang_1_etasje_bordlampe:  motion_event: received  'state_changed_detection' event from 'light.taklys_gang_2_etg' \|  self.dimming = False
    2022-01-08  09:52:54.435060 INFO gang_1_etasje_bordlampe:  motion_detected: handles  cleared and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:54.433697 INFO gang_1_etasje_bordlampe:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:52:54.432450 INFO gang_1_etasje_bordlampe:  motion_detected: light.taklys_gang_2_etg changed state from off to on
    2022-01-08 09:52:54.428290 INFO gang_1_etasje:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:54.427215 INFO gang_1_etasje:  motion_event: received  'state_changed_detection' event from 'light.taklys_gang_2_etg' \|  self.dimming = False
    2022-01-08  09:52:54.426094 INFO gang_1_etasje:  motion_detected: handles cleared  and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:54.425087 INFO gang_1_etasje:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:52:54.423971 INFO gang_1_etasje:  motion_detected: light.taklys_gang_2_etg changed state from off to on
    2022-01-08 09:52:54.419747 INFO spisestue:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:54.418594 INFO spisestue:  motion_event: received  'state_changed_detection' event from 'light.taklys_gang_2_etg' \|  self.dimming = False
    2022-01-08  09:52:54.417108 INFO spisestue:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:54.415581 INFO spisestue:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:52:54.413759 INFO spisestue:  motion_detected: light.taklys_gang_2_etg changed state from off to on
    2022-01-08 09:52:54.408183 INFO kjokken:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:54.406816 INFO kjokken:  motion_event: received  'state_changed_detection' event from 'light.taklys_gang_2_etg' \|  self.dimming = False
    2022-01-08  09:52:54.404996 INFO kjokken:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:54.403888 INFO kjokken:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:52:54.402650 INFO kjokken:  motion_detected: light.taklys_gang_2_etg changed state from off to on
    2022-01-08 09:52:54.398362 INFO trapp:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:54.397133 INFO trapp:  motion_event: received  'state_changed_detection' event from 'light.taklys_gang_2_etg' \|  self.dimming = False
    2022-01-08  09:52:54.395835 INFO trapp:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:54.394008 INFO trapp:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:52:54.392556 INFO trapp:  motion_detected: light.taklys_gang_2_etg changed state from off to on
    2022-01-08 09:52:54.388189 INFO trapp:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:54.387053 INFO trapp:  motion_event: received  'state_changed_detection' event from 'light.taklys_gang_2_etg' \|  self.dimming = False
    2022-01-08  09:52:54.385546 INFO trapp:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:54.384531 INFO trapp:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:52:54.383320 INFO trapp:  motion_detected: light.taklys_gang_2_etg changed state from off to on
    2022-01-08 09:52:54.383178 INFO trapp: Previous message repeated 1 times
    2022-01-08  09:52:54.335986 INFO bad_2_etasje: 💡 Bad_2_etasje turned  on → brightness: 95% \| delay: 5min
    2022-01-08  09:52:54.329449 INFO bad_1_etasje: 💡 Bad_1_etasje turned  on → brightness: 95% \| delay: 5min
    2022-01-08  09:52:54.324488 INFO bad_2_etasje: 💡 Bad_2_etasje turned  on → brightness: 95% \| delay: 5min
    2022-01-08  09:52:54.323034 INFO bad_1_etasje: 💡 Bad_1_etasje turned  on → brightness: 95% \| delay: 5min
    2022-01-08  09:52:54.292419 INFO spisestue:  motion_event: light in Spisestue  already on → refreshing timer \| self.dimming = False
    2022-01-08  09:52:54.269831 INFO bad_2_etasje: 💡 Bad_2_etasje turned  on → brightness: 95% \| delay: 5min
    2022-01-08  09:52:54.260680 INFO bad_1_etasje: 💡 Bad_1_etasje turned  on → brightness: 95% \| delay: 5min
    2022-01-08  09:52:54.248049 INFO gang_2_etasje: 💡 Gang_2_etasje turned  on → brightness: 80% \| delay: 2min
    2022-01-08  09:52:54.236395 INFO bad_2_etasje: 💡 Bad_2_etasje turned  on → brightness: 95% \| delay: 5min
    2022-01-08  09:52:54.234920 INFO bad_1_etasje: 💡 Bad_1_etasje turned  on → brightness: 95% \| delay: 5min
    2022-01-08  09:52:54.229490 INFO bad_2_etasje:  lights_on:  self.thresholds.get(EntityType.ILLUMINANCE.idx) = None \| self.dimming =  False \| force = False \| bool(force or self.dimming) = False
    2022-01-08 09:52:54.228281 INFO bad_2_etasje:  motion_event: switching on \| self.dimming = False
    2022-01-08  09:52:54.226824 INFO bad_1_etasje:  lights_on:  self.thresholds.get(EntityType.ILLUMINANCE.idx) = None \| self.dimming =  False \| force = False \| bool(force or self.dimming) = False
    2022-01-08 09:52:54.225709 INFO bad_1_etasje:  motion_event: switching on \| self.dimming = False
    2022-01-08 09:52:54.219177 INFO kjokken:  motion_event: light in Kitchen already on → refreshing timer \| self.dimming = False
    2022-01-08 09:52:54.217570 INFO bad_2_etasje: Previous message repeated 1 times
    2022-01-08 09:52:54.217129 INFO bad_1_etasje: Previous message repeated 1 times
    2022-01-08 09:52:54.170025 INFO bad_2_etasje: Previous message repeated 1 times
    2022-01-08 09:52:54.169569 INFO bad_1_etasje: Previous message repeated 1 times
    2022-01-08 09:52:54.158828 INFO vaskerom:  motion_event: light in Vaskerom already on → refreshing timer \| self.dimming = False
    2022-01-08  09:52:54.156592 INFO gang_2_etasje:  lights_on:  self.thresholds.get(EntityType.ILLUMINANCE.idx) = None \| self.dimming =  False \| force = False \| bool(force or self.dimming) = False
    2022-01-08 09:52:54.155297 INFO gang_2_etasje:  motion_event: switching on \| self.dimming = False
    2022-01-08  09:52:54.146287 INFO gang_1_etasje_bordlampe:  motion_event: light in  Gang_1_etasje already on → refreshing timer \| self.dimming = False
    2022-01-08  09:52:54.136697 INFO gang_1_etasje:  motion_event: light in  Gang_1_etasje already on → refreshing timer \| self.dimming = False
    2022-01-08 09:52:54.123247 INFO trapp:  motion_event: light in Trapp already on → refreshing timer \| self.dimming = False
    2022-01-08 09:52:54.123074 INFO trapp: Previous message repeated 1 times
    2022-01-08  09:52:54.087682 INFO spisestue:  motion_event: light in Spisestue  already on → refreshing timer \| self.dimming = False
    2022-01-08 09:52:54.070396 INFO AppDaemon: Previous message repeated 1 times
    2022-01-08  09:52:54.002111 INFO gang_2_etasje: 💡 Gang_2_etasje turned  on → brightness: 80% \| delay: 2min
    2022-01-08 09:52:53.989648 INFO vaskerom:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:53.988592 INFO vaskerom:  motion_event: received  'state_changed_detection' event from  'light.stue_1_etasje_taklampe_stue_1_etg_dimmer' \| self.dimming = False
    2022-01-08  09:52:53.987458 INFO vaskerom:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:53.986436 INFO vaskerom:  clear_handles: cancelled scheduled callbacks
    2022-01-08  09:52:53.984997 INFO vaskerom:  motion_detected:  light.stue_1_etasje_taklampe_stue_1_etg_dimmer changed state from off to  on
    2022-01-08 09:52:53.980743 INFO bad_2_etasje:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:53.979666 INFO bad_2_etasje:  motion_event: received  'state_changed_detection' event from  'light.stue_1_etasje_taklampe_stue_1_etg_dimmer' \| self.dimming = False
    2022-01-08  09:52:53.978122 INFO bad_2_etasje:  motion_detected: handles cleared  and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:53.976293 INFO bad_2_etasje:  clear_handles: cancelled scheduled callbacks
    2022-01-08  09:52:53.974226 INFO bad_2_etasje:  motion_detected:  light.stue_1_etasje_taklampe_stue_1_etg_dimmer changed state from off to  on
    2022-01-08 09:52:53.968122 INFO bad_1_etasje:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:53.966144 INFO bad_1_etasje:  motion_event: received  'state_changed_detection' event from  'light.stue_1_etasje_taklampe_stue_1_etg_dimmer' \| self.dimming = False
    2022-01-08  09:52:53.964118 INFO bad_1_etasje:  motion_detected: handles cleared  and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:53.962158 INFO bad_1_etasje:  clear_handles: cancelled scheduled callbacks
    2022-01-08  09:52:53.959880 INFO bad_1_etasje:  motion_detected:  light.stue_1_etasje_taklampe_stue_1_etg_dimmer changed state from off to  on
    2022-01-08 09:52:53.953702 INFO gang_2_etasje:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:53.951722 INFO gang_2_etasje:  motion_event: received  'state_changed_detection' event from  'light.stue_1_etasje_taklampe_stue_1_etg_dimmer' \| self.dimming = False
    2022-01-08  09:52:53.949704 INFO gang_2_etasje:  motion_detected: handles cleared  and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:53.947694 INFO gang_2_etasje:  clear_handles: cancelled scheduled callbacks
    2022-01-08  09:52:53.945160 INFO gang_2_etasje:  motion_detected:  light.stue_1_etasje_taklampe_stue_1_etg_dimmer changed state from off to  on
    2022-01-08 09:52:53.938483 INFO gang_1_etasje_bordlampe:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:53.936727 INFO gang_1_etasje_bordlampe:  motion_event: received  'state_changed_detection' event from  'light.stue_1_etasje_taklampe_stue_1_etg_dimmer' \| self.dimming = False
    2022-01-08  09:52:53.935554 INFO gang_1_etasje_bordlampe:  motion_detected: handles  cleared and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:53.934424 INFO gang_1_etasje_bordlampe:  clear_handles: cancelled scheduled callbacks
    2022-01-08  09:52:53.933220 INFO gang_1_etasje_bordlampe:  motion_detected:  light.stue_1_etasje_taklampe_stue_1_etg_dimmer changed state from off to  on
    2022-01-08 09:52:53.928834 INFO gang_1_etasje:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:53.927690 INFO gang_1_etasje:  motion_event: received  'state_changed_detection' event from  'light.stue_1_etasje_taklampe_stue_1_etg_dimmer' \| self.dimming = False
    2022-01-08  09:52:53.926534 INFO gang_1_etasje:  motion_detected: handles cleared  and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:53.925446 INFO gang_1_etasje:  clear_handles: cancelled scheduled callbacks
    2022-01-08  09:52:53.924186 INFO gang_1_etasje:  motion_detected:  light.stue_1_etasje_taklampe_stue_1_etg_dimmer changed state from off to  on
    2022-01-08 09:52:53.919737 INFO spisestue:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:53.918579 INFO spisestue:  motion_event: received  'state_changed_detection' event from  'light.stue_1_etasje_taklampe_stue_1_etg_dimmer' \| self.dimming = False
    2022-01-08  09:52:53.917396 INFO spisestue:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:53.916268 INFO spisestue:  clear_handles: cancelled scheduled callbacks
    2022-01-08  09:52:53.914298 INFO spisestue:  motion_detected:  light.stue_1_etasje_taklampe_stue_1_etg_dimmer changed state from off to  on
    2022-01-08 09:52:53.908291 INFO kjokken:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:53.906146 INFO kjokken:  motion_event: received  'state_changed_detection' event from  'light.stue_1_etasje_taklampe_stue_1_etg_dimmer' \| self.dimming = False
    2022-01-08  09:52:53.903970 INFO kjokken:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:53.901909 INFO kjokken:  clear_handles: cancelled scheduled callbacks
    2022-01-08  09:52:53.899686 INFO kjokken:  motion_detected:  light.stue_1_etasje_taklampe_stue_1_etg_dimmer changed state from off to  on
    2022-01-08 09:52:53.895228 INFO trapp:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:53.893928 INFO trapp:  motion_event: received  'state_changed_detection' event from  'light.stue_1_etasje_taklampe_stue_1_etg_dimmer' \| self.dimming = False
    2022-01-08  09:52:53.891929 INFO trapp:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:53.890826 INFO trapp:  clear_handles: cancelled scheduled callbacks
    2022-01-08  09:52:53.889606 INFO trapp:  motion_detected:  light.stue_1_etasje_taklampe_stue_1_etg_dimmer changed state from off to  on
    2022-01-08 09:52:53.884063 INFO trapp:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:53.882917 INFO trapp:  motion_event: received  'state_changed_detection' event from  'light.stue_1_etasje_taklampe_stue_1_etg_dimmer' \| self.dimming = False
    2022-01-08  09:52:53.881752 INFO trapp:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:53.880079 INFO trapp:  clear_handles: cancelled scheduled callbacks
    2022-01-08  09:52:53.878881 INFO trapp:  motion_detected:  light.stue_1_etasje_taklampe_stue_1_etg_dimmer changed state from off to  on
    2022-01-08 09:52:53.878707 INFO trapp: Previous message repeated 1 times
    2022-01-08  09:52:53.841604 INFO bad_2_etasje:  lights_on:  self.thresholds.get(EntityType.ILLUMINANCE.idx) = None \| self.dimming =  False \| force = False \| bool(force or self.dimming) = False
    2022-01-08 09:52:53.840391 INFO bad_2_etasje:  motion_event: switching on \| self.dimming = False
    2022-01-08  09:52:53.838898 INFO bad_1_etasje:  lights_on:  self.thresholds.get(EntityType.ILLUMINANCE.idx) = None \| self.dimming =  False \| force = False \| bool(force or self.dimming) = False
    2022-01-08 09:52:53.837523 INFO bad_1_etasje:  motion_event: switching on \| self.dimming = False
    2022-01-08 09:52:53.830059 INFO kjokken:  motion_event: light in Kitchen already on → refreshing timer \| self.dimming = False
    2022-01-08 09:52:53.757222 INFO vaskerom:  motion_event: light in Vaskerom already on → refreshing timer \| self.dimming = False
    2022-01-08  09:52:53.755295 INFO gang_2_etasje:  lights_on:  self.thresholds.get(EntityType.ILLUMINANCE.idx) = None \| self.dimming =  False \| force = False \| bool(force or self.dimming) = False
    2022-01-08 09:52:53.753941 INFO gang_2_etasje:  motion_event: switching on \| self.dimming = False
    2022-01-08  09:52:53.746377 INFO gang_1_etasje_bordlampe:  motion_event: light in  Gang_1_etasje already on → refreshing timer \| self.dimming = False
    2022-01-08  09:52:53.739897 INFO gang_1_etasje:  motion_event: light in  Gang_1_etasje already on → refreshing timer \| self.dimming = False
    2022-01-08 09:52:53.725551 INFO trapp:  motion_event: light in Trapp already on → refreshing timer \| self.dimming = False
    2022-01-08 09:52:53.725380 INFO trapp: Previous message repeated 1 times
    2022-01-08 09:52:53.694371 INFO AppDaemon: Previous message repeated 1 times
    2022-01-08 09:52:53.626194 INFO vaskerom:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:53.625110 INFO vaskerom:  motion_event: received  'state_changed_detection' event from 'light.taklampe_stue_1_etg'  \| self.dimming = False
    2022-01-08  09:52:53.623815 INFO vaskerom:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:53.622823 INFO vaskerom:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:52:53.621708 INFO vaskerom:  motion_detected: light.taklampe_stue_1_etg changed state from off to on
    2022-01-08 09:52:53.617383 INFO bad_2_etasje:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:53.616267 INFO bad_2_etasje:  motion_event: received  'state_changed_detection' event from 'light.taklampe_stue_1_etg'  \| self.dimming = False
    2022-01-08  09:52:53.615146 INFO bad_2_etasje:  motion_detected: handles cleared  and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:53.614110 INFO bad_2_etasje:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:52:53.612955 INFO bad_2_etasje:  motion_detected: light.taklampe_stue_1_etg changed state from off to on
    2022-01-08 09:52:53.608807 INFO bad_1_etasje:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:53.607753 INFO bad_1_etasje:  motion_event: received  'state_changed_detection' event from 'light.taklampe_stue_1_etg'  \| self.dimming = False
    2022-01-08  09:52:53.606669 INFO bad_1_etasje:  motion_detected: handles cleared  and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:53.605667 INFO bad_1_etasje:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:52:53.604554 INFO bad_1_etasje:  motion_detected: light.taklampe_stue_1_etg changed state from off to on
    2022-01-08 09:52:53.600327 INFO gang_2_etasje:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:53.599225 INFO gang_2_etasje:  motion_event: received  'state_changed_detection' event from 'light.taklampe_stue_1_etg'  \| self.dimming = False
    2022-01-08  09:52:53.597854 INFO gang_2_etasje:  motion_detected: handles cleared  and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:53.596795 INFO gang_2_etasje:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:52:53.595609 INFO gang_2_etasje:  motion_detected: light.taklampe_stue_1_etg changed state from off to on
    2022-01-08 09:52:53.591546 INFO gang_1_etasje_bordlampe:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:53.590465 INFO gang_1_etasje_bordlampe:  motion_event: received  'state_changed_detection' event from 'light.taklampe_stue_1_etg'  \| self.dimming = False
    2022-01-08  09:52:53.589362 INFO gang_1_etasje_bordlampe:  motion_detected: handles  cleared and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:53.588298 INFO gang_1_etasje_bordlampe:  clear_handles: cancelled scheduled callbacks
    2022-01-08  09:52:53.587151 INFO gang_1_etasje_bordlampe:  motion_detected:  light.taklampe_stue_1_etg changed state from off to on
    2022-01-08 09:52:53.582976 INFO gang_1_etasje:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:53.581846 INFO gang_1_etasje:  motion_event: received  'state_changed_detection' event from 'light.taklampe_stue_1_etg'  \| self.dimming = False
    2022-01-08  09:52:53.580721 INFO gang_1_etasje:  motion_detected: handles cleared  and cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:53.579663 INFO gang_1_etasje:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:52:53.578511 INFO gang_1_etasje:  motion_detected: light.taklampe_stue_1_etg changed state from off to on
    2022-01-08 09:52:53.574442 INFO spisestue:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:53.573262 INFO spisestue:  motion_event: received  'state_changed_detection' event from 'light.taklampe_stue_1_etg'  \| self.dimming = False
    2022-01-08  09:52:53.571848 INFO spisestue:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:53.570722 INFO spisestue:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:52:53.569472 INFO spisestue:  motion_detected: light.taklampe_stue_1_etg changed state from off to on
    2022-01-08 09:52:53.564727 INFO kjokken:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:53.563424 INFO kjokken:  motion_event: received  'state_changed_detection' event from 'light.taklampe_stue_1_etg'  \| self.dimming = False
    2022-01-08  09:52:53.562072 INFO kjokken:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:53.560819 INFO kjokken:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:52:53.559353 INFO kjokken:  motion_detected: light.taklampe_stue_1_etg changed state from off to on
    2022-01-08 09:52:53.554218 INFO trapp:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:53.552481 INFO trapp:  motion_event: received  'state_changed_detection' event from 'light.taklampe_stue_1_etg'  \| self.dimming = False
    2022-01-08  09:52:53.549738 INFO trapp:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:53.547892 INFO trapp:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:52:53.546205 INFO trapp:  motion_detected: light.taklampe_stue_1_etg changed state from off to on
    2022-01-08 09:52:53.539877 INFO trapp:  motion_event: await self.is_disabled() = False \| self.dimming = False
    2022-01-08  09:52:53.537569 INFO trapp:  motion_event: received  'state_changed_detection' event from 'light.taklampe_stue_1_etg'  \| self.dimming = False
    2022-01-08  09:52:53.535711 INFO trapp:  motion_detected: handles cleared and  cancelled all scheduled timers \| self.dimming = False
    2022-01-08 09:52:53.533987 INFO trapp:  clear_handles: cancelled scheduled callbacks
    2022-01-08 09:52:53.532172 INFO trapp:  motion_detected: light.taklampe_stue_1_etg changed state from off to on
    2022-01-08 09:52:53.531943 INFO trapp: Previous message repeated 1 times
    2022-01-08  09:52:53.267417 INFO bad_2_etasje: 💡 Bad_2_etasje turned  on → brightness: 95% \| delay: 5min
    2022-01-08  09:52:53.260680 INFO bad_1_etasje: 💡 Bad_1_etasje turned  on → brightness: 95% \| delay: 5min
    2022-01-08  09:52:53.254241 INFO bad_2_etasje: 💡 Bad_2_etasje turned  on → brightness: 95% \| delay: 5min
    2022-01-08  09:52:53.251767 INFO bad_1_etasje: 💡 Bad_1_etasje turned  on → brightness: 95% \| delay: 5min
    2022-01-08  09:52:53.211341 INFO bad_2_etasje: 💡 Bad_2_etasje turned  on → brightness: 95% \| delay: 5min
    2022-01-08  09:52:53.203123 INFO bad_1_etasje: 💡 Bad_1_etasje turned  on → brightness: 95% \| delay: 5min
    2022-01-08  09:52:53.177355 INFO spisestue:  motion_event: light in Spisestue  already on → refreshing timer \| self.dimming = False
    2022-01-08  09:52:53.165179 INFO bad_2_etasje: 💡 Bad_2_etasje turned  on → brightness: 95% \| delay: 5min
    2022-01-08  09:52:53.162352 INFO bad_1_etasje: 💡 Bad_1_etasje turned  on → brightness: 95% \| delay: 5min
    2022-01-08  09:52:53.141726 INFO gang_2_etasje: 💡 Gang_2_etasje turned  on → brightness: 80% \| delay: 2min
    
    
    

    🧁 Additional context Starts working immediately if I roll back to AppDaemon 0.7.2

    opened by henrikeri 15
  • light turn on by motion off state_change?

    light turn on by motion off state_change?

    I could nnow get the app running but apparently it listens really to each state chage but not only "on" state change to turn on the light.

    if motion is detected light turns on.. after timer off and on again and then off again after the timer :/

    bug enhancement 
    opened by thundergreen 15
  • Transition between daytimes

    Transition between daytimes

    🙄 Is your feature request related to a problem? Please describe. When using different scenes per daytime they only change if the lights are turned off in between. If you for example have a scene at 8pm and one at 9pm the 9pm does not trigger when the light isn't turned off in-between.

    😍 Describe the solution you'd like Set the scenes / brightness based on daytime and not only based on switching the light on and then checking which scene to use. Also allow the use of scene / light transitions for lights that support it so scenes can be smoothly switched.

    🖼️ Example/See here!

    Additional context

    enhancement 
    opened by paviro 14
  • AutoMoli not working anymore .. nothing in logs

    AutoMoli not working anymore .. nothing in logs

    Hello I used AutoMoli and was fan until today :P Well my setup stopped working. I changed the config to latest information in the release notes but still nothing work no error thrown.

    Here is my config maybe you can have a quick look:

    entrance:
      module: automoli
      class: AutoMoLi
      room: Entrance
      disable_switch_entities: 
        - input_boolean.automoli_general
      delay: 10
      daytimes:
        - { starttime: "05:30", name: morning, light: 0 }
        - { starttime: "07:20", name: day, light: 1 }
        - { starttime: "20:30", name: evening, light: 1 }
        - { starttime: "22:30", name: night, light: 0 }
        - { starttime: "23:30", name: more_night, light: 0 }
      illuminance_threshold: 29
      illuminance: 
        - sensor.average_luminance_in_the_house
      lights:
        - light.entrance
      motion:
        - binary_sensor.multisenor_entrance_motion
      motion_state_on: "on"
      motion_state_off: "off"
    

    all entities are there and work correctly Any hint here?

    bug 
    opened by thundergreen 12
  • ModuleNotFoundError from ad-ench applies here, too

    ModuleNotFoundError from ad-ench applies here, too

    I am seeing the ModuleNotFoundError here, too:

    2020-01-20 15:32:48.768224 WARNING livingroom: Traceback (most recent call last):
      File "/usr/lib/python3.8/site-packages/appdaemon/app_management.py", line 820, in check_app_updates
        await self.init_object(app)
      File "/usr/lib/python3.8/site-packages/appdaemon/app_management.py", line 271, in init_object
        modname = await utils.run_in_executor(self, __import__, app_args["module"])
      File "/usr/lib/python3.8/site-packages/appdaemon/utils.py", line 276, in run_in_executor
        response = future.result()
      File "/usr/lib/python3.8/concurrent/futures/thread.py", line 57, in run
        result = self.fn(*self.args, **self.kwargs)
      File "/config/appdaemon/apps/automoli/automoli.py", line 32, in <module>
        from adutils import ADutils, hl
    ModuleNotFoundError: No module named 'adutils'
    
    bug 
    opened by chbndrhnns 11
  • event_listener not working for NON-Xiaomi Motion Sensors

    event_listener not working for NON-Xiaomi Motion Sensors

    HI! Thanks again for this woonderfull App but I think there's an issue with the motion event listener. it only listens to xiaomi events if i read the code well. I have z-wave fibaro sensors which won't trigger

    This might be the part of the xiaomi motion event listener but no other motion event listeners are in the code :

    
    EVENT_MOTION = "xiaomi_aqara.motion"
    
    
    bug 
    opened by thundergreen 11
  • invalid time string

    invalid time string

    😩 Describe the issue/bug After updating to the latest version in HACS all my sensors stopped working.

    🎛️ Configuration

    wohnzimmer_bewegungsmelder:
      module: automoli
      class: AutoMoLi
      room: Wohnzimmer
      delay: 300
      daytimes:
        - { starttime: "04:30", name: morning, light: "scene.wohnzimmer_morgens" }
        - { starttime: "sunrise-01:00", name: sunrise, light: "scene.wohnzimmer_kunstlicht" }
        - { starttime: "sunrise+01:00", name: daylight, light: "scene.wohnzimmer_tageslicht" }
        - { starttime: "sunset-00:30", name: evening, light: "scene.wohnzimmer_kunstlicht" }
        - { starttime: "20:00", name: relaxed, light: "scene.wohnzimmer_entspannend" }
        - { starttime: "00:00", name: night, light: "scene.wohnzimmer_nacht", delay: 180 }
    
      illuminance: sensor.wohnzimmer_helligkeit_mean
      illuminance_threshold: 45 
      
      disable_switch_entities:
        - input_boolean.bewegungsmelder
        - input_boolean.bewegungsmelder_wohnzimmer
      disable_switch_states: "off"
    
      motion_state_on: "on"
      motion_state_off: "off"
      motion:
        - binary_sensor.wohnzimmer_sofa_bewegung
        - binary_sensor.kuche_bewegung
        - binary_sensor.wohnzimmer_treppe_bewegung
        - binary_sensor.flur_eg_bewegung
        - binary_sensor.wohnzimmer_esstisch_bewegung
        - input_boolean.wohnzimmer_presence_overwrite
        - switch.fernseher
    
      dim:
        method: transition
        seconds_before: 10
        
      only_own_events: false
      transition_on_daytime_switch: true
    

    🧠 System

    • AppDaemon: [e.g. 4.0.5] 0.5.0 (Latest available in HASS)
      • running mode: [e.g. virtualenv, hassio-plugin, docker] hassio-plugin
    • Home-Assistant: [e.g. 0.118.3, 0.119.0b0] latest
      • running mode: [e.g. virtualenv, hassio, docker] hassio

    🗒️ Logs

    2021-03-28 16:29:34.972933 WARNING wohnzimmer_bewegungsmelder: Traceback (most recent call last):
      File "/usr/lib/python3.8/site-packages/appdaemon/app_management.py", line 159, in initialize_app
        await init()
      File "/config/appdaemon/apps/ad-automoli/automoli.py", line 330, in initialize
        daytimes = await self.build_daytimes(self.args.pop("daytimes", DEFAULT_DAYTIMES))
      File "/config/appdaemon/apps/ad-automoli/automoli.py", line 925, in build_daytimes
        if await self.now_is_between(str(dt_start), str(next_dt_start)):
      File "/usr/lib/python3.8/site-packages/appdaemon/adapi.py", line 2077, in now_is_between
        return await self.AD.sched.now_is_between(start_time, end_time, name)
      File "/usr/lib/python3.8/site-packages/appdaemon/scheduler.py", line 699, in now_is_between
        end_time = (await self._parse_time(end_time_str, name))["datetime"]
      File "/usr/lib/python3.8/site-packages/appdaemon/scheduler.py", line 802, in _parse_time
        raise ValueError("invalid time string: %s", time_str)
    ValueError: ('invalid time string: %s', '06:21:33.896572')
    
    opened by paviro 9
  • Feature request: night_mode

    Feature request: night_mode

    Instead of using daytimes a night_mode would be great! I have an input boolean called night_mode when its on I would like the lights to turn on with a brightness set for night mode if its off use the default.

    An configuration idea / example:

    xyz:
      module: automoli
      class: AutoMoLi
      room: xyz
      delay: 180
      night_mode_entity: 'input_boolean.night_mode'
      night_mode_brightness: 100
      night_mode_scene: scene.bla
      brightness: 255
      motion:
        - binary_sensor.xyz
      lights:
        - light.xyz
    

    Even cooler would be if lights would also dimm up if night mode is disabled while the light is already on.

    There also is this https://github.com/apop880/Night-Mode maybe it could be used if when not configuring any daytimes it would not use defaults and instead just toggle the light with the current brightness. apop880`s night mode can already be kind of used by setting all daytimes to 100% brightness but the lights will flash up before being dimmed down then.

    enhancement 
    opened by paviro 9
  • Feature Idea: daytimes to configure on/off, delay, etc.

    Feature Idea: daytimes to configure on/off, delay, etc.

    Needing to enable / disable this functionality during certain times of the day. Or change the "delay" depending on the time of day...

    Just wanted to put this here. Might be something I attempt in a PR soon...

    enhancement 
    opened by jfrux 9
  • add condition

    add condition

    I completely love the idea. Unfortunatley wif you are not alone at home there are more conditons than being alone. But also watchig tv for example should avoid turning on the light automation.

    Do you think adding conditions would be doable?

    Would be then 100% great :)

    enhancement 
    opened by thundergreen 9
  • TypeError: float() argument must be a string or a real number, not 'NoneType'

    TypeError: float() argument must be a string or a real number, not 'NoneType'

    Upgraded to latest z2m (1.29.0-1) and suddenly a few of my automations stopped working.

    2023-01-01 18:42:34.704447 WARNING vardagsrum: Unexpected error in worker for App vardagsrum:
    2023-01-01 18:42:34.704659 WARNING vardagsrum: Worker Ags: {'id': '1b6f22661b3f4ebf9030343d944114a6', 'name': 'vardagsrum', 'objectid': '077134845b1346c0a5596e1040b24db4', 'type': 'state', 'function': <bound method AutoMoLi.motion_detected of <automoli.AutoMoLi object at 0x7fa7702c5c90>>, 'attribute': 'state', 'entity': 'binary_sensor.vardagsrum_rorelse_2_occupancy', 'new_state': 'on', 'old_state': 'off', 'pin_app': True, 'pin_thread': 6, 'kwargs': {'new': 'on', '__thread_id': 'MainThread'}}
    2023-01-01 18:42:34.704860 WARNING vardagsrum: ------------------------------------------------------------
    2023-01-01 18:42:34.705267 WARNING vardagsrum: Traceback (most recent call last):
      File "/usr/lib/python3.10/site-packages/appdaemon/threading.py", line 826, in async_worker
        await funcref(
      File "/config/appdaemon/apps/ad-automoli/automoli.py", line 567, in motion_detected
        await self.motion_event("state_changed_detection", data, kwargs)
      File "/config/appdaemon/apps/ad-automoli/automoli.py", line 596, in motion_event
        await self.lights_on()
      File "/config/appdaemon/apps/ad-automoli/automoli.py", line 837, in lights_on
        f"{float(await self.get_state(sensor)) = }",  # type:ignore
    TypeError: float() argument must be a string or a real number, not 'NoneType'
    2023-01-01 18:42:34.705629 WARNING vardagsrum: ------------------------------------------------------------
    2023-01-01 18:43:23.020252 WARNING matsal: ------------------------------------------------------------
    2023-01-01 18:43:23.020653 WARNING matsal: Unexpected error in worker for App matsal:
    2023-01-01 18:43:23.020884 WARNING matsal: Worker Ags: {'id': '4176dccc553e4975a7d7ad54c71473c7', 'name': 'matsal', 'objectid': '95337447b9554e428fb97a2f5b0ce5f8', 'type': 'state', 'function': <bound method AutoMoLi.motion_detected of <automoli.AutoMoLi object at 0x7fa7702c5d80>>, 'attribute': 'state', 'entity': 'binary_sensor.matsal_aktivitet_occupancy', 'new_state': 'on', 'old_state': 'off', 'pin_app': True, 'pin_thread': 7, 'kwargs': {'new': 'on', '__thread_id': 'MainThread'}}
    2023-01-01 18:43:23.021097 WARNING matsal: ------------------------------------------------------------
    2023-01-01 18:43:23.021505 WARNING matsal: Traceback (most recent call last):
      File "/usr/lib/python3.10/site-packages/appdaemon/threading.py", line 826, in async_worker
        await funcref(
      File "/config/appdaemon/apps/ad-automoli/automoli.py", line 567, in motion_detected
        await self.motion_event("state_changed_detection", data, kwargs)
      File "/config/appdaemon/apps/ad-automoli/automoli.py", line 596, in motion_event
        await self.lights_on()
      File "/config/appdaemon/apps/ad-automoli/automoli.py", line 837, in lights_on
        f"{float(await self.get_state(sensor)) = }",  # type:ignore
    TypeError: float() argument must be a string or a real number, not 'NoneType'
    2023-01-01 18:43:23.021701 WARNING matsal: ------------------------------------------------------------```
    opened by oscfor 1
  • Does not work when there is only a single daytime

    Does not work when there is only a single daytime

    😩 Describe the issue/bug

    Does not work when there is only a single daytime.

    😒 Expected behavior

    It should work with only a single daytime

    🎛️ Configuration

    ---
    toilet:
      module: automoli
      class: AutoMoLi
      room: toilet
      debug_log: true
      motion:
        - binary_sensor.wc_motion_sensor_occupancy
      delay: 5
      motion_state_on: "on"
      motion_state_off: "off"
      lights:
        - switch.toilet
      daytimes:
        - { name: alwayson, starttime: "00:00", light: 100 }
    

    🧠 System

    • AppDaemon: [e.g. 4.0.5]
      • running mode: [e.g. virtualenv, hassio-plugin, docker]
    • Home-Assistant: [e.g. 0.118.3, 0.119.0b0]
      • running mode: [e.g. virtualenv, hassio, docker]
    • Python: [e.g. 3.8.6, 3.9]

    🗒️ Logs

    When the app is loaded

    2022-10-11 20:14:11.532271 WARNING toilet: Traceback (most recent call last): File "/usr/lib/python3.10/site-packages/appdaemon/app_management.py", line 163, in initialize_app await init() File "/config/appdaemon/apps/automoli/automoli.py", line 448, in initialize "active_daytime": self.active_daytime, AttributeError: 'AutoMoLi' object has no attribute 'active_daytime' 
    

    when the motion sensor is triggered:

    2022-10-11 20:14:14.997915 WARNING toilet: Traceback (most recent call last): File "/usr/lib/python3.10/site-packages/appdaemon/threading.py", line 826, in async_worker await funcref( File "/config/appdaemon/apps/automoli/automoli.py", line 568, in motion_detected await self.motion_event("state_changed_detection", data, kwargs) File "/config/appdaemon/apps/automoli/automoli.py", line 597, in motion_event await self.lights_on() File "/config/appdaemon/apps/automoli/automoli.py", line 940, in lights_on raise ValueError( ValueError: invalid brightness/scene: None in <adutils.Room object at 0x7f98b8f27070>  
    

    🧁 Additional context

    This happens because the self.active_daytime is never set so an exception occurs on line 448.

    self.active_daytime is not set because the code for it expects there to be at least two daytimes:

                # check if this daytime should ne active now
                if await self.now_is_between(str(dt_start), str(next_dt_start)):
                    await self.switch_daytime(dict(daytime=daytime, initial=True))
                    self.active_daytime = daytime.get("daytime")
    

    Also this line should have self.room.name for a useful log output

    opened by Ramblurr 1
  • Bump actions/checkout from 2 to 3.1.0

    Bump actions/checkout from 2 to 3.1.0

    Bumps actions/checkout from 2 to 3.1.0.

    Release notes

    Sourced from actions/checkout's releases.

    v3.1.0

    What's Changed

    New Contributors

    Full Changelog: https://github.com/actions/checkout/compare/v3.0.2...v3.1.0

    v3.0.2

    What's Changed

    Full Changelog: https://github.com/actions/checkout/compare/v3...v3.0.2

    v3.0.1

    v3.0.0

    • Updated to the node16 runtime by default
      • This requires a minimum Actions Runner version of v2.285.0 to run, which is by default available in GHES 3.4 or later.

    v2.4.2

    What's Changed

    Full Changelog: https://github.com/actions/checkout/compare/v2...v2.4.2

    v2.4.1

    • Fixed an issue where checkout failed to run in container jobs due to the new git setting safe.directory

    v2.4.0

    • Convert SSH URLs like org-<ORG_ID>@github.com: to https://github.com/ - pr

    v2.3.5

    Update dependencies

    v2.3.4

    v2.3.3

    ... (truncated)

    Changelog

    Sourced from actions/checkout's changelog.

    v3.1.0

    v3.0.2

    v3.0.1

    v3.0.0

    v2.3.1

    v2.3.0

    v2.2.0

    v2.1.1

    • Changes to support GHES (here and here)

    v2.1.0

    v2.0.0

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Add support for room/bathroom doors

    Add support for room/bathroom doors

    This adds support to specify the doors to the room. As long as that door is closed the light will be blocked from turning off. Closing the door is also treated as a motion event and will cause the light to turn on.

    You can also override the default delay to have the light turn off quicker after the door is opened by specifying 'door_open_delay' otherwise it will turn off after the normal delay

    Additional config options: door: - binary_sensor.bathroom_door door_open_delay: 5

    opened by cengel74 0
  • Fix issue where light doesn't turn off after crossing light threshold

    Fix issue where light doesn't turn off after crossing light threshold

    If the room is configured to use the illuminance threshold and the light is currently on when the threshold is crossed it will never get turned off unless it naturally turns off due to lack of motion, etc.

    This adds a check in the motion_event to exit without refreshing the timer

    opened by cengel74 0
  • Bump actions/setup-python from 2 to 4.2.0

    Bump actions/setup-python from 2 to 4.2.0

    Bumps actions/setup-python from 2 to 4.2.0.

    Release notes

    Sourced from actions/setup-python's releases.

    Add check-latest input and bug fixes

    In scope of this release we add the check-latest input. If check-latest is set to true, the action first checks if the cached version is the latest one. If the locally cached version is not the most up-to-date, the version will then be downloaded from python-versions repository. By default check-latest is set to false. For PyPy it will to try to reach https://downloads.python.org/pypy/versions.json

    Example of usage:

    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-python@v4
        with:
          python-version: '3.9'
          check-latest: true
      - run: python --version
    

    Besides, it includes such changes as

    v4.1.0

    In scope of this pull request we updated actions/cache package as the new version contains fixes for caching error handling. Moreover, we added a new input update-environment. This option allows to specify if the action shall update environment variables (default) or not.

    Update-environment input

        - name: setup-python 3.9
          uses: actions/setup-python@v4
          with:
            python-version: 3.9
            update-environment: false
    

    Besides, we added such changes as:

    v4.0.0

    What's Changed

    • Support for python-version-file input: #336

    Example of usage:

    - uses: actions/setup-python@v4
      with:
        python-version-file: '.python-version' # Read python version from a file
    - run: python my_script.py
    </tr></table> 
    

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
Releases(v0.11.3)
Owner
Ben
(bio)tech enthusiast, science lover, infrastructure/network/security, ... ‽
Ben
A python package that computes an optimal motion plan for approaching a red light

redlight_approach redlight_approach is a Python package that computes an optimal motion plan during traffic light approach. RLA_demo.mov Given the par

Jonathan Roy 4 Oct 27, 2022
Aerospace utilities: flight conditions package, standard atmosphere model, and more.

Aerospace Utilities About Module that contains commonly-used aerospace utilities for problem solving. Flight Condition: input altitude to compute comm

null 1 Jan 3, 2022
A pairs trade is a market neutral trading strategy enabling traders to profit from virtually any market conditions.

A pairs trade is a market neutral trading strategy enabling traders to profit from virtually any market conditions. This strategy is categorized as a statistical arbitrage and convergence trading strategy.

Kanupriya Anand 13 Nov 27, 2022
ChronoRace is a tool to accurately perform timed race conditions to circumvent application business logic.

ChronoRace is a tool to accurately perform timed race conditions to circumvent application business logic. I've found in my research that w

Tanner 64 Aug 4, 2022
🗽 Like yarn outdated/upgrade, but for pip. Upgrade all your pip packages and automate your Python Dependency Management.

pipupgrade The missing command for pip Table of Contents Features Quick Start Usage Basic Usage Docker Environment Variables FAQ License Features Upda

Achilles Rasquinha 529 Dec 31, 2022
🔩 Like builtins, but boltons. 250+ constructs, recipes, and snippets which extend (and rely on nothing but) the Python standard library. Nothing like Michael Bolton.

Boltons boltons should be builtins. Boltons is a set of over 230 BSD-licensed, pure-Python utilities in the same spirit as — and yet conspicuously mis

Mahmoud Hashemi 6k Jan 6, 2023
🔩 Like builtins, but boltons. 250+ constructs, recipes, and snippets which extend (and rely on nothing but) the Python standard library. Nothing like Michael Bolton.

Boltons boltons should be builtins. Boltons is a set of over 230 BSD-licensed, pure-Python utilities in the same spirit as — and yet conspicuously mis

Mahmoud Hashemi 5.4k Feb 20, 2021
InfiniPy has some neat features - like the endpoint for function

InfiniPy has some neat features - like the endpoint for function

ZeroTwo 7 Nov 20, 2022
Automatic and platform-independent unpacker for Windows binaries based on emulation

_ _ __ _ __ _ | | | | / / (_) \ \ | | | | | |_ __ | | _ | | _ __ __ _ ___| | _____ _ __

null 514 Dec 21, 2022
Student Result Management System Project in tkinter created based on python, tkinter, and SQLITE3 Database

Student-Result-Management-System This Student Result Management System Project in tkinter created based on python, tkinter, and SQLITE3 Database. The

Ravi Chauhan 2 Aug 3, 2022
skimpy is a light weight tool that provides summary statistics about variables in data frames within the console.

skimpy Welcome Welcome to skimpy! skimpy is a light weight tool that provides summary statistics about variables in data frames within the console. Th

null 267 Dec 29, 2022
A tool for light-duty persistent memoization of API calls

JSON Memoize What is this? json_memoize is a straightforward tool for light-duty persistent memoization, created with API calls in mind. It stores the

null 1 Dec 11, 2021
A light library to build tiny websites

A light library to build tiny websites

BT.Q 1 Dec 23, 2021
Homed - Light-weight, easily configurable, dockerized homepage

homed GitHub Repo Docker Hub homed is a light-weight customizable portal primari

Matt Walters 12 Dec 15, 2022
This is a simple bank management system based on Python.

Python Bank Management This is a simple bank management system based on Python. It's able to do basic operations of simple bank management. Outcome: W

Md. Rakibul Islam 3 Jan 6, 2022
MySQL Connectivity based project. Contains various functions of a Store-Management-System

An Intermediate Level Python - MySQL Connectivity based project. Contains various functions of a Store-Management-System.

Yash Wadhvani 2 Nov 21, 2022
Fully cross-platform toolkit (and library!) for MachO+Obj-C editing/analysis

fully cross-platform toolkit (and library!) for MachO+Obj-C editing/analysis. Includes a cli kit, a curses GUI, ObjC header dumping, and much more.

cynder 301 Dec 28, 2022
Data Poisoning based on Adversarial Attacks using Non-Robust Features

Data Poisoning based on Adversarial Attacks using Non-Robust Features Usage python main.py [-h] [--gpu | -g GPU] [--eps |-e EPSILON] [--pert | -p PER

Jonathan E. 1 Nov 2, 2021
Stopmagic gives you the power of creating amazing Stop Motion animations faster and easier than ever before.

Stopmagic gives you the power of creating amazing Stop Motion animations faster and easier than ever before. This project is maintained by Aldrin Mathew.

Aldrin's Art Factory 67 Dec 31, 2022