livingroom.yaml 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. esphome:
  2. name: livingroom
  3. platform: ESP8266
  4. board: esp01_1m
  5. # board: esp12e
  6. includes:
  7. - MySunTextSensor.h
  8. # Enable logging
  9. logger:
  10. # Enable Home Assistant API
  11. api:
  12. ota:
  13. substitutions:
  14. #Shift sunset and sunrisen on minute
  15. shift_sunset: '+17'
  16. shift_sunrise: '+6'
  17. # At least one time source is required
  18. time:
  19. - platform: homeassistant # sntp
  20. timezone: "Europe/Berlin"
  21. id: esptime # sntp_time
  22. # - minutes: !lambda 'return id(heating_on_time_1_minutes).state;'
  23. # hours: !lambda 'return id(heating_on_time_1_hours).state;'
  24. # At WiFi setup
  25. wifi:
  26. ssid: "WLAN-LX"
  27. password: "SP-RAXX749x7"
  28. # Enable fallback hotspot (captive portal) in case wifi connection fails
  29. ap:
  30. ssid: "Livingroom Fallback Hotspot"
  31. password: "R8ZKoXbtquSv"
  32. # Example configuration entry
  33. web_server:
  34. port: 80
  35. # determine Sunrise and Sunset based on geographical location
  36. sun:
  37. latitude: 48.77034
  38. longitude: 8.34306
  39. on_sunrise:
  40. - then:
  41. - logger.log: Good morning!
  42. # Custom elevation, will be called shortly after the trigger above.
  43. #- elevation: 5°
  44. # then:
  45. # - logger.log: Good morning 2!
  46. on_sunset:
  47. - then:
  48. - logger.log: Good evening!
  49. captive_portal:
  50. # Example configuration entry
  51. text_sensor:
  52. - platform: sun
  53. name: Sun Next Sunrise
  54. type: sunrise
  55. - platform: sun
  56. name: Sun Next Sunset
  57. type: sunset
  58. - platform: version
  59. name: Platform
  60. on_value:
  61. then:
  62. - lambda: |-
  63. ESP_LOGD("main", "The current version is %s", x.c_str());
  64. - platform: template
  65. name: "Template Text Sensor"
  66. lambda: |-
  67. char str[17];
  68. time_t currTime = id(esptime).now().timestamp ;
  69. strftime(str, sizeof(str), "%Y-%m-%d %H:%M", localtime(&currTime));
  70. return {str};
  71. update_interval: 60s
  72. - platform: template
  73. name: "Sunrise"
  74. id: sunrise_shift
  75. lambda: |-
  76. auto sunrise = id(sun_sun).sunrise();
  77. auto time = id(esptime).now();
  78. sun_sun->set_latitude(48.77034);
  79. sun_sun->set_longitude(8.34306);
  80. if (!sunrise.has_value())
  81. return {"NaN"};
  82. int sunrise_min = sunrise.value().hour * 60 + sunrise.value().minute + ${shift_sunrise} ;
  83. int sunrise_hour = int(sunrise_min / 60);
  84. int sunrise_minute = sunrise_min % 60;
  85. ESP_LOGD("sunrise_shift", "sunrise.value.()hour is %i , sunrise.value().minute is %i ", sunrise.value().hour , sunrise.value().minute);
  86. ESP_LOGD("sunrise_shift", "sunrise_min is %i , sunrise_hour is %i ,sunrise_minute is %i ", sunrise_min , sunrise_hour , sunrise_minute);
  87. char buffer[6];
  88. sprintf(buffer,"%02i:%02i", sunrise_hour , sunrise_minute);
  89. return {buffer};
  90. # ESP_LOGD("sunset_shift", "state relay is %i ", id(relay).state );
  91. # if((sunrise_hour == time.hour) and (sunrise_minute == time.minute))
  92. # if(id(relay).state)
  93. # id(relay).turn_off();
  94. # ESP_LOGD("sunset_shift", "change relay is OFF" );
  95. - platform: template
  96. name: "Sunset"
  97. id: sunset_shift
  98. lambda: |-
  99. auto sunset = id(sun_sun).sunset();
  100. auto time = id(esptime).now();
  101. if (!sunset.has_value())
  102. return {"NaN"};
  103. int sunset_min = sunset.value().hour * 60 + sunset.value().minute + ${shift_sunset};
  104. int sunset_hour = int(sunset_min / 60);
  105. int sunset_minute = sunset_min % 60;
  106. ESP_LOGD("sunset_shift", "sunset.value.()hour is %i , sunset.value().minute is %i ", sunset.value().hour , sunset.value().minute);
  107. ESP_LOGD("sunset_shift", "sunset_min is %i , sunset_hour is %i ,sunset_minute is %i ", sunset_min , sunset_hour , sunset_minute);
  108. char buffer[6];
  109. sprintf(buffer,"%02i:%02i", sunset_hour , sunset_minute);
  110. return {buffer};
  111. # ESP_LOGD("sunset_shift", "state relay is %i ", id(relay).state );
  112. # if((sunset_hour == time.hour) and (sunset_minute == time.minute))
  113. # if(!id(relay).state)
  114. # id(relay).turn_on();
  115. # ESP_LOGD("sunset_shift", "change relay is ON" );
  116. - platform: template
  117. name: "Sunset Algo"
  118. lambda: |-
  119. int sunrise;
  120. int sunset;
  121. auto sunSensor = new MySunTextSensor();
  122. App.register_component(sunSensor);
  123. auto sun_sensor = sunSensor->sun;
  124. auto time = id(esptime).now();
  125. sun_sensor->setPosition(48.77034, 8.34306, 1);
  126. sun_sensor->setCurrentDate(2021, 03, 05);
  127. sunrise = static_cast<int>(sun_sensor->calcSunrise());
  128. sunset = static_cast<int>(sun_sensor->calcSunset());
  129. char buffer[100];
  130. sprintf(buffer, "Sunrise at %.2d:%.2dam, Sunset at %.2d:%.2dpm", (sunrise/60), (sunrise%60), (sunset/60), (sunset%60));
  131. return {buffer};
  132. # sun_sensor->setCurrentDate(time.year(), time.month(), time.day());
  133. #text_sensors:
  134. # name: "My Custom Text Sensor"