{"id":13580705,"url":"https://github.com/eifinger/appdaemon-scripts","last_synced_at":"2025-04-06T02:32:33.423Z","repository":{"id":50543237,"uuid":"134253548","full_name":"eifinger/appdaemon-scripts","owner":"eifinger","description":"Scripts running in Appdaemon for Homeassistant Automations","archived":true,"fork":false,"pushed_at":"2023-05-22T23:56:51.000Z","size":1540,"stargazers_count":154,"open_issues_count":1,"forks_count":17,"subscribers_count":15,"default_branch":"master","last_synced_at":"2025-03-22T11:51:10.793Z","etag":null,"topics":["appdaemon","appdaemon-apps","docker","hass","homeassistant","homeautomation"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eifinger.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2018-05-21T10:21:54.000Z","updated_at":"2025-02-20T19:50:42.000Z","dependencies_parsed_at":"2024-03-17T09:45:57.456Z","dependency_job_id":null,"html_url":"https://github.com/eifinger/appdaemon-scripts","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eifinger%2Fappdaemon-scripts","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eifinger%2Fappdaemon-scripts/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eifinger%2Fappdaemon-scripts/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eifinger%2Fappdaemon-scripts/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eifinger","download_url":"https://codeload.github.com/eifinger/appdaemon-scripts/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247426411,"owners_count":20937122,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["appdaemon","appdaemon-apps","docker","hass","homeassistant","homeautomation"],"created_at":"2024-08-01T15:01:54.388Z","updated_at":"2025-04-06T02:32:32.733Z","avatar_url":"https://github.com/eifinger.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\n  \u003ca name=\"logo\" href=\"\"\u003e\u003cimg src=\"images/logo-round-192x192.png\" alt=\"Home Assistant Logo\" width=\"192\"\u003e\u003c/a\u003e\n  \u003cbr\u003e\n  eifinger's Appdaemon Scripts\n\u003c/h1\u003e\n\n## About\n\nThis is the repository containing all my Appdaemon apps.\n\nUsed together with my Homeassistant config which you can find here:\n\n[https://github.com/eifinger/homeassistant-config](https://github.com/eifinger/homeassistant-config)\n\nI use Appdaemon for all my automations since I am a programmer myself and it provides me with all the possibilities\nof the Python world and a far better debugging experience than\n[HA Automations](https://www.home-assistant.io/getting-started/automation/) or [nodered](https://nodered.org/).\n\n### No longer actively maintained\n\nI no longer use appdaemon for my automations and switched over to automations completely:\n\n* Traces allow easy debugging of what happened and why\n* I can see related entities from automations and vise versa\n* I can quickly adjust automations via the UI editor on my smartphone\n* There is no disconnect/lag between Appdaemon and Homeassistant.\n\n## How to contribute\n\nJust open an Issue or a Pull Request for any Comments, Questions, etc.\n\n**Or you can message me on twitter :** [@eifinger](https://twitter.com/eifinger)\n\n## How to use\n\nIf you have never used Appdaemon before I suggest you start with the\n[tutorial](https://appdaemon.readthedocs.io/en/latest/TUTORIAL.html) and the\n[guide](https://appdaemon.readthedocs.io/en/latest/APPGUIDE.html).\nBoth contain more links to great tutorials and examples.\n\nI tried to write each App in this repository with reusability in mind.\nThis means that every app in here has a short documentation\nand is (if possible) written to be easily adjusted to your environment and your needs.\n\n### app_switch\n\nEvery App has an input_boolean inside HA which turns it on/off.\nThis is useful if I don't want any notifications right now or an App is misbehaving.\n\n## App list\n\n* [Alexa Intents](#alexaintents)\n* [AlexaSpeakerConnector](#alexaspeakerconnector)\n* [appWatcher](#appWatcher)\n* [alarmClock](#alarmclock)\n* [buttonClicked](#buttonclicked)\n* [comingHome](#cominghome)\n* [deconzXiaomiButton](#deconzxiaomibutton)\n* [detectWrongState](#detectwrongstate)\n* [eventMonitor](#eventmonitor)\n* [faceRecognitionBot](#facerecognitionbot)\n* [google_travel_time](#google_travel_time)\n* [heartbeat](#heartbeat)\n* [homeArrivalNotifier](#homearrivalnotifier)\n* [isHomeDeterminer](#ishomedeterminer)\n* [isUserHomeDeterminer](#isuserhomedeterminer)\n* [leavingZoneNotifier](#leavingzonenotifier)\n* [motionTrigger](#motiontrigger)\n* [newWifiDeviceNotify](#newwifidevicenotify)\n* [nextAppointmentLeaveNotifier](#nextappointmentleavenotifier)\n* [notifyOfActionWhenAway](#notifyofactionwhenaway)\n* [plantWateringNotifier](#plantwateringnotifier)\n* [powerUsageNotification](#powerusagenotification)\n* [seqSink](#seqsink)\n* [setThermostat](#setthermostat)\n* [setThermostatOnStateChange](#setthermostatonstatechange)\n* [sleepModeHandler](#sleepmodehandler)\n* [turnFanOnWhenHot](#turnfanonwhenhot)\n* [turnOffBarAfterRestart](#turnoffbarafterrestart)\n* [updateEntityService](#updateentityservice)\n* [notify](#notify)\n\n### AlexaIntents\n\nAre explained [here](alexa/README.md)\n\n### AlexaSpeakerConnector\n\nApp to Turn on Receiver Bluetooth when Alexa is playing something so it plays on the big speakers.\nUses a [custom_component](https://community.home-assistant.io/t/echo-devices-alexa-as-media-player-testers-needed/58639)\nfor control alexa as a media player.\n\n```yaml\nalexaSpeakerConnector:\n  module: alexaSpeakerConnector\n  class: AlexaSpeakerConnector\n  app_switch: input_boolean.alexaSpeakerConnector\n  alexa_entity: media_player.kevins_echo_dot_oben\n  alexa_entity_source: Denon AVR-X1300W\n  receiver: media_player.denon_avr_x1300w\n  receiver_source: Bluetooth\n```\n\n### appWatcher\n\nSends a notification if a WARNING or ERROR is logged in Appdaemon\n\n```yaml\nheartbeat:\n  module: appWatcher\n  class: AppWatcher\n  notify_name: kevin\n  include_log_message_in_notification: True\n  notify_message: \"Es ist ein Fehler aufgetreten in App: {}\"\n  #notify_message: \"An Error occurred in App: {}\"\n  dependencies:\n    - Notifier\n```\n\n### alarmClock\n\nAlarm Clock App inspired by [this](https://community.home-assistant.io/t/creating-a-alarm-clock/410)\nforum post.\nIt fades in my bedroom light and sends a notifcation.\nThe fade in and alarm time is defined by input_number sliders in HA\n\n```yaml\nalarmClock:\n  module: alarmClock\n  class: AlarmClock\n  alarm_time: sensor.alarm_time\n  wakemeup: input_boolean.wakemeup\n  naturalwakeup: input_number.alarm_natural_wakeup_fade_in\n  alarmweekday: input_boolean.alarmweekday\n  radiowakeup: input_boolean.radiowakeup\n  #TODO radioplayer: input_select.wakeup_radioplayer\n  wakeup_light: light.bedroom_yeelight\n  isweekday: binary_sensor.workday_today\n  notify_name: group_notifications\n  message: \"Guten Morgen!\"\n  #message: \"Good Morning!\"\n```\n\n![alarmClock](images/alarmClock.PNG)\n\n### buttonClicked\n\nMy multipurpose App to link any switch/light to a Xiaomi Button.\n\nYou can map different entities to the click types ``single`` and ``double``.\n\nFor the 1st Generation Button you can hold the button to use it as a light dimmer.\n\n```yaml\nxiaomiroundButtonBedroomClicked:\n  module: buttonClicked\n  class: ButtonClicked\n  sensor: binary_sensor.switch_158d0001b12a12\n  actor_single: light.bedroom_yeelight\n  actor_double: group.all\n  actor_hold: light.bedroom_yeelight\n  dependencies:\n    - Notifier\n```\n\n### comingHome\n\nWhen the front door openes and no one was home before this will turn on something.\nI am using it to turn on the light (if the sun is down) and turn on the receiver so I can hear Alexa\n\n```yaml\ncomingHomeYeelight:\n  module: comingHome\n  class: ComingHome\n  app_switch: input_boolean.coming_home_yeelight\n  sensor: binary_sensor.door_window_sensor_158d000126a57b\n  isHome: input_boolean.is_home\n  actor: switch.large_lamp\n  after_sundown: True\n```\n\n### deconzXiaomiButton\n\nApp which toggles entities for single/double/hold presses of Xiaomi buttons connected via deconz.\n\nThis app is installed via [HACS](https://github.com/custom-components/hacs).\n\nThe repository itself with the full documentation can be found on github:\n[appdaemon-deconz-xiaomi-button](https://github.com/eifinger/appdaemon-deconz-xiaomi-button)\n\n```yaml\nDeconzXiaomiButtonBedroom:\n  module: deconz_xiaomi_button\n  class: DeconzXiaomiButton\n  id: round_button_schlafzimmer\n  actor_single: light.bedroom_yeelight\n  actor_double: group.all\n  actor_hold: light.bedroom_yeelight\n```\n\n### detectWrongState\n\nChecks a list of entities which should be on/off when everybody left the house.\nIf something isn't right it will try to turn it off (e.g. a light) and send a notification.\n\n```yaml\ndetectWrongStateWhenLeaving:\n  module: detectWrongStateWhenLeaving\n  class: DetectWrongStateWhenLeaving\n  app_switch: input_boolean.detect_wrong_state_when_leaving\n  entities_off: \"binary_sensor.door_window_sensor_158d000205b808,binary_sensor.door_window_sensor_158d00020499ad,\\\n  binary_sensor.door_window_sensor_158d0002059ddf,media_player.denon_avr_x1300w,switch.large_lamp,\\\n  switch.small_lamp,switch.snowboard,light.bedroom_yeelight,light.bar_table,light.lobby_yeelight,\\\n  light.reading_lamp_yeelight,light.treppe_oben,light.stairs_lower_yeelight,switch.ventilator\"\n  message: \"Du hast {} angelassen. Ich habe es für dich ausgemacht.\"\n  #message: \"You left on {}. I turned it off for you\"\n  message_off: \"Du hast {} vergessen anzumachen. Ich habe es für dich angemacht.\"\n  #message_off: \"You forgot to turn on {}. I turned it on for you\"\n  message_reed: \"Du hast {} offen gelassen.\"\n  #message_reed: \"You left open {} Dummy.\"\n  message_reed_off: \"Du hast {} zu gelassen.\"\n  #message_reed_off: \"You left {} closed Dummy.\"\n  isHome: input_boolean.is_home\n```\n\n### eventMonitor\n\nMonitor all events. Useful for debugging and developing\n\n```yaml\neventMonitor:\n  module: eventMonitor\n  class: Monitor\n  events:\n```\n\n### faceRecognitionBot\n\nCOMING SOON\n\n### travel_time\n\nMonitors my Travel Time Sensors e.g. between home and work.\nI can enable an input_boolean in HA which causes this App to send me a notication\nas soon as the traffic is in an acceptable range. I use this drive to/from work when there is the least traffic.\n\n```yaml\ntravelTime_home_from_work:\n  module: travelTimeNotifier\n  class: TravelTimeNotifier\n  sensor: sensor.travel_time_home_from_work\n  notify_input_boolean: input_boolean.travel_time_home_from_work\n  notify_name: group_notifications\n  message: \"Du kannst losfahren nach {}\"\n  #message: \"You can start your journey to {}\"\n```\n\n![travelTimeNotifier](images/googleTravelTimes.PNG)\n\n### heartbeat\n\nSets a sensor in Homeassistant which is checked by an automation.\nThe [automation](https://github.com/eifinger/homeassistant-config/blob/master/automation.yaml)\nsends out a notification if appdaemon does not respond.\n\n### homeArrivalNotifier\n\nGreet the person coming home with a notification\n\n```yaml\nhomeArrivalNotifierUserOne:\n  module: homeArrivalNotifier\n  class: HomeArrivalNotifier\n  app_switch: input_boolean.home_arrival_notifier_user_one\n  input_boolean: input_boolean.user_one_home\n  notify_name: group_notifications\n  user_name: Kevin\n  zone_name: Home\n  message: \"Willkommen zu Hause {}.\"\n  #message: \"Welcome Home {}.\"\n```\n\n### isHomeDeterminer\n\nControls an input_boolean \"isHome\" which is used as a trigger for other Apps.\nThe state depends on other input_booleans controlled by the\n[isUserHomeDeterminer](isUserHomeDeterminer/isUserHomeDeterminer.py)\n\n```yaml\nisHomeDeterminer:\n  module: isHomeDeterminer\n  class: IsHomeDeterminer\n  app_switch: input_boolean.is_home_determiner\n  ishome: input_boolean.is_home\n  input_booleans: input_boolean.user_one_home,input_boolean.user_two_home\n  message: \"Es ist keiner mehr zu Hause. Setze isHome auf off\"\n  #message: \"Everyone left home. Setting isHome to off\"\n```\n\n### isUserHomeDeterminer\n\nThe GPS Logger tells me where someone is. But I want to know for sure who just came in the door.\nApp to toggle an input boolean when a person enters or leaves home.\nThis is determined based on a combination of a GPS device tracker and the door sensor.\n\n* If the door sensor opens and the device_tracker changed to \"home\" in the last self.delay minutes this means someone got home\n* If the door sensor opens and the device_tracker changes to \"not_home\" in the next self.delay minutes this means someone left home\n\n```yaml\nisUserHomeDeterminerUserOne:\n  module: isUserHomeDeterminer\n  class: IsUserHomeDeterminer\n  app_switch: input_boolean.is_user_home_determiner_user_one\n  input_boolean: input_boolean.user_one_home\n  device_tracker: person.kevin\n  door_sensor: binary_sensor.door_window_sensor_158d000126a57b\n```\n\n### leavingZoneNotifier\n\nNotify if a user is leaving a zone after being there for a certain amount of time.\nI use this to notify my SO that I am leaving work and driving home\n\n```yaml\nleavingWorkNotifierUserOne:\n  module: leavingZoneNotifier\n  class: LeavingZoneNotifier\n  app_switch: input_boolean.leaving_work_notifier_user_one\n  device: person.kevin\n  user_name: Kevin\n  lingering_time: 3600\n  delay: 120\n  zone: Arbeit\n  notify_name: group_notifications\n  message: \"{} hat {} vor {} Minuten verlassen.\"\n  travel_time_sensor: sensor.travel_time_home_user_one\n  travel_time_sensor_message: \"Die momentane Reisezeit beträgt {}.\"\n  dependencies:\n    - Notifier\n```\n\n### motionTrigger\n\nTurn something on/off when a motion sensor turns on. Automatically turn it off again after a delay.\n\n```yaml\nbathMotionTrigger:\n  module: motionTrigger\n  class: MotionTrigger\n  app_switch: input_boolean.bath_motion_trigger\n  sensor: binary_sensor.0x00158d000236b801_occupancy\n  entity_on: light.lower_bathroom_yeelight\n  entity_off: light.lower_bathroom_yeelight\n  sensor_type: zigbee2mqtt\n  after_sundown: True\n  turn_off_constraint_entities_on: binary_sensor.0x00158d0001fa464b_occupancy\n  delay: 300\n```\n\n### newWifiDeviceNotify\n\nActually a wrong name. This will send me a notification when any device_tracker component detects a new device.\nI initally thought to use this as a security feature but found it quite useful when adding new Sonoff switches and such.\nI get a notification if the setup was successfull.\n\n**Version 1.2:**\nDisplays two buttons which let me control the internet access for the new device.\nThe configured fritzbox standard profile denies internet access.\nWith this I can easily allow my guests access to the internet without logging in to my fritzbox manually.\n\n```yaml\nnewWifiDeviceNotify:\n  module: newWifiDeviceNotify\n  class: DeviceNotify\n  notify_name: group_notifications\n  message: \"Unbekanntes Gerät entdeckt. Hostname: {}. MAC: {}.\"\n  #message: \"Unknown device connected. Hostname: {}. MAC: {}\"\n```\n\n### nextAppointmentLeaveNotifier\n\nSend me a notification when it is time to leave for my next appointment based on my current location.\nInspired by [this](https://community.home-assistant.io/t/text-to-speech-notification-to-leave-for-appointment/8689)\nblog post.\n\n* Selectable travel mode (car/bus/walk/bike)\n* Only for google calendar events which have a location\n* Adjustable offset when to notify\n* Includes a direct Google Maps Navigation Link in Notification Message\n\nSaved my ass quite a few times\n\n```yaml\nnextAppointmentLeaveNotifier:\n  module: nextAppointmentLeaveNotifier\n  class: NextAppointmentLeaveNotifier\n  sensor: sensor.calc_leave_time\n  notify_input_boolean: input_boolean.announce_time_to_leave\n  notify_name: group_notifications\n  input_number: input_number.leave_time_offset\n  destination_name_sensor: sensor.cal_next_appointment_location\n  travel_time_sensor: sensor.travel_time_next_appointment_location\n  message: \"Es ist Zeit loszufahren nach {}. Du brauchst {} Minuten. Hier ist ein Google Maps Link: {}\"\n  #message: \"It's time to leave to {}. It will take {} minutes. Here is a Google Maps Link: {}\"\n```\n\n![nextAppointmentLeaveNotifier](images/next_appoint_leave_modifier.PNG)\n![next_appoint_leave_modifier_notification](images/next_appoint_leave_modifier_notification.PNG)\n\n### notifyOfActionWhenAway\n\nNotify me of any event for a list of entities when no one is at home.\nFor example a door being openend or a motion sensor triggered\n\n```yaml\nnotifyOfActionWhenAway:\n  module: notifyOfActionWhenAway\n  class: NotifyOfActionWhenAway\n  app_switch: input_boolean.notify_of_action_when_away\n  sensor: \"binary_sensor.door_window_sensor_158d000126a57b,binary_sensor.door_window_sensor_158d0001bb4d94,\\\n  binary_sensor.door_window_sensor_158d0001bb4dc0,binary_sensor.door_window_sensor_158d000205b808,\\\n  binary_sensor.door_window_sensor_158d000205b82e,binary_sensor.door_window_sensor_158d00020498b6,\\\n  binary_sensor.door_window_sensor_158d000204ba26,binary_sensor.door_window_sensor_158d0002059ddf,\\\n  binary_sensor.door_window_sensor_158d00020499ad,binary_sensor.door_window_sensor_158d0002048951,\\\n  binary_sensor.door_window_sensor_158d00020455bf,binary_sensor.motion_sensor_158d00012aab97,\\\n  binary_sensor.motion_sensor_158d0001fa464b,binary_sensor.motion_sensor_158d0002006cfa\"\n  isHome: input_boolean.is_home\n  user_name: group_notifications\n  isHome_delay: 20\n  message: \"Alarm: {} ist gewechselt auf {}\"\n  #message: \"Alarm: {} changed to {}\"\n```\n\n![notifyOfActionWhenAway](images/notifyOfActionWhenAway.PNG)\n\n### plantWateringNotifier\n\nRemind us to water the plants in the morning when the precipiation propability is too low.\nThis uses a Telegram Chatbot. We can press a button in the notification to tell the App that we watered the plants.\nIf we don't do that we get reminded again in the evening.\n\n```yaml\nplantWateringNotifier:\n  module: plantWateringNotifier\n  class: PlantWateringNotifier\n  app_switch: input_boolean.plant_watering_notifier\n  rain_precip_sensor: sensor.dark_sky_precip_probability\n  rain_precip_intensity_sensor: sensor.dark_sky_precip_intensity\n  precip_type_sensor: sensor.dark_sky_precip\n  notify_name: group_notifications\n  user_id: secret! telegram_user_id\n  reminder_acknowledged_entity: input_boolean.persistence_plantwateringnotifier_reminder_acknowledged\n  message: \"Die Regenwahrscheinlichkeit beträgt heute nur {}. Vergiss nicht die Pflanzen zu gießen!\"\n  #message: \"The Rain Propability is only {}. Don't forget to water the plants!\"\n  message_not_needed: \"Es wird heute mit einer Wahrscheinlichkeit von {} Prozent ungefähr {} Millimeter pro Stunde regnen. Du brauchst nicht selbst gießen.\"\n  #message_not_needed: \"It will rain today {} millimeter per hour with a propability of {}. You don't have to water your plants\"\n  message_evening: \"Ich bin mir nicht sicher ob du vergessen hast die Pflanzen zu gießen, deswegen erinnere ich dich lieber noch einmal daran.\"\n  #message_evening: \"I'm not sure whether you waterd your plants, so I thought I better remind you again\"\n```\n\n![plantWateringReminder](images/plantWateringReminder.PNG)\n![plantWateringReminderAcknowledged](images/plantWateringReminderAcknowledged.PNG)\n\n### pollenNotifier\n\nNotify in the morning if any monitored pollen level is above a threshold.\n\n```yaml\nroggenNotifier:\n  module: pollenNotifier\n  class: PollenNotifier\n  app_switch: input_boolean.roggen_notifier\n  pollen_sensor: sensor.pollen_101_roggen_today\n  pollen_name: Roggen\n  notify_name: group_notifications\n  notify_time: 08:00\n  notify_threshold: 1.0\n  message: \"{} ist {} {} Belastung.\"\n  #message: \"The {} intensity {} is {}.\"\n  message_no_data: \"Ich habe {} leider keine Daten für {}.\"\n  #message_no_data: \"{} I have no pollen data for {}.\"\n```\n\n![roggenNotify](images/roggenNotify.PNG)\n\n### powerUsageNotification\n\nNotify when the Washingmachine or Dishwasher started/finished. Using power measured by TP HS110 Plugs like[![](https://static.tp-link.com/res/images/products/HS110_us_V1_1133_normal_0_20151017154946.jpg)](https://www.amazon.de/dp/B017X72IES/ref=twister_B07CQBCZ5G)\n\n```yaml\npowerUsageNotification_Dishwasher:\n  module: powerUsageNotification\n  class: PowerUsageNotification\n  app_switch: input_boolean.power_usage_notification_dishwasher\n  sensor: sensor.dishwasher_power_usage\n  notify_name: group_notifications\n  delay: 1260 #21 minutes\n  threshold: 2\n  alternative_name: Die Spülmaschine\n  message: \"{} ist gestartet.\"\n  #message: \"{} just started.\"\n  message_off: \"{} ist fertig.\"\n  #message_off: \"{} just finished.\"\n```\n\n![dishWasherNotify](images/dishWasherNotify.PNG)\n\n### seqSink\n\nApp which forwards all logs to seq.\nBlogged about this app in [this](https://blog.kevineifinger.de/archive/2020/07/06/Log-Management-For-My-AppDaemon-Apps.html) post.\n\n```yaml\nseqSink:\n  module: seqSink\n  class: SeqSink\n  server_url: \"http://seq:5341/\"\n```\n\n### setThermostat\n\nApp which sets a thermostat to a target temperature for a specific duration\n\n```yaml\nwarm_bath_before_wakeup:\n  module: setThermostat\n  class: SetThermostat\n  app_switch: input_boolean.warm_bath_before_wakeup\n  isHome: input_boolean.is_home\n  time_entity: sensor.alarm_time\n  upfront_time: 60\n  duration: 60\n  climat_entity: climate.bad_thermostat\n  target_entity: input_number.warm_bath_before_wakeup\n  message: \"Ich habe {} auf {} gestellt\"\n  #message: \"I have set {} to {}\"\n  notify_name: group_notifications\n  use_alexa: False\n  dependencies:\n    - Notifier\n```\n\n### setThermostatOnStateChange\n\nApp which sets a thermostat to a target temperature on state change.\n\n```yaml\nsetBadObenThermostatWhenComingHome:\n  module: setThermostatOnStateChange\n  class: SetThermostatOnStateChange\n  app_switch: input_boolean.set_upper_bath_thermostat_when_coming_home\n  trigger_entity: input_boolean.is_home\n  trigger_state: \"on\"\n  climate_entity: climate.bad_oben_thermostat\n  target_entity: input_number.set_upper_bath_thermostat_when_coming_home\n  message: \"Ich habe {} auf {} °C gestellt\"\n  #message: \"I have set {} to {}\"\n  notify_name: group_notifications\n  use_alexa: False\n  dependencies:\n    - Notifier\n```\n\n### sleepModeHandler\n\nSet an input_boolean on/off. Used as a trigger for other Apps.\nAlso controlled by ``Alexa, guten Morgen`` ``Alexa, gute Nacht``\n\nWill watch room sensor of users\n\n````yaml\nsleepModeHandler:\n  module: sleepModeHandler\n  class: SleepModeHandler\n  app_switch: input_boolean.sleep_mode_handler\n  sleepmode: input_boolean.sleepmode\n  notify_name: group_notifications\n  message_sleeping: \"Alle zu Hause sind im Bett\"\n  #message_sleeping: \"All home are in bed\"\n  message_awake: \"Alle zu Hause sind wach\"\n  #message_awake: \"All home are awake\"\n  users:\n    - sleep_mode: input_boolean.user_one_sleep\n      isHome: input_boolean.user_one_home\n    - sleep_mode: input_boolean.user_two_sleep\n      isHome: input_boolean.user_two_home\n  dependencies:\n    - Notifier\n````\n\n````yaml\nuserSleepModeHandlerUserOne:\n  module: userSleepModeHandler\n  class: UserSleepModeHandler\n  app_switch: input_boolean.user_sleep_mode_handler_user_one\n  input_boolean: input_boolean.user_one_sleep\n  location_sensor: person.kevin\n  room: bedroom\n  duration: 600\n\nuserSleepModeHandlerUserTwo:\n  module: userSleepModeHandler\n  class: UserSleepModeHandler\n  app_switch: input_boolean.user_sleep_mode_handler_user_two\n  input_boolean: input_boolean.user_two_sleep\n  location_sensor: sensor.mqtt_room_user_two\n  room: bedroom\n  duration: 600\n````\n\n### turnFanOnWhenHot\n\nTurns the Fan on when the temperature is above a configurable threshold and someone is in the room\n([find3](https://github.com/schollz/find3))\n\n```yaml\nturnFanOnWhenHot:\n  module: turnFanOnWhenHot\n  class: TurnFanOnWhenHot\n  app_switch: input_boolean.turn_fan_on_when_hot\n  temp_sensor: sensor.large_lamp_temperature\n  threshold_entity: input_number.turn_fan_on_when_hot_threshold\n  location_sensors: sensor.location_user_one,sensor.location_user_two\n  room: Wohnzimmer\n  actor: switch.large_ventilator\n  delay: 120\n```\n\n![ventilatorAutomation](images/ventilatorAutomation.PNG)\n\n### turnOffBarAfterRestart\n\nAs I sometimes restart HA when working on it from remote I turn the Bar lights to red with\n[this script](https://github.com/eifinger/homeassistant-config/blob/master/updateHomeassistant.sh).\nThis way everyone can see HA is currently unavailable.\nIf it comes back up again this app will turn the light green and then off.\n\n### notify\n\nIN DEVELOPMENT\nCentralizes messaging. Among other things, it will determine whether a user is at home and if yes in which room.\n\nThen Alexa in that room will be used additionally to Telegram\n\n```yaml\nNotify:\n  module: notify\n  class: Notify\n  media_player: media_player.denon_avr_x1300w\n  source: CBL/SAT\n  alexa_media_player: media_player.kevins_echo_dot_oben\n  global_dependencies:\n    - globals\n```\n\n# Thanks\n\nFirst of all thanks to the Homeassistant Team and [Andrew Cockburn](https://github.com/acockburn) for making Appdaemon\n\nSome of the Apps are taken from the official examples and many based on or at least inspired by\n[Rene Tode](https://github.com/ReneTode).\nFor example his absolutely fantastic [Alexa-Appdaemon-App](https://github.com/ReneTode/Alexa-Appdaemon-App).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feifinger%2Fappdaemon-scripts","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feifinger%2Fappdaemon-scripts","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feifinger%2Fappdaemon-scripts/lists"}