brokkolo

Untitled

May 20th, 2025
159
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 190.08 KB | None | 0 0
  1. type: custom:layout-card
  2. layout_type: custom:grid-layout
  3. cards:
  4. - type: vertical-stack
  5. cards:
  6. - type: entities
  7. entities:
  8. - type: custom:hui-element
  9. card_type: horizontal-stack
  10. cards:
  11. - type: custom:button-card
  12. entity: input_text.irrigation_current_status
  13. name: |
  14. [[[ return states['sensor.irrigation_next_run'].state ]]]
  15. label: |
  16. [[[
  17. var cycle1_running = states['input_boolean.irrigation_cycle1_running'].state;
  18. var cycle2_running = states['input_boolean.irrigation_cycle2_running'].state;
  19. var cycle3_running = states['input_boolean.irrigation_cycle3_running'].state;
  20.  
  21. if (cycle1_running == 'on')
  22. return 'RUNNING: ';
  23. else if (cycle2_running == 'on')
  24. return 'RUNNING: ';
  25. else if (cycle3_running == 'on')
  26. return 'RUNNING: ';
  27. else
  28. return 'NEXT RUN: ';
  29. ]]]
  30. show_label: true
  31. show_icon: false
  32. styles:
  33. grid:
  34. - grid-template-areas: "\"l n clash_icon warning\""
  35. - grid-template-columns: min-content min-content 8% 1fr
  36. - grid-template-rows: 1fr
  37. card:
  38. - border: none !important
  39. - background: none
  40. - padding: 0.3em 0em 0em 0.5em
  41. name:
  42. - justify-self: start
  43. - align-self: start
  44. - padding: 0em 0.5em
  45. - color: |
  46. [[[
  47. if (states['input_boolean.irrigation_master_control_switch'].state == 'off')
  48. return 'rgb(255, 165, 0)';
  49. else
  50. return 'var(--secondary-text-color)';
  51. ]]]
  52. label:
  53. - color: var(--primary-text-color)
  54. - justify-self: start
  55. - align-self: start
  56. custom_fields:
  57. clash_icon:
  58. - padding: 0em 0.5em
  59. - color: |
  60. [[[
  61. switch(states['binary_sensor.irrigation_cycle_start_clash'].state) {
  62. case 'on':
  63. return 'rgb(255, 165, 0)';
  64. case 'off':
  65. return 'transparent';
  66. }
  67. ]]]
  68. warning:
  69. - color: var(--accent-color)
  70. - justify-self: end
  71. custom_fields:
  72. clash_icon: |
  73. [[[
  74. return '<ha-icon icon="mdi:alert-rhombus-outline"></ha-icon>';
  75. ]]]
  76. warning: |
  77. [[[
  78. switch(states['input_boolean.irrigation_master_control_switch'].state) {
  79. case 'off':
  80. return '';
  81. case 'on':
  82. if (states['input_boolean.irrigation_testing_mode'].state == 'on')
  83. return '(Testing Mode is On)';
  84. }
  85. ]]]
  86. tap_action:
  87. action: |
  88. [[[
  89. if (states['binary_sensor.irrigation_cycle_start_clash'].state == 'on')
  90. return 'fire-dom-event';
  91. else
  92. return 'none';
  93. ]]]
  94. browser_mod:
  95. service: browser_mod.popup
  96. data:
  97. title: ⚠️ CYCLE SCHEDULE CLASH
  98. content:
  99. type: markdown
  100. content: >
  101. #### WARNING! You have overlapping cycle schedules...
  102.  
  103.  
  104. {{
  105. state_attr('binary_sensor.irrigation_cycle_start_clash',
  106. 'clash_text') }}
  107.  
  108.  
  109. Please check and correct.
  110. style:
  111. $: >
  112. .mdc-dialog .mdc-dialog__container
  113. .mdc-dialog__surface {
  114. font-family: {% raw %}{{ states('input_text.irrigation_ui_font_family') }}{% endraw %};
  115. }
  116. - type: custom:button-card
  117. icon: mdi:stop-circle-outline
  118. show_name: false
  119. tap_action:
  120. action: |
  121. [[[
  122. if (states['input_boolean.irrigation_cycle1_running'].state == 'on')
  123. return 'call-service';
  124. else if (states['input_boolean.irrigation_cycle2_running'].state == 'on')
  125. return 'call-service';
  126. else if (states['input_boolean.irrigation_cycle3_running'].state == 'on')
  127. return 'call-service';
  128. else
  129. return 'none';
  130. ]]]
  131. service: script.irrigation_cancel_irrigation
  132. service_data:
  133. cycle: |
  134. [[[
  135. if (states['input_boolean.irrigation_cycle1_running'].state == 'on')
  136. return 'cycle1';
  137. else if (states['input_boolean.irrigation_cycle2_running'].state == 'on')
  138. return 'cycle2';
  139. else if (states['input_boolean.irrigation_cycle3_running'].state == 'on')
  140. return 'cycle3';
  141. else
  142. return 'none';
  143. ]]]
  144. zone: |
  145. [[[
  146. if (states['timer.irrigation_zone1_timer'].state == 'active')
  147. return 'zone1';
  148. else if (states['timer.irrigation_zone2_timer'].state == 'active')
  149. return 'zone2';
  150. else if (states['timer.irrigation_zone3_timer'].state == 'active')
  151. return 'zone3';
  152. else if (states['timer.irrigation_zone4_timer'].state == 'active')
  153. return 'zone4';
  154. else
  155. return 'none';
  156. ]]]
  157. styles:
  158. card:
  159. - border: none !important
  160. - background: none
  161. - width: 1.8em
  162. - display: |
  163. [[[
  164. if (states['input_boolean.irrigation_cycle1_running'].state == 'off' &&
  165. states['input_boolean.irrigation_cycle2_running'].state == 'off' &&
  166. states['input_boolean.irrigation_cycle3_running'].state == 'of')
  167. return 'none';
  168. ]]]
  169. icon:
  170. - color: |
  171. [[[
  172. if (states['input_boolean.irrigation_cycle1_running'].state == 'on')
  173. return 'red';
  174. else if (states['input_boolean.irrigation_cycle2_running'].state == 'on')
  175. return 'red';
  176. else if (states['input_boolean.irrigation_cycle3_running'].state == 'on')
  177. return 'red';
  178. else return 'var(--primary-background-color)';
  179. ]]]
  180. - width: 1.8em
  181. - type: custom:button-card
  182. entity: input_boolean.irrigation_master_control_switch
  183. icon: |
  184. [[[
  185. if (states['input_boolean.irrigation_master_control_switch'].state == 'off')
  186. return 'mdi:toggle-switch-off-outline';
  187. else return 'mdi:toggle-switch-outline';
  188. ]]]
  189. show_name: false
  190. styles:
  191. card:
  192. - border: none !important
  193. - background: none
  194. - width: 1.8em
  195. icon:
  196. - color: |
  197. [[[
  198. if (states['input_boolean.irrigation_master_control_switch'].state == 'off')
  199. return 'var(--text-color)';
  200. else return 'var(--accent-color)';
  201. ]]]
  202. - width: 1.8em
  203. - type: entities
  204. entities:
  205. - type: custom:button-card
  206. entity: input_text.irrigation_current_status
  207. show_icon: false
  208. show_name: false
  209. show_state: true
  210. styles:
  211. card:
  212. - border: none
  213. - color: var(--secondary-text-color)
  214. - padding: 0em
  215. - background: none
  216. state:
  217. - justify-self: start
  218. - padding-left: 0.5em
  219. tap_action:
  220. action: none
  221. state:
  222. - value: Changing Zone...
  223. styles:
  224. state:
  225. - animation: blink 2s ease infinite
  226. - type: custom:hui-element
  227. card_type: conditional
  228. conditions:
  229. - entity: timer.irrigation_zone1_timer
  230. state: active
  231. card:
  232. type: custom:button-card
  233. entity: timer.irrigation_zone1_timer
  234. icon: mdi:sprinkler-variant
  235. size: 60%
  236. show_state: true
  237. show_name: false
  238. show_label: true
  239. label: |
  240. [[[
  241. if (states['input_boolean.irrigation_cycle1_running'].state == 'on')
  242. var cycle = 'cycle1';
  243. else if (states['input_boolean.irrigation_cycle2_running'].state == 'on')
  244. var cycle = 'cycle2';
  245. else if (states['input_boolean.irrigation_cycle3_running'].state == 'on')
  246. var cycle = 'cycle3';
  247. else
  248. var cycle = 'cycle0';
  249.  
  250. var zone = 'zone1';
  251. var zone_name = states['input_text.irrigation_' + zone + '_name' ].state;
  252. var zone_timer_status = entity.state;
  253.  
  254. if (cycle == 'cycle0')
  255. return zone_name;
  256. else if (zone_timer_status == 'active')
  257. return 'Watering ' + zone_name;
  258. else
  259. return zone_name;
  260. ]]]
  261. tap_action:
  262. action: none
  263. styles:
  264. grid:
  265. - grid-template-areas: "\"i l s\""
  266. - grid-template-columns: 15% 50% 1fr
  267. - grid-template-rows: min-content
  268. card:
  269. - color: var(--accent-color)
  270. - font-size: 16px
  271. - font-family: |
  272. [[[
  273. return states['input_text.irrigation_ui_font_family'].state
  274. ]]]
  275. - padding: 0.4em
  276. - height: 2.4em
  277. label:
  278. - color: var(--secondary-text-color)
  279. - justify-self: start
  280. - justify-text: start
  281. icon:
  282. - color: var(--accent-color)
  283. - type: custom:hui-element
  284. card_type: conditional
  285. conditions:
  286. - entity: timer.irrigation_zone2_timer
  287. state: active
  288. card:
  289. type: custom:button-card
  290. entity: timer.irrigation_zone2_timer
  291. icon: mdi:sprinkler-variant
  292. size: 60%
  293. show_state: true
  294. show_name: false
  295. show_label: true
  296. label: |
  297. [[[
  298. if (states['input_boolean.irrigation_cycle1_running'].state == 'on')
  299. var cycle = 'cycle1';
  300. else if (states['input_boolean.irrigation_cycle2_running'].state == 'on')
  301. var cycle = 'cycle2';
  302. else if (states['input_boolean.irrigation_cycle3_running'].state == 'on')
  303. var cycle = 'cycle3';
  304. else
  305. var cycle = 'cycle0';
  306.  
  307. var zone = 'zone2';
  308. var zone_name = states['input_text.irrigation_' + zone + '_name' ].state;
  309. var zone_timer_status = entity.state;
  310.  
  311. if (cycle == 'cycle0')
  312. return zone_name;
  313. else if (zone_timer_status == 'active')
  314. return 'Watering ' + zone_name;
  315. else
  316. return zone_name;
  317. ]]]
  318. tap_action:
  319. action: none
  320. styles:
  321. grid:
  322. - grid-template-areas: "\"i l s\""
  323. - grid-template-columns: 15% 50% 1fr
  324. - grid-template-rows: min-content
  325. card:
  326. - color: var(--accent-color)
  327. - padding: 0.4em
  328. - height: 2.4em
  329. label:
  330. - color: var(--secondary-text-color)
  331. - justify-self: start
  332. - justify-text: start
  333. icon:
  334. - color: var(--accent-color)
  335. - type: custom:hui-element
  336. card_type: conditional
  337. conditions:
  338. - entity: timer.irrigation_zone3_timer
  339. state: active
  340. card:
  341. type: custom:button-card
  342. entity: timer.irrigation_zone3_timer
  343. icon: mdi:sprinkler-variant
  344. size: 60%
  345. show_state: true
  346. show_name: false
  347. show_label: true
  348. label: |
  349. [[[
  350. if (states['input_boolean.irrigation_cycle1_running'].state == 'on')
  351. var cycle = 'cycle1';
  352. else if (states['input_boolean.irrigation_cycle2_running'].state == 'on')
  353. var cycle = 'cycle2';
  354. else if (states['input_boolean.irrigation_cycle3_running'].state == 'on')
  355. var cycle = 'cycle3';
  356. else
  357. var cycle = 'cycle0';
  358.  
  359. var zone = 'zone3';
  360. var zone_name = states['input_text.irrigation_' + zone + '_name' ].state;
  361. var zone_timer_status = entity.state;
  362.  
  363. if (cycle == 'cycle0')
  364. return zone_name;
  365. else if (zone_timer_status == 'active')
  366. return 'Watering ' + zone_name;
  367. else
  368. return zone_name;
  369. ]]]
  370. tap_action:
  371. action: none
  372. styles:
  373. grid:
  374. - grid-template-areas: "\"i l s\""
  375. - grid-template-columns: 15% 50% 1fr
  376. - grid-template-rows: min-content
  377. card:
  378. - color: var(--accent-color)
  379. - padding: 0.4em
  380. - height: 2.4em
  381. label:
  382. - color: var(--secondary-text-color)
  383. - justify-self: start
  384. - justify-text: start
  385. icon:
  386. - color: var(--accent-color)
  387. - type: custom:hui-element
  388. card_type: conditional
  389. conditions:
  390. - entity: timer.irrigation_zone4_timer
  391. state: active
  392. card:
  393. type: custom:button-card
  394. entity: timer.irrigation_zone4_timer
  395. icon: mdi:sprinkler-variant
  396. size: 60%
  397. show_state: true
  398. show_name: false
  399. show_label: true
  400. label: |
  401. [[[
  402. if (states['input_boolean.irrigation_cycle1_running'].state == 'on')
  403. var cycle = 'cycle1';
  404. else if (states['input_boolean.irrigation_cycle2_running'].state == 'on')
  405. var cycle = 'cycle2';
  406. else if (states['input_boolean.irrigation_cycle3_running'].state == 'on')
  407. var cycle = 'cycle3';
  408. else
  409. var cycle = 'cycle0';
  410.  
  411. var zone = 'zone4';
  412. var zone_name = states['input_text.irrigation_' + zone + '_name' ].state;
  413. var zone_timer_status = entity.state;
  414.  
  415. if (cycle == 'cycle0')
  416. return zone_name;
  417. else if (zone_timer_status == 'active')
  418. return 'Watering ' + zone_name;
  419. else
  420. return zone_name;
  421. ]]]
  422. tap_action:
  423. action: none
  424. styles:
  425. grid:
  426. - grid-template-areas: "\"i l s\""
  427. - grid-template-columns: 15% 50% 1fr
  428. - grid-template-rows: min-content
  429. card:
  430. - color: var(--accent-color)
  431. - padding: 0.4em
  432. - height: 2.4em
  433. label:
  434. - color: var(--secondary-text-color)
  435. - justify-self: start
  436. - justify-text: start
  437. icon:
  438. - color: var(--accent-color)
  439. card_mod:
  440. style: |
  441. ha-card {
  442. } #states {
  443. padding-bottom: 0.3em;
  444. }
  445. - type: entities
  446. entities:
  447. - type: custom:fold-entity-row
  448. padding: 0em
  449. head:
  450. entity: sensor.blankblank
  451. name: Irrigation Settings
  452. icon: mdi:cog
  453. tap_action:
  454. action: fire-dom-event
  455. fold_row: true
  456. entities:
  457. - type: section
  458. - entity: input_number.irrigation_pause_between_zones_in_seconds
  459. name: Time settings
  460. type: custom:multiple-entity-row
  461. state_header: Pause
  462. entities:
  463. - entity: >-
  464. input_number.irrigation_weather_adjusted_minimum_duration_in_seconds
  465. name: Min
  466. - entity: >-
  467. input_number.irrigation_weather_adjusted_maximum_duration_in_minutes
  468. name: Max
  469. - type: section
  470. - entity: input_boolean.irrigation_testing_mode
  471. name: Testing mode
  472. state_color: true
  473. type: custom:multiple-entity-row
  474. entities:
  475. - icon: mdi:pipe-disconnected
  476. state_color: true
  477. entity: input_boolean.irrigation_disable_switches
  478. name: false
  479. - type: section
  480. - entity: input_boolean.irrigation_notify_user2
  481. toggle: true
  482. type: custom:multiple-entity-row
  483. icon: mdi:message
  484. name: Notification
  485. entities:
  486. - entity: input_text.notifications_user1_name
  487. name: false
  488. - entity: input_boolean.irrigation_notify_user1
  489. name: false
  490. toggle: true
  491. - entity: input_text.notifications_user2_name
  492. name: false
  493. - entity: input_boolean.logging_irrigation
  494. name: Log
  495. type: custom:multiple-entity-row
  496. state_header: Logging
  497. entities:
  498. - entity: input_boolean.logging_irrigation_clear_log
  499. name: clear
  500. - type: section
  501. - entity: input_boolean.irrigation_ignore_schedule_if_raining
  502. type: custom:multiple-entity-row
  503. name: Weather settings
  504. icon: mdi:cog
  505. toggle: true
  506. state_header: Off if raining
  507. entities:
  508. - icon: mdi:weather-partly-snowy-rainy
  509. name: Weather sensors
  510. tap_action:
  511. action: fire-dom-event
  512. browser_mod:
  513. service: browser_mod.popup
  514. data:
  515. title: Weather Sensors
  516. content:
  517. type: vertical-stack
  518. cards:
  519. - type: markdown
  520. content: >
  521. For the 'Weather Outlook' on the Cycles page
  522. you need to create the following sensor:
  523. card_mod:
  524. style: |
  525. ha-card {
  526. font-family: {% raw %}{{ states('input_text.irrigation_ui_font_family') }}{% endraw %};
  527. font-size: 16px;
  528. }
  529. - type: markdown
  530. content: |
  531. sensor.irrigation_weather_outlook
  532. card_mod:
  533. style: |
  534. ha-card {
  535. font-family: Monospace;
  536. font-size: 14px;
  537. text-align: center;
  538. }
  539. - type: entities
  540. entities:
  541. - type: section
  542. label: >-
  543. Rainfall Sensors (leave blank to reset
  544. default)
  545. card_mod:
  546. style:
  547. hui-generic-entity-row:
  548. $: |
  549. .info {
  550. text-overflow: unset !important;
  551. white-space: unset !important;
  552. }
  553. - entity: >-
  554. input_text.irrigation_external_sensor_raining_now
  555. name: Raining Now
  556. card_mod:
  557. style:
  558. hui-generic-entity-row:
  559. $: |
  560. .info {
  561. text-overflow: unset !important;
  562. white-space: unset !important;
  563. }
  564. - entity: >-
  565. input_text.irrigation_external_sensor_rainfall_today
  566. name: Rainfall in the past 24h
  567. card_mod:
  568. style:
  569. hui-generic-entity-row:
  570. $: |
  571. .info {
  572. text-overflow: unset !important;
  573. white-space: unset !important;
  574. }
  575. - entity: >-
  576. input_text.irrigation_external_sensor_rainfall_yesterday
  577. name: Rainfall 48 to 24 hours ago
  578. card_mod:
  579. style:
  580. hui-generic-entity-row:
  581. $: |
  582. .info {
  583. text-overflow: unset !important;
  584. white-space: unset !important;
  585. }
  586. - entity: >-
  587. input_text.irrigation_external_sensor_rainfall_2
  588. name: Rainfall 72 to 48 hours ago
  589. card_mod:
  590. style:
  591. hui-generic-entity-row:
  592. $: |
  593. .info {
  594. text-overflow: unset !important;
  595. white-space: unset !important;
  596. }
  597. - entity: >-
  598. input_text.irrigation_external_sensor_rainfall_3
  599. name: Rainfall 96 to 72 hours ago
  600. card_mod:
  601. style:
  602. hui-generic-entity-row:
  603. $: |
  604. .info {
  605. text-overflow: unset !important;
  606. white-space: unset !important;
  607. }
  608. - entity: >-
  609. input_text.irrigation_external_sensor_rainfall_4
  610. name: Rainfall 120 to 96 hours ago
  611. card_mod:
  612. style:
  613. hui-generic-entity-row:
  614. $: |
  615. .info {
  616. text-overflow: unset !important;
  617. white-space: unset !important;
  618. }
  619. - entity: >-
  620. input_text.irrigation_external_sensor_forecast_rain
  621. name: Forecast Rain
  622. card_mod:
  623. style:
  624. hui-generic-entity-row:
  625. $: |
  626. .info {
  627. text-overflow: unset !important;
  628. white-space: unset !important;
  629. }
  630. - entity: >-
  631. input_boolean.irrigation_show_smartweather_stations
  632. name: Using SmartWeather (show stations)
  633. card_mod:
  634. style:
  635. hui-generic-entity-row:
  636. $: |
  637. .info {
  638. text-overflow: unset !important;
  639. white-space: unset !important;
  640. }
  641. - type: section
  642. label: >-
  643. Temperature Sensors (leave blank to reset
  644. default)
  645. - entity: >-
  646. input_text.irrigation_external_sensor_forecast_high_temp
  647. name: Forecast High Temperature
  648. card_mod:
  649. style:
  650. hui-generic-entity-row:
  651. $: |
  652. .info {
  653. text-overflow: unset !important;
  654. white-space: unset !important;
  655. }
  656. - entity: >-
  657. input_text.irrigation_external_sensor_current_temp
  658. name: Current Temperature
  659. card_mod:
  660. style:
  661. hui-generic-entity-row:
  662. $: |
  663. .info {
  664. text-overflow: unset !important;
  665. white-space: unset !important;
  666. }
  667. card_mod:
  668. style: |
  669. ha-card {
  670. font-family: {% raw %}{{ states('input_text.irrigation_ui_font_family') }}{% endraw %};
  671. }
  672. style:
  673. $: >
  674. .mdc-dialog .mdc-dialog__container
  675. .mdc-dialog__surface {
  676. font-family: {% raw %}{{ states('input_text.irrigation_ui_font_family') }}{% endraw %};
  677. }
  678. - entity: input_number.irrigation_days_of_temp_history_used
  679. type: custom:multiple-entity-row
  680. name: Temperature Settings
  681. icon: mdi:thermometer
  682. state_header: Days used
  683. entities:
  684. - entity: input_number.irrigation_temperature_baseline
  685. name: Baseline
  686. - entity: input_number.irrigation_days_of_rainfall_history_used
  687. type: custom:multiple-entity-row
  688. name: Rainfall Settings
  689. state_header: Days used
  690. icon: mdi:weather-rainy
  691. entities:
  692. - entity: input_number.irrigation_rainfall_threshold
  693. name: Threshhold
  694. - entity: input_number.irrigation_rainfall_percentage_4
  695. type: custom:multiple-entity-row
  696. name: Rainfall %
  697. state_header: 4th day
  698. entities:
  699. - entity: input_number.irrigation_rainfall_percentage_1
  700. name: 1st day
  701. - entity: input_number.irrigation_rainfall_percentage_2
  702. name: 2nd day
  703. - entity: input_number.irrigation_rainfall_percentage_3
  704. name: 3rd day
  705. card_mod:
  706. style: |
  707. div#head ha-icon {
  708. color: gray;
  709. }
  710. - type: custom:fold-entity-row
  711. padding: 0em
  712. open: true
  713. head:
  714. entity: sensor.blankblank
  715. name: Irrigation History
  716. icon: mdi:calendar-clock
  717. tap_action:
  718. action: fire-dom-event
  719. fold_row: true
  720. entities:
  721. - type: custom:vertical-stack-in-card
  722. cards:
  723. - type: custom:button-card
  724. name: Irrigation time
  725. show_icon: false
  726. tap_action:
  727. action: none
  728. styles:
  729. grid:
  730. - grid-template-areas: "\"n last total_today total_yesterday\""
  731. - grid-template-columns: 30% 25% 20% 25%
  732. - grid-template-rows: 1fr
  733. card:
  734. - display: null
  735. - padding: 10px
  736. - font-size: 14px
  737. name:
  738. - justify-self: end
  739. - color: var(--secondary-text-color)
  740. last:
  741. - justify-self: end
  742. - color: var(--secondary-text-color)
  743. total_today:
  744. - justify-self: start
  745. - color: var(--secondary-text-color)
  746. total_yesterday:
  747. - justify-self: start
  748. - color: var(--secondary-text-color)
  749. custom_fields:
  750. last: Last
  751. total_yesterday: Yesterday
  752. total_today: Today
  753. - type: custom:button-card
  754. entity: input_text.irrigation_zone2_previous_duration_in_seconds
  755. triggers_update:
  756. - sensor.irrigation_zone2_total_time_today
  757. - sensor.irrigation_zone2_total_time_yesterday
  758. name: |
  759. [[[
  760. var zone = 'zone2';
  761. return states['input_text.irrigation_' + zone + '_name'].state + '&nbsp-&nbsp';
  762. ]]]
  763. show_icon: false
  764. tap_action:
  765. action: none
  766. styles:
  767. grid:
  768. - grid-template-areas: "\"n last total_today total_yesterday\""
  769. - grid-template-columns: 30% 25% 20% 25%
  770. - grid-template-rows: 1fr
  771. card:
  772. - display: |
  773. [[[
  774. var zone = 'zone2';
  775. zone = Number(zone.replace('zone', ''));
  776. var number_of_zones = Number(states['input_number.irrigation_number_of_zones'].state);
  777. var show_history = states['input_boolean.irrigation_ui_show_status_history'].state;
  778. ]]]
  779. - padding: 0px
  780. - font-size: 14px
  781. - background: none
  782. name:
  783. - justify-self: end
  784. - color: var(--secondary-text-color)
  785. last:
  786. - justify-self: end
  787. - color: var(--secondary-text-color)
  788. total_today:
  789. - justify-self: start
  790. - color: var(--secondary-text-color)
  791. total_yesterday:
  792. - justify-self: start
  793. - color: var(--secondary-text-color)
  794. custom_fields:
  795. total_yesterday: |
  796. [[[
  797. var zone = 'zone2';
  798. var duration = states['sensor.irrigation_zone1_total_time_yesterday'].state;
  799. var duration_s = parseFloat(duration) * 3600;
  800. var h = Math.floor(duration_s / 3600);
  801. var m = Math.floor(duration_s % 3600 / 60);
  802. var s = Math.floor(duration_s % 3600 % 60);
  803.  
  804. var hDisplay = h > 0 ? h + "h " : "";
  805. var mDisplay = h > 0 ? m + "m " : m > 0 ? m + "m " : "";
  806. var sDisplay = s + "s ";
  807.  
  808. return hDisplay + mDisplay + sDisplay;
  809. ]]]
  810. total_today: |
  811. [[[
  812. var zone = 'zone2';
  813. var duration = states['sensor.irrigation_' + zone + '_total_time_today'].state;
  814. var duration_s = parseFloat(duration) * 3600;
  815. var h = Math.floor(duration_s / 3600);
  816. var m = Math.floor(duration_s % 3600 / 60);
  817. var s = Math.floor(duration_s % 3600 % 60);
  818. var hDisplay = h > 0 ? h + "h " : "";
  819. var mDisplay = h > 0 ? m + "m " : m > 0 ? m + "m " : "";
  820. var sDisplay = s + "s ";
  821. return hDisplay + mDisplay + sDisplay;
  822. ]]]
  823. last: |
  824. [[[
  825. if (entity.state === '')
  826. return '';
  827. else if (isNaN(entity.state))
  828. return entity.state;
  829. else
  830. var total_seconds = parseFloat(entity.state);
  831. var minutes = Math.floor(total_seconds / 60);
  832. var seconds = (total_seconds % 60).toFixed();
  833. while (seconds.length < 2) {seconds = "0" + seconds};
  834. return minutes + "' " + seconds + '"';
  835. ]]]
  836. - type: custom:button-card
  837. entity: input_text.irrigation_zone1_previous_duration_in_seconds
  838. triggers_update:
  839. - sensor.irrigation_zone1_total_time_today
  840. - sensor.irrigation_zone1_total_time_yesterday
  841. name: |
  842. [[[
  843. var zone = 'zone1';
  844. return states['input_text.irrigation_' + zone + '_name'].state + '&nbsp-&nbsp';
  845. ]]]
  846. show_icon: false
  847. tap_action:
  848. action: none
  849. styles:
  850. grid:
  851. - grid-template-areas: "\"n last total_today total_yesterday\""
  852. - grid-template-columns: 30% 25% 20% 25%
  853. - grid-template-rows: 1fr
  854. card:
  855. - display: |
  856. [[[
  857. var zone = 'zone1';
  858. zone = Number(zone.replace('zone', ''));
  859. var number_of_zones = Number(states['input_number.irrigation_number_of_zones'].state);
  860. var show_history = states['input_boolean.irrigation_ui_show_status_history'].state;
  861. ]]]
  862. - font-size: 14px
  863. - padding: 0px
  864. - background: none
  865. name:
  866. - justify-self: end
  867. - color: var(--secondary-text-color)
  868. last:
  869. - justify-self: end
  870. - color: var(--secondary-text-color)
  871. total_today:
  872. - justify-self: start
  873. - color: var(--secondary-text-color)
  874. total_yesterday:
  875. - justify-self: start
  876. - color: var(--secondary-text-color)
  877. custom_fields:
  878. total_yesterday: |
  879. [[[
  880. var zone = 'zone1';
  881. var duration = states['sensor.irrigation_zone1_total_time_yesterday'].state;
  882. var duration_s = parseFloat(duration) * 3600;
  883. var h = Math.floor(duration_s / 3600);
  884. var m = Math.floor(duration_s % 3600 / 60);
  885. var s = Math.floor(duration_s % 3600 % 60);
  886.  
  887. var hDisplay = h > 0 ? h + "h " : "";
  888. var mDisplay = h > 0 ? m + "m " : m > 0 ? m + "m " : "";
  889. var sDisplay = s + "s ";
  890.  
  891. return hDisplay + mDisplay + sDisplay;
  892. ]]]
  893. total_today: |
  894. [[[
  895. var zone = 'zone1';
  896. var duration = states['sensor.irrigation_' + zone + '_total_time_today'].state;
  897. var duration_s = parseFloat(duration) * 3600;
  898. var h = Math.floor(duration_s / 3600);
  899. var m = Math.floor(duration_s % 3600 / 60);
  900. var s = Math.floor(duration_s % 3600 % 60);
  901. var hDisplay = h > 0 ? h + "h " : "";
  902. var mDisplay = h > 0 ? m + "m " : m > 0 ? m + "m " : "";
  903. var sDisplay = s + "s ";
  904. return hDisplay + mDisplay + sDisplay;
  905. ]]]
  906. last: |
  907. [[[
  908. if (entity.state === '')
  909. return '';
  910. else if (isNaN(entity.state))
  911. return entity.state;
  912. else
  913. var total_seconds = parseFloat(entity.state);
  914. var minutes = Math.floor(total_seconds / 60);
  915. var seconds = (total_seconds % 60).toFixed();
  916. while (seconds.length < 2) {seconds = "0" + seconds};
  917. return minutes + "' " + seconds + '"';
  918. ]]]
  919. - type: custom:button-card
  920. entity: input_text.irrigation_zone3_previous_duration_in_seconds
  921. triggers_update:
  922. - sensor.irrigation_zone3_total_time_today
  923. - sensor.irrigation_zone3_total_time_yesterday
  924. name: |
  925. [[[
  926. var zone = 'zone3';
  927. return states['input_text.irrigation_' + zone + '_name'].state + '&nbsp-&nbsp';
  928. ]]]
  929. show_icon: false
  930. tap_action:
  931. action: none
  932. styles:
  933. grid:
  934. - grid-template-areas: "\"n last total_today total_yesterday\""
  935. - grid-template-columns: 30% 25% 20% 25%
  936. - grid-template-rows: 1fr
  937. card:
  938. - display: |
  939. [[[
  940. var zone = 'zone3';
  941. zone = Number(zone.replace('zone', ''));
  942. var number_of_zones = Number(states['input_number.irrigation_number_of_zones'].state);
  943. var show_history = states['input_boolean.irrigation_ui_show_status_history'].state;
  944. ]]]
  945. - font-size: 14px
  946. - padding: 0px
  947. - background: none
  948. name:
  949. - justify-self: end
  950. - color: var(--secondary-text-color)
  951. last:
  952. - justify-self: end
  953. - color: var(--secondary-text-color)
  954. total_today:
  955. - justify-self: start
  956. - color: var(--secondary-text-color)
  957. total_yesterday:
  958. - justify-self: start
  959. - color: var(--secondary-text-color)
  960. custom_fields:
  961. total_yesterday: |
  962. [[[
  963. var zone = 'zone3';
  964. var duration = states['sensor.irrigation_zone1_total_time_yesterday'].state;
  965. var duration_s = parseFloat(duration) * 3600;
  966. var h = Math.floor(duration_s / 3600);
  967. var m = Math.floor(duration_s % 3600 / 60);
  968. var s = Math.floor(duration_s % 3600 % 60);
  969.  
  970. var hDisplay = h > 0 ? h + "h " : "";
  971. var mDisplay = h > 0 ? m + "m " : m > 0 ? m + "m " : "";
  972. var sDisplay = s + "s ";
  973.  
  974. return hDisplay + mDisplay + sDisplay;
  975. ]]]
  976. total_today: |
  977. [[[
  978. var zone = 'zone3';
  979. var duration = states['sensor.irrigation_' + zone + '_total_time_today'].state;
  980. var duration_s = parseFloat(duration) * 3600;
  981. var h = Math.floor(duration_s / 3600);
  982. var m = Math.floor(duration_s % 3600 / 60);
  983. var s = Math.floor(duration_s % 3600 % 60);
  984. var hDisplay = h > 0 ? h + "h " : "";
  985. var mDisplay = h > 0 ? m + "m " : m > 0 ? m + "m " : "";
  986. var sDisplay = s + "s ";
  987. return hDisplay + mDisplay + sDisplay;
  988. ]]]
  989. last: |
  990. [[[
  991. if (entity.state === '')
  992. return '';
  993. else if (isNaN(entity.state))
  994. return entity.state;
  995. else
  996. var total_seconds = parseFloat(entity.state);
  997. var minutes = Math.floor(total_seconds / 60);
  998. var seconds = (total_seconds % 60).toFixed();
  999. while (seconds.length < 2) {seconds = "0" + seconds};
  1000. return minutes + "' " + seconds + '"';
  1001. ]]]
  1002. - type: custom:button-card
  1003. entity: input_text.irrigation_zone4_previous_duration_in_seconds
  1004. triggers_update:
  1005. - sensor.irrigation_zone4_total_time_today
  1006. - sensor.irrigation_zone4_total_time_yesterday
  1007. name: |
  1008. [[[
  1009. var zone = 'zone4';
  1010. return states['input_text.irrigation_' + zone + '_name'].state + '&nbsp-&nbsp';
  1011. ]]]
  1012. show_icon: false
  1013. tap_action:
  1014. action: none
  1015. styles:
  1016. grid:
  1017. - grid-template-areas: "\"n last total_today total_yesterday\""
  1018. - grid-template-columns: 30% 25% 20% 25%
  1019. - grid-template-rows: 1fr
  1020. card:
  1021. - display: |
  1022. [[[
  1023. var zone = 'zone4';
  1024. zone = Number(zone.replace('zone', ''));
  1025. var number_of_zones = Number(states['input_number.irrigation_number_of_zones'].state);
  1026. var show_history = states['input_boolean.irrigation_ui_show_status_history'].state;
  1027. ]]]
  1028. - font-size: 14px
  1029. - padding: 0px
  1030. - background: none
  1031. name:
  1032. - justify-self: end
  1033. - color: var(--secondary-text-color)
  1034. last:
  1035. - justify-self: end
  1036. - color: var(--secondary-text-color)
  1037. total_today:
  1038. - justify-self: start
  1039. - color: var(--secondary-text-color)
  1040. total_yesterday:
  1041. - justify-self: start
  1042. - color: var(--secondary-text-color)
  1043. custom_fields:
  1044. total_yesterday: |
  1045. [[[
  1046. var zone = 'zone4';
  1047. var duration = states['sensor.irrigation_zone1_total_time_yesterday'].state;
  1048. var duration_s = parseFloat(duration) * 3600;
  1049. var h = Math.floor(duration_s / 3600);
  1050. var m = Math.floor(duration_s % 3600 / 60);
  1051. var s = Math.floor(duration_s % 3600 % 60);
  1052.  
  1053. var hDisplay = h > 0 ? h + "h " : "";
  1054. var mDisplay = h > 0 ? m + "m " : m > 0 ? m + "m " : "";
  1055. var sDisplay = s + "s ";
  1056.  
  1057. return hDisplay + mDisplay + sDisplay;
  1058. ]]]
  1059. total_today: |
  1060. [[[
  1061. var zone = 'zone4';
  1062. var duration = states['sensor.irrigation_' + zone + '_total_time_today'].state;
  1063. var duration_s = parseFloat(duration) * 3600;
  1064. var h = Math.floor(duration_s / 3600);
  1065. var m = Math.floor(duration_s % 3600 / 60);
  1066. var s = Math.floor(duration_s % 3600 % 60);
  1067. var hDisplay = h > 0 ? h + "h " : "";
  1068. var mDisplay = h > 0 ? m + "m " : m > 0 ? m + "m " : "";
  1069. var sDisplay = s + "s ";
  1070. return hDisplay + mDisplay + sDisplay;
  1071. ]]]
  1072. last: |
  1073. [[[
  1074. if (entity.state === '')
  1075. return '';
  1076. else if (isNaN(entity.state))
  1077. return entity.state;
  1078. else
  1079. var total_seconds = parseFloat(entity.state);
  1080. var minutes = Math.floor(total_seconds / 60);
  1081. var seconds = (total_seconds % 60).toFixed();
  1082. while (seconds.length < 2) {seconds = "0" + seconds};
  1083. return minutes + "' " + seconds + '"';
  1084. ]]]
  1085. - type: custom:button-card
  1086. entity: input_text.irrigation_previous_total_watering_time
  1087. name: |
  1088. [[[
  1089. var previous_run_date = states['input_text.irrigation_previous_run_date'].state;
  1090. var previous_run_time = states['input_text.irrigation_previous_run_time'].state;
  1091.  
  1092. var year = new Date();
  1093. var today = new Date();
  1094. var yesterday = new Date(Date.now() - 86400000);
  1095.  
  1096. year = year.getFullYear();
  1097.  
  1098. today = today.toDateString();
  1099. today = Date.parse(today);
  1100.  
  1101. yesterday = yesterday.toDateString();
  1102. yesterday = Date.parse(yesterday);
  1103.  
  1104. if (today == Date.parse(previous_run_date + ' ' + year))
  1105. return states['input_text.irrigation_previous_run_cycle_name'].state + ' Cycle - Today at ' + previous_run_time + '&nbsp-&nbsp';
  1106. else if (yesterday == Date.parse(previous_run_date + ' ' + year))
  1107. return states['input_text.irrigation_previous_run_cycle_name'].state + ' Cycle - Today at ' + previous_run_time + '&nbsp-&nbsp';
  1108. else
  1109. return states['input_text.irrigation_previous_run_cycle_name'].state + previous_run_date +
  1110. ' at ' +
  1111. previous_run_time;
  1112. ]]]
  1113. label: Last run:&nbsp&nbsp
  1114. show_label: true
  1115. show_icon: false
  1116. tap_action:
  1117. action: none
  1118. styles:
  1119. grid:
  1120. - grid-template-areas: "\"l n\""
  1121. - grid-template-columns: min-content 1fr
  1122. - grid-template-rows: min-content
  1123. card:
  1124. - font-size: 14px
  1125. - color: var(--secondary-text-color)
  1126. - padding: 15px 0px 0px 15px
  1127. - margin-top: "-7px"
  1128. - background: none
  1129. name:
  1130. - justify-self: start
  1131. - color: var(--primary-text-color)
  1132. label:
  1133. - color: var(--secondary-text-color)
  1134. - type: custom:button-card
  1135. entity: input_text.irrigation_previous_total_watering_time
  1136. name: |
  1137. [[[
  1138. if (isNaN(entity.state))
  1139. var total_seconds = 0;
  1140. else
  1141. var total_seconds = parseFloat(entity.state);
  1142. var date = new Date(null);
  1143. date.setSeconds(total_seconds);
  1144. return date.toISOString().substr(11, 8);
  1145.  
  1146. ]]]
  1147. label: Total time:&nbsp&nbsp
  1148. show_label: true
  1149. show_icon: false
  1150. tap_action:
  1151. action: none
  1152. styles:
  1153. grid:
  1154. - grid-template-areas: "\"l n\""
  1155. - grid-template-columns: min-content 1fr
  1156. - grid-template-rows: min-content
  1157. card:
  1158. - font-size: 14px
  1159. - color: var(--secondary-text-color)
  1160. - padding: 3px 0px 10px 15px
  1161. - margin-top: "-0em"
  1162. - background: none
  1163. name:
  1164. - justify-self: start
  1165. - color: var(--primary-text-color)
  1166. label:
  1167. - color: var(--secondary-text-color)
  1168. card_mod:
  1169. style: |
  1170. div#head ha-icon {
  1171. color: gray;
  1172. }
  1173. - type: custom:fold-entity-row
  1174. open: true
  1175. padding: 0em
  1176. head:
  1177. entity: sensor.blankblank
  1178. name: Weekly Schedule
  1179. icon: mdi:calendar-check
  1180. tap_action:
  1181. action: fire-dom-event
  1182. fold_row: true
  1183. entities:
  1184. - type: custom:vertical-stack-in-card
  1185. cards:
  1186. - type: markdown
  1187. content: >
  1188.  
  1189. {% set cycle1_name =
  1190. states('input_text.irrigation_cycle1_name') %} {% set
  1191. cycle2_name = states('input_text.irrigation_cycle2_name')
  1192. %}
  1193.  
  1194. {% set ns = namespace(duration_c1_mon = 0, duration_c2_mon
  1195. = 0, duration_mon = 0,
  1196. duration_c1_tue = 0, duration_c2_tue = 0, duration_tue = 0,
  1197. duration_c1_wed = 0, duration_c2_wed = 0, duration_wed = 0,
  1198. duration_c1_thu = 0, duration_c2_thu = 0, duration_thu = 0,
  1199. duration_c1_fri = 0, duration_c2_fri = 0, duration_fri = 0,
  1200. duration_c1_sat = 0, duration_c2_sat = 0, duration_sat = 0,
  1201. duration_c1_sun = 0, duration_c2_sun = 0, duration_sun = 0,) %}
  1202.  
  1203. {% for cycles in states.input_text
  1204. if cycles.object_id == 'irrigation_cycle1_name' or
  1205. cycles.object_id == 'irrigation_cycle2_name' %}
  1206. {% set cycle = 'cycle' ~ loop.index %}
  1207.  
  1208. {% for zones in states.input_number
  1209. if zones.object_id.startswith('irrigation_' ~ cycle ~ '_zone') and
  1210. zones.object_id.endswith('_duration') %}
  1211. {% set zone = 'zone' ~ loop.index %}
  1212.  
  1213. {% if is_state('input_boolean.irrigation_' ~ cycle ~ '_' ~ zone ~ '_every_day', 'on') %}
  1214. {% set ns.duration_mon = ns.duration_mon + (zones.state | int) %}
  1215. {% set ns.duration_tue = ns.duration_tue + (zones.state | int) %}
  1216. {% set ns.duration_wed = ns.duration_wed + (zones.state | int) %}
  1217. {% set ns.duration_thu = ns.duration_thu + (zones.state | int) %}
  1218. {% set ns.duration_fri = ns.duration_fri + (zones.state | int) %}
  1219. {% set ns.duration_sat = ns.duration_sat + (zones.state | int) %}
  1220. {% set ns.duration_sun = ns.duration_sun + (zones.state | int) %}
  1221. {% else %}
  1222. {% if is_state('input_boolean.irrigation_' ~ cycle ~ '_' ~ zone ~ '_mon', 'on' ) %}
  1223. {% set ns.duration_mon = ns.duration_mon + (zones.state | int) %}
  1224. {% endif %}
  1225. {% if is_state('input_boolean.irrigation_' ~ cycle ~ '_' ~ zone ~ '_tue', 'on' ) %}
  1226. {% set ns.duration_tue = ns.duration_tue + (zones.state | int) %}
  1227. {% endif %}
  1228. {% if is_state('input_boolean.irrigation_' ~ cycle ~ '_' ~ zone ~ '_wed', 'on' ) %}
  1229. {% set ns.duration_wed = ns.duration_wed + (zones.state | int) %}
  1230. {% endif %}
  1231. {% if is_state('input_boolean.irrigation_' ~ cycle ~ '_' ~ zone ~ '_thu', 'on' ) %}
  1232. {% set ns.duration_thu = ns.duration_thu + (zones.state | int) %}
  1233. {% endif %}
  1234. {% if is_state('input_boolean.irrigation_' ~ cycle ~ '_' ~ zone ~ '_fri', 'on' ) %}
  1235. {% set ns.duration_fri = ns.duration_fri + (zones.state | int) %}
  1236. {% endif %}
  1237. {% if is_state('input_boolean.irrigation_' ~ cycle ~ '_' ~ zone ~ '_sat', 'on' ) %}
  1238. {% set ns.duration_sat = ns.duration_sat + (zones.state | int) %}
  1239. {% endif %}
  1240. {% if is_state('input_boolean.irrigation_' ~ cycle ~ '_' ~ zone ~ '_sun', 'on' ) %}
  1241. {% set ns.duration_sun = ns.duration_sun + (zones.state | int) %}
  1242. {% endif %}
  1243. {% endif %}
  1244. {% endfor %}
  1245.  
  1246. {% if loop.first %}
  1247. {% set ns.duration_c1_mon = ns.duration_mon %}
  1248. {% set ns.duration_c1_tue = ns.duration_tue %}
  1249. {% set ns.duration_c1_wed = ns.duration_wed %}
  1250. {% set ns.duration_c1_thu = ns.duration_thu %}
  1251. {% set ns.duration_c1_fri = ns.duration_fri %}
  1252. {% set ns.duration_c1_sat = ns.duration_sat %}
  1253. {% set ns.duration_c1_sun = ns.duration_sun %}
  1254. {% else %}
  1255. {% set ns.duration_c2_mon = ns.duration_mon %}
  1256. {% set ns.duration_c2_tue = ns.duration_tue %}
  1257. {% set ns.duration_c2_wed = ns.duration_wed %}
  1258. {% set ns.duration_c2_thu = ns.duration_thu %}
  1259. {% set ns.duration_c2_fri = ns.duration_fri %}
  1260. {% set ns.duration_c2_sat = ns.duration_sat %}
  1261. {% set ns.duration_c2_sun = ns.duration_sun %}
  1262. {% endif %}
  1263. {% set ns.duration_mon = 0 %}
  1264. {% set ns.duration_tue = 0 %}
  1265. {% set ns.duration_wed = 0 %}
  1266. {% set ns.duration_thu = 0 %}
  1267. {% set ns.duration_fri = 0 %}
  1268. {% set ns.duration_sat = 0 %}
  1269. {% set ns.duration_sun = 0 %}
  1270. {% endfor %}
  1271.  
  1272. &nbsp; | {{ cycle1_name }} Cycle | &nbsp; {{ cycle2_name
  1273. }} Cycle
  1274. ---|:---:|:---:
  1275. Monday | {{ ns.duration_c1_mon }} min | &nbsp; {{
  1276. ns.duration_c2_mon }} min
  1277.  
  1278. Tuesday | {{ ns.duration_c1_tue }} min | &nbsp; {{
  1279. ns.duration_c2_tue }} min
  1280.  
  1281. Wednesday | {{ ns.duration_c1_wed }} min | &nbsp; {{
  1282. ns.duration_c2_wed }} min
  1283.  
  1284. Thursday | {{ ns.duration_c1_thu }} min | &nbsp; {{
  1285. ns.duration_c2_thu }} min
  1286.  
  1287. Friday | {{ ns.duration_c1_fri }} min | &nbsp; {{
  1288. ns.duration_c2_fri }} min
  1289.  
  1290. Saturday | {{ ns.duration_c1_sat }} min | &nbsp; {{
  1291. ns.duration_c2_sat }} min
  1292.  
  1293. Sunday | {{ ns.duration_c1_sun }} min | &nbsp; {{
  1294. ns.duration_c2_sun }} min
  1295. clear: false
  1296. card_mod:
  1297. style: |
  1298. div#head ha-icon {
  1299. color: gray;
  1300. }
  1301. show_header_toggle: false
  1302. - type: custom:vertical-stack-in-card
  1303. cards:
  1304. - type: entities
  1305. entities:
  1306. - type: custom:multiple-entity-row
  1307. entity: input_boolean.irrigation_cycle1_schedule_enabled
  1308. toggle: true
  1309. name: Morning Cycle
  1310. content_info: name
  1311. icon_color: green
  1312. icon: mdi:sprinkler
  1313. state_color: true
  1314. entities:
  1315. - icon: mdi:weather-rainy
  1316. entity: input_boolean.irrigation_cycle1_adjust_for_rainfall
  1317. state_color: true
  1318. name: false
  1319. tap_action:
  1320. action: toggle
  1321. - icon: mdi:thermometer
  1322. entity: input_boolean.irrigation_cycle1_adjust_for_temperature
  1323. tap_action:
  1324. action: toggle
  1325. name: false
  1326. state_color: true
  1327. - type: custom:button-card
  1328. entity: input_datetime.irrigation_cycle1_start_time
  1329. triggers_update:
  1330. - sensor.irrigation_cycle1_duration_in_seconds
  1331. - input_boolean.irrigation_cycle1_adjust_for_temperature
  1332. - input_boolean.irrigation_cycle1_adjust_for_rainfall
  1333. - input_select.irrigation_cycle1_start_time_type
  1334. - input_boolean.irrigation_cycle1_schedule_today_only
  1335. name: false
  1336. tap_action:
  1337. action: fire-dom-event
  1338. browser_mod:
  1339. service: browser_mod.popup
  1340. data:
  1341. title: Morning cycle
  1342. content:
  1343. type: vertical-stack
  1344. cards:
  1345. - type: entities
  1346. entities:
  1347. - entity: >-
  1348. input_boolean.irrigation_cycle1_schedule_today_only
  1349. name: Run Cycle Today Only
  1350. tap_action: none
  1351. - type: divider
  1352. - entity: input_select.irrigation_cycle1_start_time_type
  1353. name: Start Time Mode
  1354. icon: mdi:theme-light-dark
  1355. - type: custom:hui-element
  1356. card_type: conditional
  1357. conditions:
  1358. - entity: >-
  1359. input_select.irrigation_cycle1_start_time_type
  1360. state: Actual Time
  1361. card:
  1362. type: entities
  1363. entities:
  1364. - entity: >-
  1365. input_datetime.irrigation_cycle1_start_time
  1366. name: Start Time
  1367. - type: custom:hui-element
  1368. card_type: conditional
  1369. conditions:
  1370. - entity: >-
  1371. input_select.irrigation_cycle1_start_time_type
  1372. state: Sunrise Offset
  1373. card:
  1374. type: entities
  1375. entities:
  1376. - entity: >-
  1377. input_number.irrigation_cycle1_start_time_sunrise_offset
  1378. name: Offset in minutes
  1379. - type: custom:hui-element
  1380. card_type: conditional
  1381. conditions:
  1382. - entity: >-
  1383. input_select.irrigation_cycle1_start_time_type
  1384. state: Sunset Offset
  1385. card:
  1386. type: entities
  1387. entities:
  1388. - entity: >-
  1389. input_number.irrigation_cycle1_start_time_sunset_offset
  1390. name: Offset in minutes
  1391. - type: custom:hui-element
  1392. card_type: markdown
  1393. content: >
  1394. <font color=var(--primary-text-color)> At the
  1395. cycle start time it is possible to wait for an
  1396. entity to be in a certain state. </font>
  1397. style: |
  1398. ha-card {
  1399. font-size: 16px;
  1400. }
  1401. - entity: >-
  1402. input_boolean.irrigation_cycle1_wait_for_entity
  1403. name: Wait For Entity
  1404. - type: custom:hui-element
  1405. card_type: conditional
  1406. conditions:
  1407. - entity: >-
  1408. input_boolean.irrigation_cycle1_wait_for_entity
  1409. state: "on"
  1410. card:
  1411. type: entities
  1412. entities:
  1413. - entity: >-
  1414. input_text.irrigation_cycle1_wait_for_entity_name
  1415. name: Entity Name
  1416. - entity: >-
  1417. input_text.irrigation_cycle1_wait_for_entity_state
  1418. name: Entity State
  1419. - entity: >-
  1420. input_boolean.irrigation_cycle1_wait_for_entity_name_timeout_continue
  1421. name: Wait Timeout Continue
  1422. - entity: >-
  1423. input_number.irrigation_cycle1_wait_for_entity_name_timeout_duration
  1424. name: Wait Timeout Duration
  1425. - type: custom:hui-element
  1426. card_type: conditional
  1427. conditions:
  1428. - entity: >-
  1429. input_boolean.irrigation_cycle1_wait_for_entity
  1430. state: "on"
  1431. card:
  1432. type: markdown
  1433. content: >
  1434. <font color=var(--primary-text-color)>
  1435. Entity state can be a comma seperated list
  1436. of states and may be prefixed with 'not in'.
  1437.  
  1438. e.g.
  1439.  
  1440. - open
  1441.  
  1442. - open, closed
  1443.  
  1444. - not open
  1445.  
  1446. - not in open, closed </font>
  1447. style: |
  1448. ha-card {
  1449. font-size: 16px;
  1450. }
  1451. card_mod:
  1452. style: |
  1453. ha-card {
  1454. font-family: {% raw %}{{ states('input_text.irrigation_ui_font_family') }}{% endraw %};
  1455. }
  1456. style:
  1457. $: >
  1458. .mdc-dialog .mdc-dialog__container
  1459. .mdc-dialog__surface {
  1460. font-family: {% raw %}{{ states('input_text.irrigation_ui_font_family') }}{% endraw %};
  1461. }
  1462. - type: custom:vertical-stack-in-card
  1463. cards:
  1464. - type: entities
  1465. show_name: true
  1466. show_icon: false
  1467. show_state: true
  1468. entities:
  1469. - entity: input_number.irrigation_cycle1_zone1_duration_box
  1470. name: Mid lawn
  1471. type: custom:multiple-entity-row
  1472. entities:
  1473. - entity: sensor.blankblank
  1474. name: Edit days
  1475. tap_action:
  1476. action: call-service
  1477. service: input_boolean.toggle
  1478. service_data:
  1479. entity_id: input_boolean.irrigation_cycle1_zone1_every_day
  1480. tap_action:
  1481. action: fire-dom-event
  1482. browser_mod:
  1483. service: browser_mod.popup
  1484. data:
  1485. title: Morning cycle - Mid lawn
  1486. hide_header: false
  1487. content:
  1488. type: entities
  1489. entities:
  1490. - entity: >-
  1491. input_number.irrigation_cycle1_zone1_duration_box
  1492. name: Duration
  1493. - entity: input_text.irrigation_zone1_name
  1494. name: Zone Name
  1495. - entity: input_text.irrigation_zone1_switch_entity_id
  1496. name: Switch Name
  1497. card_mod:
  1498. style: |
  1499. ha-card {
  1500. font-family: {% raw %}{{ states('input_text.irrigation_ui_font_family') }}{% endraw %};
  1501. }
  1502. style:
  1503. $: >
  1504. .mdc-dialog .mdc-dialog__container
  1505. .mdc-dialog__surface {
  1506. font-family: {% raw %}{{ states('input_text.irrigation_ui_font_family') }}{% endraw %};
  1507. }
  1508. - type: conditional
  1509. conditions:
  1510. - condition: state
  1511. entity: input_boolean.irrigation_cycle1_zone1_every_day
  1512. state: "off"
  1513. row:
  1514. type: custom:paper-buttons-row
  1515. styles:
  1516. "--pbs-button-active-color": green
  1517. justify-content: space-around;
  1518. buttons:
  1519. - icon: mdi:alpha-m-circle-outline
  1520. entity: input_boolean.irrigation_cycle1_zone1_mon
  1521. tap_action:
  1522. action: toggle
  1523. name: false
  1524. - type: entity
  1525. entity: input_boolean.irrigation_cycle1_zone1_tue
  1526. icon: mdi:alpha-t-circle-outline
  1527. tap_action:
  1528. action: toggle
  1529. name: false
  1530. - type: entity
  1531. entity: input_boolean.irrigation_cycle1_zone1_wed
  1532. icon: mdi:alpha-w-circle-outline
  1533. name: false
  1534. tap_action:
  1535. action: toggle
  1536. - type: entity
  1537. entity: input_boolean.irrigation_cycle1_zone1_thu
  1538. icon: mdi:alpha-t-circle-outline
  1539. name: false
  1540. tap_action:
  1541. action: toggle
  1542. - type: entity
  1543. entity: input_boolean.irrigation_cycle1_zone1_fri
  1544. icon: mdi:alpha-f-circle-outline
  1545. name: false
  1546. tap_action:
  1547. action: toggle
  1548. - type: entity
  1549. entity: input_boolean.irrigation_cycle1_zone1_sat
  1550. icon: mdi:alpha-s-circle-outline
  1551. name: false
  1552. tap_action:
  1553. action: toggle
  1554. - type: entity
  1555. entity: input_boolean.irrigation_cycle1_zone1_sun
  1556. icon: mdi:alpha-s-circle-outline
  1557. name: false
  1558. tap_action:
  1559. action: toggle
  1560. - entity: input_number.irrigation_cycle1_zone2_duration_box
  1561. name: Front lawn
  1562. type: custom:multiple-entity-row
  1563. entities:
  1564. - entity: sensor.blankblank
  1565. name: Edit days
  1566. tap_action:
  1567. action: call-service
  1568. service: input_boolean.toggle
  1569. service_data:
  1570. entity_id: input_boolean.irrigation_cycle1_zone2_every_day
  1571. tap_action:
  1572. action: fire-dom-event
  1573. browser_mod:
  1574. service: browser_mod.popup
  1575. data:
  1576. title: Morning cycle - Front lawn
  1577. hide_header: false
  1578. content:
  1579. type: entities
  1580. entities:
  1581. - entity: >-
  1582. input_number.irrigation_cycle1_zone2_duration_box
  1583. name: Duration
  1584. - entity: input_text.irrigation_zone2_name
  1585. name: Zone Name
  1586. - entity: input_text.irrigation_zone2_switch_entity_id
  1587. name: Switch Name
  1588. card_mod:
  1589. style: |
  1590. ha-card {
  1591. font-family: {% raw %}{{ states('input_text.irrigation_ui_font_family') }}{% endraw %};
  1592. }
  1593. style:
  1594. $: >
  1595. .mdc-dialog .mdc-dialog__container
  1596. .mdc-dialog__surface {
  1597. font-family: {% raw %}{{ states('input_text.irrigation_ui_font_family') }}{% endraw %};
  1598. }
  1599. - type: conditional
  1600. conditions:
  1601. - condition: state
  1602. entity: input_boolean.irrigation_cycle1_zone2_every_day
  1603. state: "off"
  1604. row:
  1605. type: custom:paper-buttons-row
  1606. styles:
  1607. "--pbs-button-active-color": green
  1608. justify-content: space-around;
  1609. buttons:
  1610. - icon: mdi:alpha-m-circle-outline
  1611. entity: input_boolean.irrigation_cycle1_zone2_mon
  1612. tap_action:
  1613. action: toggle
  1614. name: false
  1615. - type: entity
  1616. entity: input_boolean.irrigation_cycle1_zone2_tue
  1617. icon: mdi:alpha-t-circle-outline
  1618. tap_action:
  1619. action: toggle
  1620. name: false
  1621. - type: entity
  1622. entity: input_boolean.irrigation_cycle1_zone2_wed
  1623. icon: mdi:alpha-w-circle-outline
  1624. name: false
  1625. tap_action:
  1626. action: toggle
  1627. - type: entity
  1628. entity: input_boolean.irrigation_cycle1_zone2_thu
  1629. icon: mdi:alpha-t-circle-outline
  1630. name: false
  1631. tap_action:
  1632. action: toggle
  1633. - type: entity
  1634. entity: input_boolean.irrigation_cycle1_zone2_fri
  1635. icon: mdi:alpha-f-circle-outline
  1636. name: false
  1637. tap_action:
  1638. action: toggle
  1639. - type: entity
  1640. entity: input_boolean.irrigation_cycle1_zone2_sat
  1641. icon: mdi:alpha-s-circle-outline
  1642. name: false
  1643. tap_action:
  1644. action: toggle
  1645. - type: entity
  1646. entity: input_boolean.irrigation_cycle1_zone2_sun
  1647. icon: mdi:alpha-s-circle-outline
  1648. name: false
  1649. tap_action:
  1650. action: toggle
  1651. - entity: input_number.irrigation_cycle1_zone3_duration_box
  1652. name: Back lawn
  1653. type: custom:multiple-entity-row
  1654. entities:
  1655. - entity: sensor.blankblank
  1656. name: Edit days
  1657. tap_action:
  1658. action: call-service
  1659. service: input_boolean.toggle
  1660. service_data:
  1661. entity_id: input_boolean.irrigation_cycle1_zone3_every_day
  1662. tap_action:
  1663. action: fire-dom-event
  1664. browser_mod:
  1665. service: browser_mod.popup
  1666. data:
  1667. title: Morning cycle - Back lawn
  1668. hide_header: false
  1669. content:
  1670. type: entities
  1671. entities:
  1672. - entity: >-
  1673. input_number.irrigation_cycle1_zone3_duration_box
  1674. name: Duration
  1675. - entity: input_text.irrigation_zone3_name
  1676. name: Zone Name
  1677. - entity: input_text.irrigation_zone3_switch_entity_id
  1678. name: Switch Name
  1679. card_mod:
  1680. style: |
  1681. ha-card {
  1682. font-family: {% raw %}{{ states('input_text.irrigation_ui_font_family') }}{% endraw %};
  1683. }
  1684. style:
  1685. $: >
  1686. .mdc-dialog .mdc-dialog__container
  1687. .mdc-dialog__surface {
  1688. font-family: {% raw %}{{ states('input_text.irrigation_ui_font_family') }}{% endraw %};
  1689. }
  1690. - type: conditional
  1691. conditions:
  1692. - condition: state
  1693. entity: input_boolean.irrigation_cycle1_zone3_every_day
  1694. state: "off"
  1695. row:
  1696. type: custom:paper-buttons-row
  1697. styles:
  1698. "--pbs-button-active-color": green
  1699. justify-content: space-around;
  1700. buttons:
  1701. - icon: mdi:alpha-m-circle-outline
  1702. entity: input_boolean.irrigation_cycle1_zone3_mon
  1703. tap_action:
  1704. action: toggle
  1705. name: false
  1706. - type: entity
  1707. entity: input_boolean.irrigation_cycle1_zone3_tue
  1708. icon: mdi:alpha-t-circle-outline
  1709. tap_action:
  1710. action: toggle
  1711. name: false
  1712. - type: entity
  1713. entity: input_boolean.irrigation_cycle1_zone3_wed
  1714. icon: mdi:alpha-w-circle-outline
  1715. name: false
  1716. tap_action:
  1717. action: toggle
  1718. - type: entity
  1719. entity: input_boolean.irrigation_cycle1_zone3_thu
  1720. icon: mdi:alpha-t-circle-outline
  1721. name: false
  1722. tap_action:
  1723. action: toggle
  1724. - type: entity
  1725. entity: input_boolean.irrigation_cycle1_zone3_fri
  1726. icon: mdi:alpha-f-circle-outline
  1727. name: false
  1728. tap_action:
  1729. action: toggle
  1730. - type: entity
  1731. entity: input_boolean.irrigation_cycle1_zone3_sat
  1732. icon: mdi:alpha-s-circle-outline
  1733. name: false
  1734. tap_action:
  1735. action: toggle
  1736. - type: entity
  1737. entity: input_boolean.irrigation_cycle1_zone3_sun
  1738. icon: mdi:alpha-s-circle-outline
  1739. name: false
  1740. tap_action:
  1741. action: toggle
  1742. - entity: input_number.irrigation_cycle1_zone4_duration_box
  1743. name: Drip
  1744. type: custom:multiple-entity-row
  1745. entities:
  1746. - entity: sensor.blankblank
  1747. name: Edit days
  1748. tap_action:
  1749. action: call-service
  1750. service: input_boolean.toggle
  1751. service_data:
  1752. entity_id: input_boolean.irrigation_cycle1_zone4_every_day
  1753. tap_action:
  1754. action: fire-dom-event
  1755. browser_mod:
  1756. service: browser_mod.popup
  1757. data:
  1758. title: Morning cycle - Drip
  1759. hide_header: false
  1760. content:
  1761. type: entities
  1762. entities:
  1763. - entity: >-
  1764. input_number.irrigation_cycle1_zone4_duration_box
  1765. name: Duration
  1766. - entity: input_text.irrigation_zone4_name
  1767. name: Zone Name
  1768. - entity: input_text.irrigation_zone4_switch_entity_id
  1769. name: Switch Name
  1770. card_mod:
  1771. style: |
  1772. ha-card {
  1773. font-family: {% raw %}{{ states('input_text.irrigation_ui_font_family') }}{% endraw %};
  1774. }
  1775. style:
  1776. $: >
  1777. .mdc-dialog .mdc-dialog__container
  1778. .mdc-dialog__surface {
  1779. font-family: {% raw %}{{ states('input_text.irrigation_ui_font_family') }}{% endraw %};
  1780. }
  1781. - type: conditional
  1782. conditions:
  1783. - condition: state
  1784. entity: input_boolean.irrigation_cycle1_zone4_every_day
  1785. state: "off"
  1786. row:
  1787. type: custom:paper-buttons-row
  1788. styles:
  1789. "--pbs-button-active-color": green
  1790. justify-content: space-around;
  1791. buttons:
  1792. - icon: mdi:alpha-m-circle-outline
  1793. entity: input_boolean.irrigation_cycle1_zone4_mon
  1794. tap_action:
  1795. action: toggle
  1796. name: false
  1797. - type: entity
  1798. entity: input_boolean.irrigation_cycle1_zone4_tue
  1799. icon: mdi:alpha-t-circle-outline
  1800. tap_action:
  1801. action: toggle
  1802. name: false
  1803. - type: entity
  1804. entity: input_boolean.irrigation_cycle1_zone4_wed
  1805. icon: mdi:alpha-w-circle-outline
  1806. name: false
  1807. tap_action:
  1808. action: toggle
  1809. - type: entity
  1810. entity: input_boolean.irrigation_cycle1_zone4_thu
  1811. icon: mdi:alpha-t-circle-outline
  1812. name: false
  1813. tap_action:
  1814. action: toggle
  1815. - type: entity
  1816. entity: input_boolean.irrigation_cycle1_zone4_fri
  1817. icon: mdi:alpha-f-circle-outline
  1818. name: false
  1819. tap_action:
  1820. action: toggle
  1821. - type: entity
  1822. entity: input_boolean.irrigation_cycle1_zone4_sat
  1823. icon: mdi:alpha-s-circle-outline
  1824. name: false
  1825. tap_action:
  1826. action: toggle
  1827. - type: entity
  1828. entity: input_boolean.irrigation_cycle1_zone4_sun
  1829. icon: mdi:alpha-s-circle-outline
  1830. name: false
  1831. tap_action:
  1832. action: toggle
  1833. - type: custom:paper-buttons-row
  1834. styles:
  1835. margin-top: "-5px;"
  1836. "--pbs-button-active-color": green
  1837. justify-content: space-around;
  1838. buttons:
  1839. - name: Days
  1840. tap_action:
  1841. action: false
  1842. - icon: mdi:alpha-m-circle-outline
  1843. entity: group.irrigation_group_cycle1_mon
  1844. tap_action:
  1845. action: toggle
  1846. name: false
  1847. - type: entity
  1848. entity: group.irrigation_group_cycle1_tue
  1849. icon: mdi:alpha-t-circle-outline
  1850. tap_action:
  1851. action: toggle
  1852. name: false
  1853. - type: entity
  1854. entity: group.irrigation_group_cycle1_wed
  1855. icon: mdi:alpha-w-circle-outline
  1856. name: false
  1857. tap_action:
  1858. action: toggle
  1859. - type: entity
  1860. entity: group.irrigation_group_cycle1_thu
  1861. icon: mdi:alpha-t-circle-outline
  1862. name: false
  1863. tap_action:
  1864. action: toggle
  1865. - type: entity
  1866. entity: group.irrigation_group_cycle1_fri
  1867. icon: mdi:alpha-f-circle-outline
  1868. name: false
  1869. tap_action:
  1870. action: toggle
  1871. - type: entity
  1872. entity: group.irrigation_group_cycle1_sat
  1873. icon: mdi:alpha-s-circle-outline
  1874. name: false
  1875. tap_action:
  1876. action: toggle
  1877. - type: entity
  1878. entity: group.irrigation_group_cycle1_sun
  1879. icon: mdi:alpha-s-circle-outline
  1880. name: false
  1881. tap_action:
  1882. action: toggle
  1883. - type: custom:multiple-entity-row
  1884. entity: input_boolean.irrigation_cycle2_schedule_enabled
  1885. toggle: true
  1886. name: Evening Cycle
  1887. content_info: name
  1888. icon_color: green
  1889. icon: mdi:sprinkler
  1890. state_color: true
  1891. entities:
  1892. - icon: mdi:weather-rainy
  1893. entity: input_boolean.irrigation_cycle2_adjust_for_rainfall
  1894. tap_action:
  1895. action: toggle
  1896. state_color: true
  1897. name: false
  1898. - icon: mdi:thermometer
  1899. entity: input_boolean.irrigation_cycle2_adjust_for_temperature
  1900. tap_action:
  1901. action: toggle
  1902. name: false
  1903. state_color: true
  1904. - type: custom:button-card
  1905. entity: input_datetime.irrigation_cycle2_start_time
  1906. triggers_update:
  1907. - sensor.irrigation_cycle2_duration_in_seconds
  1908. - input_boolean.irrigation_cycle2_adjust_for_temperature
  1909. - input_boolean.irrigation_cycle2_adjust_for_rainfall
  1910. - input_select.irrigation_cycle2_start_time_type
  1911. - input_boolean.irrigation_cycle2_schedule_today_only
  1912. name: false
  1913. tap_action:
  1914. action: fire-dom-event
  1915. browser_mod:
  1916. service: browser_mod.popup
  1917. data:
  1918. title: Morning cycle
  1919. content:
  1920. type: vertical-stack
  1921. cards:
  1922. - type: entities
  1923. entities:
  1924. - entity: >-
  1925. input_boolean.irrigation_cycle2_schedule_today_only
  1926. name: Run Cycle Today Only
  1927. tap_action: none
  1928. - type: divider
  1929. - entity: input_select.irrigation_cycle2_start_time_type
  1930. name: Start Time Mode
  1931. icon: mdi:theme-light-dark
  1932. - type: custom:hui-element
  1933. card_type: conditional
  1934. conditions:
  1935. - entity: >-
  1936. input_select.irrigation_cycle2_start_time_type
  1937. state: Actual Time
  1938. card:
  1939. type: entities
  1940. entities:
  1941. - entity: >-
  1942. input_datetime.irrigation_cycle2_start_time
  1943. name: Start Time
  1944. - type: custom:hui-element
  1945. card_type: conditional
  1946. conditions:
  1947. - entity: >-
  1948. input_select.irrigation_cycle2_start_time_type
  1949. state: Sunrise Offset
  1950. card:
  1951. type: entities
  1952. entities:
  1953. - entity: >-
  1954. input_number.irrigation_cycle2_start_time_sunrise_offset
  1955. name: Offset in minutes
  1956. - type: custom:hui-element
  1957. card_type: conditional
  1958. conditions:
  1959. - entity: >-
  1960. input_select.irrigation_cycle2_start_time_type
  1961. state: Sunset Offset
  1962. card:
  1963. type: entities
  1964. entities:
  1965. - entity: >-
  1966. input_number.irrigation_cycle2_start_time_sunset_offset
  1967. name: Offset in minutes
  1968. - type: custom:hui-element
  1969. card_type: markdown
  1970. content: >
  1971. <font color=var(--primary-text-color)> At the
  1972. cycle start time it is possible to wait for an
  1973. entity to be in a certain state. </font>
  1974. style: |
  1975. ha-card {
  1976. font-size: 16px;
  1977. }
  1978. - entity: >-
  1979. input_boolean.irrigation_cycle2_wait_for_entity
  1980. name: Wait For Entity
  1981. - type: custom:hui-element
  1982. card_type: conditional
  1983. conditions:
  1984. - entity: >-
  1985. input_boolean.irrigation_cycle2_wait_for_entity
  1986. state: "on"
  1987. card:
  1988. type: entities
  1989. entities:
  1990. - entity: >-
  1991. input_text.irrigation_cycle2_wait_for_entity_name
  1992. name: Entity Name
  1993. - entity: >-
  1994. input_text.irrigation_cycle2_wait_for_entity_state
  1995. name: Entity State
  1996. - entity: >-
  1997. input_boolean.irrigation_cycle2_wait_for_entity_name_timeout_continue
  1998. name: Wait Timeout Continue
  1999. - entity: >-
  2000. input_number.irrigation_cycle2_wait_for_entity_name_timeout_duration
  2001. name: Wait Timeout Duration
  2002. - type: custom:hui-element
  2003. card_type: conditional
  2004. conditions:
  2005. - entity: >-
  2006. input_boolean.irrigation_cycle2_wait_for_entity
  2007. state: "on"
  2008. card:
  2009. type: markdown
  2010. content: >
  2011. <font color=var(--primary-text-color)>
  2012. Entity state can be a comma seperated list
  2013. of states and may be prefixed with 'not in'.
  2014.  
  2015. e.g.
  2016.  
  2017. - open
  2018.  
  2019. - open, closed
  2020.  
  2021. - not open
  2022.  
  2023. - not in open, closed </font>
  2024. style: |
  2025. ha-card {
  2026. font-size: 16px;
  2027. }
  2028. card_mod:
  2029. style: |
  2030. ha-card {
  2031. font-family: {% raw %}{{ states('input_text.irrigation_ui_font_family') }}{% endraw %};
  2032. }
  2033. style:
  2034. $: >
  2035. .mdc-dialog .mdc-dialog__container
  2036. .mdc-dialog__surface {
  2037. font-family: {% raw %}{{ states('input_text.irrigation_ui_font_family') }}{% endraw %};
  2038. }
  2039. - type: custom:vertical-stack-in-card
  2040. cards:
  2041. - type: entities
  2042. show_name: true
  2043. show_icon: false
  2044. show_state: true
  2045. entities:
  2046. - entity: input_number.irrigation_cycle2_zone1_duration_box
  2047. name: Mid lawn
  2048. type: custom:multiple-entity-row
  2049. entities:
  2050. - entity: sensor.blankblank
  2051. name: Edit days
  2052. tap_action:
  2053. action: call-service
  2054. service: input_boolean.toggle
  2055. service_data:
  2056. entity_id: input_boolean.irrigation_cycle2_zone1_every_day
  2057. tap_action:
  2058. action: fire-dom-event
  2059. browser_mod:
  2060. service: browser_mod.popup
  2061. data:
  2062. title: Morning cycle - Mid lawn
  2063. hide_header: false
  2064. content:
  2065. type: entities
  2066. entities:
  2067. - entity: >-
  2068. input_number.irrigation_cycle2_zone1_duration_box
  2069. name: Duration
  2070. - entity: input_text.irrigation_zone1_name
  2071. name: Zone Name
  2072. - entity: input_text.irrigation_zone1_switch_entity_id
  2073. name: Switch Name
  2074. card_mod:
  2075. style: |
  2076. ha-card {
  2077. font-family: {% raw %}{{ states('input_text.irrigation_ui_font_family') }}{% endraw %};
  2078. }
  2079. style:
  2080. $: >
  2081. .mdc-dialog .mdc-dialog__container
  2082. .mdc-dialog__surface {
  2083. font-family: {% raw %}{{ states('input_text.irrigation_ui_font_family') }}{% endraw %};
  2084. }
  2085. - type: conditional
  2086. conditions:
  2087. - condition: state
  2088. entity: input_boolean.irrigation_cycle2_zone1_every_day
  2089. state: "off"
  2090. row:
  2091. type: custom:paper-buttons-row
  2092. styles:
  2093. "--pbs-button-active-color": green
  2094. justify-content: space-around;
  2095. buttons:
  2096. - icon: mdi:alpha-m-circle-outline
  2097. entity: input_boolean.irrigation_cycle2_zone1_mon
  2098. tap_action:
  2099. action: toggle
  2100. name: false
  2101. - type: entity
  2102. entity: input_boolean.irrigation_cycle2_zone1_tue
  2103. icon: mdi:alpha-t-circle-outline
  2104. tap_action:
  2105. action: toggle
  2106. name: false
  2107. - type: entity
  2108. entity: input_boolean.irrigation_cycle2_zone1_wed
  2109. icon: mdi:alpha-w-circle-outline
  2110. name: false
  2111. tap_action:
  2112. action: toggle
  2113. - type: entity
  2114. entity: input_boolean.irrigation_cycle2_zone1_thu
  2115. icon: mdi:alpha-t-circle-outline
  2116. name: false
  2117. tap_action:
  2118. action: toggle
  2119. - type: entity
  2120. entity: input_boolean.irrigation_cycle2_zone1_fri
  2121. icon: mdi:alpha-f-circle-outline
  2122. name: false
  2123. tap_action:
  2124. action: toggle
  2125. - type: entity
  2126. entity: input_boolean.irrigation_cycle2_zone1_sat
  2127. icon: mdi:alpha-s-circle-outline
  2128. name: false
  2129. tap_action:
  2130. action: toggle
  2131. - type: entity
  2132. entity: input_boolean.irrigation_cycle2_zone1_sun
  2133. icon: mdi:alpha-s-circle-outline
  2134. name: false
  2135. tap_action:
  2136. action: toggle
  2137. - entity: input_number.irrigation_cycle2_zone2_duration_box
  2138. name: Front lawn
  2139. type: custom:multiple-entity-row
  2140. entities:
  2141. - entity: sensor.blankblank
  2142. name: Edit days
  2143. tap_action:
  2144. action: call-service
  2145. service: input_boolean.toggle
  2146. service_data:
  2147. entity_id: input_boolean.irrigation_cycle2_zone2_every_day
  2148. tap_action:
  2149. action: fire-dom-event
  2150. browser_mod:
  2151. service: browser_mod.popup
  2152. data:
  2153. title: Morning cycle - Front lawn
  2154. hide_header: false
  2155. content:
  2156. type: entities
  2157. entities:
  2158. - entity: >-
  2159. input_number.irrigation_cycle2_zone2_duration_box
  2160. name: Duration
  2161. - entity: input_text.irrigation_zone2_name
  2162. name: Zone Name
  2163. - entity: input_text.irrigation_zone2_switch_entity_id
  2164. name: Switch Name
  2165. card_mod:
  2166. style: |
  2167. ha-card {
  2168. font-family: {% raw %}{{ states('input_text.irrigation_ui_font_family') }}{% endraw %};
  2169. }
  2170. style:
  2171. $: >
  2172. .mdc-dialog .mdc-dialog__container
  2173. .mdc-dialog__surface {
  2174. font-family: {% raw %}{{ states('input_text.irrigation_ui_font_family') }}{% endraw %};
  2175. }
  2176. - type: conditional
  2177. conditions:
  2178. - condition: state
  2179. entity: input_boolean.irrigation_cycle2_zone2_every_day
  2180. state: "off"
  2181. row:
  2182. type: custom:paper-buttons-row
  2183. styles:
  2184. "--pbs-button-active-color": green
  2185. justify-content: space-around;
  2186. buttons:
  2187. - icon: mdi:alpha-m-circle-outline
  2188. entity: input_boolean.irrigation_cycle2_zone2_mon
  2189. tap_action:
  2190. action: toggle
  2191. name: false
  2192. - type: entity
  2193. entity: input_boolean.irrigation_cycle2_zone2_tue
  2194. icon: mdi:alpha-t-circle-outline
  2195. tap_action:
  2196. action: toggle
  2197. name: false
  2198. - type: entity
  2199. entity: input_boolean.irrigation_cycle2_zone2_wed
  2200. icon: mdi:alpha-w-circle-outline
  2201. name: false
  2202. tap_action:
  2203. action: toggle
  2204. - type: entity
  2205. entity: input_boolean.irrigation_cycle2_zone2_thu
  2206. icon: mdi:alpha-t-circle-outline
  2207. name: false
  2208. tap_action:
  2209. action: toggle
  2210. - type: entity
  2211. entity: input_boolean.irrigation_cycle2_zone2_fri
  2212. icon: mdi:alpha-f-circle-outline
  2213. name: false
  2214. tap_action:
  2215. action: toggle
  2216. - type: entity
  2217. entity: input_boolean.irrigation_cycle2_zone2_sat
  2218. icon: mdi:alpha-s-circle-outline
  2219. name: false
  2220. tap_action:
  2221. action: toggle
  2222. - type: entity
  2223. entity: input_boolean.irrigation_cycle2_zone2_sun
  2224. icon: mdi:alpha-s-circle-outline
  2225. name: false
  2226. tap_action:
  2227. action: toggle
  2228. - entity: input_number.irrigation_cycle2_zone3_duration_box
  2229. name: Back lawn
  2230. type: custom:multiple-entity-row
  2231. entities:
  2232. - entity: sensor.blankblank
  2233. name: Edit days
  2234. tap_action:
  2235. action: call-service
  2236. service: input_boolean.toggle
  2237. service_data:
  2238. entity_id: input_boolean.irrigation_cycle2_zone3_every_day
  2239. tap_action:
  2240. action: fire-dom-event
  2241. browser_mod:
  2242. service: browser_mod.popup
  2243. data:
  2244. title: Morning cycle - Back lawn
  2245. hide_header: false
  2246. content:
  2247. type: entities
  2248. entities:
  2249. - entity: >-
  2250. input_number.irrigation_cycle2_zone3_duration_box
  2251. name: Duration
  2252. - entity: input_text.irrigation_zone3_name
  2253. name: Zone Name
  2254. - entity: input_text.irrigation_zone3_switch_entity_id
  2255. name: Switch Name
  2256. card_mod:
  2257. style: |
  2258. ha-card {
  2259. font-family: {% raw %}{{ states('input_text.irrigation_ui_font_family') }}{% endraw %};
  2260. }
  2261. style:
  2262. $: >
  2263. .mdc-dialog .mdc-dialog__container
  2264. .mdc-dialog__surface {
  2265. font-family: {% raw %}{{ states('input_text.irrigation_ui_font_family') }}{% endraw %};
  2266. }
  2267. - type: conditional
  2268. conditions:
  2269. - condition: state
  2270. entity: input_boolean.irrigation_cycle2_zone3_every_day
  2271. state: "off"
  2272. row:
  2273. type: custom:paper-buttons-row
  2274. styles:
  2275. "--pbs-button-active-color": green
  2276. justify-content: space-around;
  2277. buttons:
  2278. - icon: mdi:alpha-m-circle-outline
  2279. entity: input_boolean.irrigation_cycle2_zone3_mon
  2280. tap_action:
  2281. action: toggle
  2282. name: false
  2283. - type: entity
  2284. entity: input_boolean.irrigation_cycle2_zone3_tue
  2285. icon: mdi:alpha-t-circle-outline
  2286. tap_action:
  2287. action: toggle
  2288. name: false
  2289. - type: entity
  2290. entity: input_boolean.irrigation_cycle2_zone3_wed
  2291. icon: mdi:alpha-w-circle-outline
  2292. name: false
  2293. tap_action:
  2294. action: toggle
  2295. - type: entity
  2296. entity: input_boolean.irrigation_cycle2_zone3_thu
  2297. icon: mdi:alpha-t-circle-outline
  2298. name: false
  2299. tap_action:
  2300. action: toggle
  2301. - type: entity
  2302. entity: input_boolean.irrigation_cycle2_zone3_fri
  2303. icon: mdi:alpha-f-circle-outline
  2304. name: false
  2305. tap_action:
  2306. action: toggle
  2307. - type: entity
  2308. entity: input_boolean.irrigation_cycle2_zone3_sat
  2309. icon: mdi:alpha-s-circle-outline
  2310. name: false
  2311. tap_action:
  2312. action: toggle
  2313. - type: entity
  2314. entity: input_boolean.irrigation_cycle2_zone3_sun
  2315. icon: mdi:alpha-s-circle-outline
  2316. name: false
  2317. tap_action:
  2318. action: toggle
  2319. - entity: input_number.irrigation_cycle2_zone4_duration_box
  2320. name: Drip
  2321. type: custom:multiple-entity-row
  2322. entities:
  2323. - entity: sensor.blankblank
  2324. name: Edit days
  2325. tap_action:
  2326. action: call-service
  2327. service: input_boolean.toggle
  2328. service_data:
  2329. entity_id: input_boolean.irrigation_cycle2_zone4_every_day
  2330. tap_action:
  2331. action: fire-dom-event
  2332. browser_mod:
  2333. service: browser_mod.popup
  2334. data:
  2335. title: Morning cycle - Drip
  2336. hide_header: false
  2337. content:
  2338. type: entities
  2339. entities:
  2340. - entity: >-
  2341. input_number.irrigation_cycle2_zone4_duration_box
  2342. name: Duration
  2343. - entity: input_text.irrigation_zone4_name
  2344. name: Zone Name
  2345. - entity: input_text.irrigation_zone4_switch_entity_id
  2346. name: Switch Name
  2347. card_mod:
  2348. style: |
  2349. ha-card {
  2350. font-family: {% raw %}{{ states('input_text.irrigation_ui_font_family') }}{% endraw %};
  2351. }
  2352. style:
  2353. $: >
  2354. .mdc-dialog .mdc-dialog__container
  2355. .mdc-dialog__surface {
  2356. font-family: {% raw %}{{ states('input_text.irrigation_ui_font_family') }}{% endraw %};
  2357. }
  2358. - type: conditional
  2359. conditions:
  2360. - condition: state
  2361. entity: input_boolean.irrigation_cycle2_zone4_every_day
  2362. state: "off"
  2363. row:
  2364. type: custom:paper-buttons-row
  2365. styles:
  2366. "--pbs-button-active-color": green
  2367. justify-content: space-around;
  2368. buttons:
  2369. - icon: mdi:alpha-m-circle-outline
  2370. entity: input_boolean.irrigation_cycle2_zone4_mon
  2371. tap_action:
  2372. action: toggle
  2373. name: false
  2374. - type: entity
  2375. entity: input_boolean.irrigation_cycle2_zone4_tue
  2376. icon: mdi:alpha-t-circle-outline
  2377. tap_action:
  2378. action: toggle
  2379. name: false
  2380. - type: entity
  2381. entity: input_boolean.irrigation_cycle2_zone4_wed
  2382. icon: mdi:alpha-w-circle-outline
  2383. name: false
  2384. tap_action:
  2385. action: toggle
  2386. - type: entity
  2387. entity: input_boolean.irrigation_cycle2_zone4_thu
  2388. icon: mdi:alpha-t-circle-outline
  2389. name: false
  2390. tap_action:
  2391. action: toggle
  2392. - type: entity
  2393. entity: input_boolean.irrigation_cycle2_zone4_fri
  2394. icon: mdi:alpha-f-circle-outline
  2395. name: false
  2396. tap_action:
  2397. action: toggle
  2398. - type: entity
  2399. entity: input_boolean.irrigation_cycle2_zone4_sat
  2400. icon: mdi:alpha-s-circle-outline
  2401. name: false
  2402. tap_action:
  2403. action: toggle
  2404. - type: entity
  2405. entity: input_boolean.irrigation_cycle2_zone4_sun
  2406. icon: mdi:alpha-s-circle-outline
  2407. name: false
  2408. tap_action:
  2409. action: toggle
  2410. - type: custom:paper-buttons-row
  2411. styles:
  2412. margin-top: "-5px;"
  2413. "--pbs-button-active-color": green
  2414. justify-content: space-around;
  2415. buttons:
  2416. - name: Days
  2417. tap_action:
  2418. action: false
  2419. - icon: mdi:alpha-m-circle-outline
  2420. entity: group.irrigation_group_cycle2_mon
  2421. tap_action:
  2422. action: toggle
  2423. name: false
  2424. - type: entity
  2425. entity: group.irrigation_group_cycle2_tue
  2426. icon: mdi:alpha-t-circle-outline
  2427. tap_action:
  2428. action: toggle
  2429. name: false
  2430. - type: entity
  2431. entity: group.irrigation_group_cycle2_wed
  2432. icon: mdi:alpha-w-circle-outline
  2433. name: false
  2434. tap_action:
  2435. action: toggle
  2436. - type: entity
  2437. entity: group.irrigation_group_cycle2_thu
  2438. icon: mdi:alpha-t-circle-outline
  2439. name: false
  2440. tap_action:
  2441. action: toggle
  2442. - type: entity
  2443. entity: group.irrigation_group_cycle2_fri
  2444. icon: mdi:alpha-f-circle-outline
  2445. name: false
  2446. tap_action:
  2447. action: toggle
  2448. - type: entity
  2449. entity: group.irrigation_group_cycle2_sat
  2450. icon: mdi:alpha-s-circle-outline
  2451. name: false
  2452. tap_action:
  2453. action: toggle
  2454. - type: entity
  2455. entity: group.irrigation_group_cycle2_sun
  2456. icon: mdi:alpha-s-circle-outline
  2457. name: false
  2458. tap_action:
  2459. action: toggle
  2460. - type: custom:fold-entity-row
  2461. padding: 0em
  2462. open: false
  2463. entities:
  2464. - type: custom:vertical-stack-in-card
  2465. cards:
  2466. - type: entities
  2467. entities:
  2468. - type: custom:config-template-card
  2469. variables:
  2470. ZONE_NAME: states['input_text.irrigation_zone1_name'].state
  2471. CYCLE_NAME: states['input_text.irrigation_cycle3_name'].state
  2472. TIMER_STATE: states['timer.irrigation_zone1_timer'].state
  2473. entities:
  2474. - input_text.irrigation_zone1_name
  2475. - input_number.irrigation_cycle3_zone1_duration
  2476. - timer.irrigation_zone1_timer
  2477. card:
  2478. type: entities
  2479. entities:
  2480. - entity: input_number.irrigation_cycle3_zone1_duration
  2481. name: ${ ZONE_NAME }
  2482. icon: >-
  2483. ${ TIMER_STATE === 'active' ?
  2484. 'mdi:sprinkler-variant' : '' }
  2485. tap_action:
  2486. action: fire-dom-event
  2487. browser_mod:
  2488. service: browser_mod.popup
  2489. data:
  2490. title: Manual Cycle - Zone 1
  2491. hide_header: false
  2492. content:
  2493. type: entities
  2494. entities:
  2495. - type: custom:hui-element
  2496. card_type: horizontal-stack
  2497. cards:
  2498. - type: custom:button-card
  2499. entity: >-
  2500. script.irrigation_run_a_single_zone_on_demand
  2501. triggers_update:
  2502. - timer.irrigation_zone1_timer
  2503. name: |
  2504. [[[
  2505. var zone = '1';
  2506. if (entity.state == 'off' &&
  2507. states['input_boolean.irrigation_cycle1_running'].state == 'off' &&
  2508. states['input_boolean.irrigation_cycle2_running'].state == 'off' &&
  2509. states['input_boolean.irrigation_cycle3_running'].state == 'off')
  2510. return 'Run This Zone Now';
  2511. else if (
  2512. entity.state == 'on' &&
  2513. states['timer.irrigation_zone' + zone + '_timer'].state == 'active'
  2514. )
  2515. return 'Stop This Zone';
  2516. else return '';
  2517. ]]]
  2518. icon: |
  2519. [[[
  2520. var zone = '1';
  2521. if (entity.state == 'off' &&
  2522. states['input_boolean.irrigation_cycle1_running'].state == 'off' &&
  2523. states['input_boolean.irrigation_cycle2_running'].state == 'off' &&
  2524. states['input_boolean.irrigation_cycle3_running'].state == 'off')
  2525. return 'mdi:play-circle-outline';
  2526. else if (
  2527. entity.state == 'on' &&
  2528. states['timer.irrigation_zone' + zone + '_timer'].state == 'active'
  2529. )
  2530. return 'mdi:stop-circle-outline';
  2531. else return '';
  2532. ]]]
  2533. size: 90%
  2534. styles:
  2535. grid:
  2536. - grid-template-areas: "\"i n\""
  2537. - grid-template-columns: 20% 1fr
  2538. - grid-template-rows: 1fr
  2539. card:
  2540. - display: |
  2541. [[[
  2542. var zone = '1';
  2543. if (states['input_boolean.irrigation_cycle1_running'].state == 'on' ||
  2544. states['input_boolean.irrigation_cycle2_running'].state == 'on')
  2545. return 'none';
  2546. else if (
  2547. entity.state == 'on' &&
  2548. states['timer.irrigation_zone' + zone + '_timer'].state != 'active'
  2549. )
  2550. return 'none';
  2551. else return '';
  2552. ]]]
  2553. - font-family: >-
  2554. [[[ return
  2555. states['input_text.irrigation_ui_font_family'].state
  2556. ]]]
  2557. - font-size: 14px
  2558. - background-color: |
  2559. [[[
  2560. var zone = '1';
  2561. if (entity.state == 'on' &&
  2562. states['input_boolean.irrigation_cycle1_running'].state == 'on' ||
  2563. states['input_boolean.irrigation_cycle2_running'].state == 'on' ||
  2564. states['input_boolean.irrigation_cycle3_running'].state == 'on')
  2565. return '';
  2566. else 'var(--primary-background-color)';
  2567. ]]]
  2568. - border: |
  2569. [[[
  2570. var zone = '1';
  2571. if (entity.state == 'on' &&
  2572. states['input_boolean.irrigation_cycle1_running'].state == 'on' ||
  2573. states['input_boolean.irrigation_cycle2_running'].state == 'on' ||
  2574. states['input_boolean.irrigation_cycle3_running'].state == 'on')
  2575. return '';
  2576. else return '1px solid var(--accent-color)';
  2577. ]]]
  2578. - padding: |
  2579. [[[
  2580. var zone = '1';
  2581. if (entity.state == 'on' ||
  2582. states['input_boolean.irrigation_cycle1_running'].state == 'on' ||
  2583. states['input_boolean.irrigation_cycle2_running'].state == 'on' ||
  2584. states['input_boolean.irrigation_cycle3_running'].state == 'on')
  2585. return '0em';
  2586. else return '0.5em';
  2587. ]]]
  2588. - border-radius: 5px
  2589. icon:
  2590. - color: |
  2591. [[[
  2592. var zone = '1';
  2593. if (entity.state == 'off' &&
  2594. states['input_boolean.irrigation_cycle1_running'].state == 'off' ||
  2595. states['input_boolean.irrigation_cycle2_running'].state == 'off' ||
  2596. states['input_boolean.irrigation_cycle3_running'].state == 'off')
  2597. return 'green';
  2598. else if (
  2599. entity.state == 'on' &&
  2600. states['timer.irrigation_zone' + zone + '_timer'].state == 'active'
  2601. )
  2602. return 'red';
  2603. else return '';
  2604. ]]]
  2605. tap_action:
  2606. action: call-service
  2607. service: |
  2608. [[[
  2609. var zone = '1';
  2610. if (entity.state == 'off' &&
  2611. states['input_boolean.irrigation_cycle1_running'].state == 'off' &&
  2612. states['input_boolean.irrigation_cycle2_running'].state == 'off' &&
  2613. states['input_boolean.irrigation_cycle3_running'].state == 'off')
  2614. return 'script.irrigation_run_a_single_zone_on_demand';
  2615. else if (entity.state == 'on' &&
  2616. states['timer.irrigation_zone' + zone + '_timer'].state == 'active')
  2617. return 'script.irrigation_cancel_irrigation';
  2618. else return '';
  2619. ]]]
  2620. service_data:
  2621. cycle: cycle3
  2622. zone: zone1
  2623. - type: custom:button-card
  2624. color_type: blank-card
  2625. - entity: >-
  2626. input_number.irrigation_cycle3_zone1_duration_box
  2627. name: Duration
  2628. - type: conditional
  2629. conditions:
  2630. - entity: input_boolean.irrigation_remote_control
  2631. state: "on"
  2632. row:
  2633. entity: >-
  2634. input_number.irrigation_remote_control_zone1_duration
  2635. name: Remote Control Duration
  2636. icon: mdi:alpha-r-box-outline
  2637. - entity: input_text.irrigation_zone1_name
  2638. name: Zone Name
  2639. - entity: >-
  2640. input_text.irrigation_zone1_switch_entity_id
  2641. name: Switch Name
  2642. card_mod:
  2643. style: |
  2644. ha-card {
  2645. font-family: {% raw %}{{ states('input_text.irrigation_ui_font_family') }}{% endraw %};
  2646. }
  2647. style:
  2648. $: >
  2649. .mdc-dialog .mdc-dialog__container
  2650. .mdc-dialog__surface {
  2651. font-family: {% raw %}{{ states('input_text.irrigation_ui_font_family') }}{% endraw %};
  2652. }
  2653. card_mod:
  2654. style: |
  2655. :host {
  2656. {% if is_state('input_number.irrigation_cycle3_zone1_duration', '0.0') %}
  2657. color: var(--secondary-text-color);
  2658. opacity: 50%;
  2659. {% endif %}
  2660. }
  2661. card_mod:
  2662. style: |
  2663. ha-card {
  2664. background: none;
  2665. overflow: visible !important;
  2666. }
  2667. #states {
  2668. font-family: {% raw %}{{ states('input_text.irrigation_ui_font_family') }}{% endraw %};
  2669. font-size: 16px;
  2670. padding: 0.25em 0.75em 0.25em 0.25em;
  2671. }
  2672. :host {
  2673. {% raw %}
  2674. {% if is_state('input_select.irrigation_cycle', 'cycle1') %}
  2675. {% set cycle_ui = 1 %}
  2676. {% elif is_state('input_boolean.irrigation_cycle', 'cycle2') %}
  2677. {% set cycle_ui = 2 %}
  2678. {% else %}
  2679. {% set cycle_ui = 3 %}
  2680. {% endif %}
  2681. {% if is_state('timer.irrigation_zone1_timer', 'active') and
  2682. cycle_ui == 3 %}
  2683. --paper-item-icon-color: var(--paper-item-icon-active-color);
  2684. {% endif %}
  2685. {% endraw %}
  2686. }
  2687. - type: custom:config-template-card
  2688. variables:
  2689. ZONE_NAME: states['input_text.irrigation_zone2_name'].state
  2690. CYCLE_NAME: states['input_text.irrigation_cycle3_name'].state
  2691. TIMER_STATE: states['timer.irrigation_zone2_timer'].state
  2692. entities:
  2693. - input_text.irrigation_zone2_name
  2694. - input_number.irrigation_cycle3_zone2_duration
  2695. - timer.irrigation_zone2_timer
  2696. card:
  2697. type: entities
  2698. entities:
  2699. - entity: input_number.irrigation_cycle3_zone2_duration
  2700. name: ${ ZONE_NAME }
  2701. icon: >-
  2702. ${ TIMER_STATE === 'active' ?
  2703. 'mdi:sprinkler-variant' : '' }
  2704. tap_action:
  2705. action: fire-dom-event
  2706. browser_mod:
  2707. service: browser_mod.popup
  2708. data:
  2709. title: Manual Cycle - Zone 1
  2710. hide_header: false
  2711. content:
  2712. type: entities
  2713. entities:
  2714. - type: custom:hui-element
  2715. card_type: horizontal-stack
  2716. cards:
  2717. - type: custom:button-card
  2718. entity: >-
  2719. script.irrigation_run_a_single_zone_on_demand
  2720. triggers_update:
  2721. - timer.irrigation_zone2_timer
  2722. name: |
  2723. [[[
  2724. var zone = '1';
  2725. if (entity.state == 'off' &&
  2726. states['input_boolean.irrigation_cycle1_running'].state == 'off' &&
  2727. states['input_boolean.irrigation_cycle2_running'].state == 'off' &&
  2728. states['input_boolean.irrigation_cycle3_running'].state == 'off')
  2729. return 'Run This Zone Now';
  2730. else if (
  2731. entity.state == 'on' &&
  2732. states['timer.irrigation_zone' + zone + '_timer'].state == 'active'
  2733. )
  2734. return 'Stop This Zone';
  2735. else return '';
  2736. ]]]
  2737. icon: |
  2738. [[[
  2739. var zone = '1';
  2740. if (entity.state == 'off' &&
  2741. states['input_boolean.irrigation_cycle1_running'].state == 'off' &&
  2742. states['input_boolean.irrigation_cycle2_running'].state == 'off' &&
  2743. states['input_boolean.irrigation_cycle3_running'].state == 'off')
  2744. return 'mdi:play-circle-outline';
  2745. else if (
  2746. entity.state == 'on' &&
  2747. states['timer.irrigation_zone' + zone + '_timer'].state == 'active'
  2748. )
  2749. return 'mdi:stop-circle-outline';
  2750. else return '';
  2751. ]]]
  2752. size: 50%
  2753. styles:
  2754. grid:
  2755. - grid-template-areas: "\"i n\""
  2756. - grid-template-columns: 20% 1fr
  2757. - grid-template-rows: 1fr
  2758. card:
  2759. - display: |
  2760. [[[
  2761. var zone = '1';
  2762. if (states['input_boolean.irrigation_cycle1_running'].state == 'on' ||
  2763. states['input_boolean.irrigation_cycle2_running'].state == 'on')
  2764. return 'none';
  2765. else if (
  2766. entity.state == 'on' &&
  2767. states['timer.irrigation_zone' + zone + '_timer'].state != 'active'
  2768. )
  2769. return 'none';
  2770. else return '';
  2771. ]]]
  2772. - font-family: >-
  2773. [[[ return
  2774. states['input_text.irrigation_ui_font_family'].state
  2775. ]]]
  2776. - font-size: 14px
  2777. - background-color: |
  2778. [[[
  2779. var zone = '1';
  2780. if (entity.state == 'on' &&
  2781. states['input_boolean.irrigation_cycle1_running'].state == 'on' ||
  2782. states['input_boolean.irrigation_cycle2_running'].state == 'on' ||
  2783. states['input_boolean.irrigation_cycle3_running'].state == 'on')
  2784. return '';
  2785. else 'var(--primary-background-color)';
  2786. ]]]
  2787. - border: |
  2788. [[[
  2789. var zone = '1';
  2790. if (entity.state == 'on' &&
  2791. states['input_boolean.irrigation_cycle1_running'].state == 'on' ||
  2792. states['input_boolean.irrigation_cycle2_running'].state == 'on' ||
  2793. states['input_boolean.irrigation_cycle3_running'].state == 'on')
  2794. return '';
  2795. else return '1px solid var(--accent-color)';
  2796. ]]]
  2797. - padding: |
  2798. [[[
  2799. var zone = '1';
  2800. if (entity.state == 'on' ||
  2801. states['input_boolean.irrigation_cycle1_running'].state == 'on' ||
  2802. states['input_boolean.irrigation_cycle2_running'].state == 'on' ||
  2803. states['input_boolean.irrigation_cycle3_running'].state == 'on')
  2804. return '0em';
  2805. else return '0.5em';
  2806. ]]]
  2807. - border-radius: 5px
  2808. icon:
  2809. - color: |
  2810. [[[
  2811. var zone = '1';
  2812. if (entity.state == 'off' &&
  2813. states['input_boolean.irrigation_cycle1_running'].state == 'off' ||
  2814. states['input_boolean.irrigation_cycle2_running'].state == 'off' ||
  2815. states['input_boolean.irrigation_cycle3_running'].state == 'off')
  2816. return 'green';
  2817. else if (
  2818. entity.state == 'on' &&
  2819. states['timer.irrigation_zone' + zone + '_timer'].state == 'active'
  2820. )
  2821. return 'red';
  2822. else return '';
  2823. ]]]
  2824. tap_action:
  2825. action: call-service
  2826. service: |
  2827. [[[
  2828. var zone = '1';
  2829. if (entity.state == 'off' &&
  2830. states['input_boolean.irrigation_cycle1_running'].state == 'off' &&
  2831. states['input_boolean.irrigation_cycle2_running'].state == 'off' &&
  2832. states['input_boolean.irrigation_cycle3_running'].state == 'off')
  2833. return 'script.irrigation_run_a_single_zone_on_demand';
  2834. else if (entity.state == 'on' &&
  2835. states['timer.irrigation_zone' + zone + '_timer'].state == 'active')
  2836. return 'script.irrigation_cancel_irrigation';
  2837. else return '';
  2838. ]]]
  2839. service_data:
  2840. cycle: cycle3
  2841. zone: zone2
  2842. - type: custom:button-card
  2843. color_type: blank-card
  2844. - entity: >-
  2845. input_number.irrigation_cycle3_zone2_duration_box
  2846. name: Duration
  2847. - type: conditional
  2848. conditions:
  2849. - entity: input_boolean.irrigation_remote_control
  2850. state: "on"
  2851. row:
  2852. entity: >-
  2853. input_number.irrigation_remote_control_zone2_duration
  2854. name: Remote Control Duration
  2855. icon: mdi:alpha-r-box-outline
  2856. - entity: input_text.irrigation_zone2_name
  2857. name: Zone Name
  2858. - entity: >-
  2859. input_text.irrigation_zone2_switch_entity_id
  2860. name: Switch Name
  2861. card_mod:
  2862. style: |
  2863. ha-card {
  2864. font-family: {% raw %}{{ states('input_text.irrigation_ui_font_family') }}{% endraw %};
  2865. }
  2866. style:
  2867. $: >
  2868. .mdc-dialog .mdc-dialog__container
  2869. .mdc-dialog__surface {
  2870. font-family: {% raw %}{{ states('input_text.irrigation_ui_font_family') }}{% endraw %};
  2871. }
  2872. card_mod:
  2873. style: |
  2874. :host {
  2875. {% if is_state('input_number.irrigation_cycle3_zone2_duration', '0.0') %}
  2876. color: var(--secondary-text-color);
  2877. opacity: 50%;
  2878. {% endif %}
  2879. }
  2880. card_mod:
  2881. style: |
  2882. ha-card {
  2883. background: none;
  2884. overflow: visible !important;
  2885. }
  2886. #states {
  2887. font-family: {% raw %}{{ states('input_text.irrigation_ui_font_family') }}{% endraw %};
  2888. font-size: 16px;
  2889. padding: 0.25em 0.75em 0.25em 0.25em;
  2890. }
  2891. :host {
  2892. {% raw %}
  2893. {% if is_state('input_select.irrigation_cycle', 'cycle1') %}
  2894. {% set cycle_ui = 1 %}
  2895. {% elif is_state('input_boolean.irrigation_cycle', 'cycle2') %}
  2896. {% set cycle_ui = 2 %}
  2897. {% else %}
  2898. {% set cycle_ui = 3 %}
  2899. {% endif %}
  2900. {% if is_state('timer.irrigation_zone2_timer', 'active') and
  2901. cycle_ui == 3 %}
  2902. --paper-item-icon-color: var(--paper-item-icon-active-color);
  2903. {% endif %}
  2904. {% endraw %}
  2905. }
  2906. - type: custom:config-template-card
  2907. variables:
  2908. ZONE_NAME: states['input_text.irrigation_zone3_name'].state
  2909. CYCLE_NAME: states['input_text.irrigation_cycle3_name'].state
  2910. TIMER_STATE: states['timer.irrigation_zone3_timer'].state
  2911. entities:
  2912. - input_text.irrigation_zone3_name
  2913. - input_number.irrigation_cycle3_zone3_duration
  2914. - timer.irrigation_zone3_timer
  2915. card:
  2916. type: entities
  2917. entities:
  2918. - entity: input_number.irrigation_cycle3_zone3_duration
  2919. name: ${ ZONE_NAME }
  2920. icon: >-
  2921. ${ TIMER_STATE === 'active' ?
  2922. 'mdi:sprinkler-variant' : '' }
  2923. tap_action:
  2924. action: fire-dom-event
  2925. browser_mod:
  2926. service: browser_mod.popup
  2927. data:
  2928. title: Manual Cycle - Zone 1
  2929. hide_header: false
  2930. content:
  2931. type: entities
  2932. entities:
  2933. - type: custom:hui-element
  2934. card_type: horizontal-stack
  2935. cards:
  2936. - type: custom:button-card
  2937. entity: >-
  2938. script.irrigation_run_a_single_zone_on_demand
  2939. triggers_update:
  2940. - timer.irrigation_zone3_timer
  2941. name: |
  2942. [[[
  2943. var zone = '1';
  2944. if (entity.state == 'off' &&
  2945. states['input_boolean.irrigation_cycle1_running'].state == 'off' &&
  2946. states['input_boolean.irrigation_cycle2_running'].state == 'off' &&
  2947. states['input_boolean.irrigation_cycle3_running'].state == 'off')
  2948. return 'Run This Zone Now';
  2949. else if (
  2950. entity.state == 'on' &&
  2951. states['timer.irrigation_zone' + zone + '_timer'].state == 'active'
  2952. )
  2953. return 'Stop This Zone';
  2954. else return '';
  2955. ]]]
  2956. icon: |
  2957. [[[
  2958. var zone = '1';
  2959. if (entity.state == 'off' &&
  2960. states['input_boolean.irrigation_cycle1_running'].state == 'off' &&
  2961. states['input_boolean.irrigation_cycle2_running'].state == 'off' &&
  2962. states['input_boolean.irrigation_cycle3_running'].state == 'off')
  2963. return 'mdi:play-circle-outline';
  2964. else if (
  2965. entity.state == 'on' &&
  2966. states['timer.irrigation_zone' + zone + '_timer'].state == 'active'
  2967. )
  2968. return 'mdi:stop-circle-outline';
  2969. else return '';
  2970. ]]]
  2971. size: 90%
  2972. styles:
  2973. grid:
  2974. - grid-template-areas: "\"i n\""
  2975. - grid-template-columns: 20% 1fr
  2976. - grid-template-rows: 1fr
  2977. card:
  2978. - display: |
  2979. [[[
  2980. var zone = '1';
  2981. if (states['input_boolean.irrigation_cycle1_running'].state == 'on' ||
  2982. states['input_boolean.irrigation_cycle2_running'].state == 'on')
  2983. return 'none';
  2984. else if (
  2985. entity.state == 'on' &&
  2986. states['timer.irrigation_zone' + zone + '_timer'].state != 'active'
  2987. )
  2988. return 'none';
  2989. else return '';
  2990. ]]]
  2991. - font-family: >-
  2992. [[[ return
  2993. states['input_text.irrigation_ui_font_family'].state
  2994. ]]]
  2995. - font-size: 14px
  2996. - background-color: |
  2997. [[[
  2998. var zone = '1';
  2999. if (entity.state == 'on' &&
  3000. states['input_boolean.irrigation_cycle1_running'].state == 'on' ||
  3001. states['input_boolean.irrigation_cycle2_running'].state == 'on' ||
  3002. states['input_boolean.irrigation_cycle3_running'].state == 'on')
  3003. return '';
  3004. else 'var(--primary-background-color)';
  3005. ]]]
  3006. - border: |
  3007. [[[
  3008. var zone = '1';
  3009. if (entity.state == 'on' &&
  3010. states['input_boolean.irrigation_cycle1_running'].state == 'on' ||
  3011. states['input_boolean.irrigation_cycle2_running'].state == 'on' ||
  3012. states['input_boolean.irrigation_cycle3_running'].state == 'on')
  3013. return '';
  3014. else return '1px solid var(--accent-color)';
  3015. ]]]
  3016. - padding: |
  3017. [[[
  3018. var zone = '1';
  3019. if (entity.state == 'on' ||
  3020. states['input_boolean.irrigation_cycle1_running'].state == 'on' ||
  3021. states['input_boolean.irrigation_cycle2_running'].state == 'on' ||
  3022. states['input_boolean.irrigation_cycle3_running'].state == 'on')
  3023. return '0em';
  3024. else return '0.5em';
  3025. ]]]
  3026. - border-radius: 5px
  3027. icon:
  3028. - color: |
  3029. [[[
  3030. var zone = '1';
  3031. if (entity.state == 'off' &&
  3032. states['input_boolean.irrigation_cycle1_running'].state == 'off' ||
  3033. states['input_boolean.irrigation_cycle2_running'].state == 'off' ||
  3034. states['input_boolean.irrigation_cycle3_running'].state == 'off')
  3035. return 'green';
  3036. else if (
  3037. entity.state == 'on' &&
  3038. states['timer.irrigation_zone' + zone + '_timer'].state == 'active'
  3039. )
  3040. return 'red';
  3041. else return '';
  3042. ]]]
  3043. tap_action:
  3044. action: call-service
  3045. service: |
  3046. [[[
  3047. var zone = '1';
  3048. if (entity.state == 'off' &&
  3049. states['input_boolean.irrigation_cycle1_running'].state == 'off' &&
  3050. states['input_boolean.irrigation_cycle2_running'].state == 'off' &&
  3051. states['input_boolean.irrigation_cycle3_running'].state == 'off')
  3052. return 'script.irrigation_run_a_single_zone_on_demand';
  3053. else if (entity.state == 'on' &&
  3054. states['timer.irrigation_zone' + zone + '_timer'].state == 'active')
  3055. return 'script.irrigation_cancel_irrigation';
  3056. else return '';
  3057. ]]]
  3058. service_data:
  3059. cycle: cycle3
  3060. zone: zone3
  3061. - type: custom:button-card
  3062. color_type: blank-card
  3063. - entity: >-
  3064. input_number.irrigation_cycle3_zone3_duration_box
  3065. name: Duration
  3066. - type: conditional
  3067. conditions:
  3068. - entity: input_boolean.irrigation_remote_control
  3069. state: "on"
  3070. row:
  3071. entity: >-
  3072. input_number.irrigation_remote_control_zone3_duration
  3073. name: Remote Control Duration
  3074. icon: mdi:alpha-r-box-outline
  3075. - entity: input_text.irrigation_zone3_name
  3076. name: Zone Name
  3077. - entity: >-
  3078. input_text.irrigation_zone3_switch_entity_id
  3079. name: Switch Name
  3080. card_mod:
  3081. style: |
  3082. ha-card {
  3083. font-family: {% raw %}{{ states('input_text.irrigation_ui_font_family') }}{% endraw %};
  3084. }
  3085. style:
  3086. $: >
  3087. .mdc-dialog .mdc-dialog__container
  3088. .mdc-dialog__surface {
  3089. font-family: {% raw %}{{ states('input_text.irrigation_ui_font_family') }}{% endraw %};
  3090. }
  3091. card_mod:
  3092. style: |
  3093. :host {
  3094. {% if is_state('input_number.irrigation_cycle3_zone3_duration', '0.0') %}
  3095. color: var(--secondary-text-color);
  3096. opacity: 50%;
  3097. {% endif %}
  3098. }
  3099. card_mod:
  3100. style: |
  3101. ha-card {
  3102. background: none;
  3103. overflow: visible !important;
  3104. }
  3105. #states {
  3106. font-family: {% raw %}{{ states('input_text.irrigation_ui_font_family') }}{% endraw %};
  3107. font-size: 16px;
  3108. padding: 0.25em 0.75em 0.25em 0.25em;
  3109. }
  3110. :host {
  3111. {% raw %}
  3112. {% if is_state('input_select.irrigation_cycle', 'cycle1') %}
  3113. {% set cycle_ui = 1 %}
  3114. {% elif is_state('input_boolean.irrigation_cycle', 'cycle2') %}
  3115. {% set cycle_ui = 2 %}
  3116. {% else %}
  3117. {% set cycle_ui = 3 %}
  3118. {% endif %}
  3119. {% if is_state('timer.irrigation_zone3_timer', 'active') and
  3120. cycle_ui == 3 %}
  3121. --paper-item-icon-color: var(--paper-item-icon-active-color);
  3122. {% endif %}
  3123. {% endraw %}
  3124. }
  3125. - type: custom:config-template-card
  3126. variables:
  3127. ZONE_NAME: states['input_text.irrigation_zone4_name'].state
  3128. CYCLE_NAME: states['input_text.irrigation_cycle3_name'].state
  3129. TIMER_STATE: states['timer.irrigation_zone4_timer'].state
  3130. entities:
  3131. - input_text.irrigation_zone4_name
  3132. - input_number.irrigation_cycle3_zone4_duration
  3133. - timer.irrigation_zone4_timer
  3134. card:
  3135. type: entities
  3136. entities:
  3137. - entity: input_number.irrigation_cycle3_zone4_duration
  3138. name: ${ ZONE_NAME }
  3139. icon: >-
  3140. ${ TIMER_STATE === 'active' ?
  3141. 'mdi:sprinkler-variant' : '' }
  3142. tap_action:
  3143. action: fire-dom-event
  3144. browser_mod:
  3145. service: browser_mod.popup
  3146. data:
  3147. title: Manual Cycle - Zone 1
  3148. hide_header: false
  3149. content:
  3150. type: entities
  3151. entities:
  3152. - type: custom:hui-element
  3153. card_type: horizontal-stack
  3154. cards:
  3155. - type: custom:button-card
  3156. entity: >-
  3157. script.irrigation_run_a_single_zone_on_demand
  3158. triggers_update:
  3159. - timer.irrigation_zone4_timer
  3160. name: |
  3161. [[[
  3162. var zone = '1';
  3163. if (entity.state == 'off' &&
  3164. states['input_boolean.irrigation_cycle1_running'].state == 'off' &&
  3165. states['input_boolean.irrigation_cycle2_running'].state == 'off' &&
  3166. states['input_boolean.irrigation_cycle3_running'].state == 'off')
  3167. return 'Run This Zone Now';
  3168. else if (
  3169. entity.state == 'on' &&
  3170. states['timer.irrigation_zone' + zone + '_timer'].state == 'active'
  3171. )
  3172. return 'Stop This Zone';
  3173. else return '';
  3174. ]]]
  3175. icon: |
  3176. [[[
  3177. var zone = '1';
  3178. if (entity.state == 'off' &&
  3179. states['input_boolean.irrigation_cycle1_running'].state == 'off' &&
  3180. states['input_boolean.irrigation_cycle2_running'].state == 'off' &&
  3181. states['input_boolean.irrigation_cycle3_running'].state == 'off')
  3182. return 'mdi:play-circle-outline';
  3183. else if (
  3184. entity.state == 'on' &&
  3185. states['timer.irrigation_zone' + zone + '_timer'].state == 'active'
  3186. )
  3187. return 'mdi:stop-circle-outline';
  3188. else return '';
  3189. ]]]
  3190. size: 90%
  3191. styles:
  3192. grid:
  3193. - grid-template-areas: "\"i n\""
  3194. - grid-template-columns: 20% 1fr
  3195. - grid-template-rows: 1fr
  3196. card:
  3197. - display: |
  3198. [[[
  3199. var zone = '1';
  3200. if (states['input_boolean.irrigation_cycle1_running'].state == 'on' ||
  3201. states['input_boolean.irrigation_cycle2_running'].state == 'on')
  3202. return 'none';
  3203. else if (
  3204. entity.state == 'on' &&
  3205. states['timer.irrigation_zone' + zone + '_timer'].state != 'active'
  3206. )
  3207. return 'none';
  3208. else return '';
  3209. ]]]
  3210. - font-family: >-
  3211. [[[ return
  3212. states['input_text.irrigation_ui_font_family'].state
  3213. ]]]
  3214. - font-size: 14px
  3215. - background-color: |
  3216. [[[
  3217. var zone = '1';
  3218. if (entity.state == 'on' &&
  3219. states['input_boolean.irrigation_cycle1_running'].state == 'on' ||
  3220. states['input_boolean.irrigation_cycle2_running'].state == 'on' ||
  3221. states['input_boolean.irrigation_cycle3_running'].state == 'on')
  3222. return '';
  3223. else 'var(--primary-background-color)';
  3224. ]]]
  3225. - border: |
  3226. [[[
  3227. var zone = '1';
  3228. if (entity.state == 'on' &&
  3229. states['input_boolean.irrigation_cycle1_running'].state == 'on' ||
  3230. states['input_boolean.irrigation_cycle2_running'].state == 'on' ||
  3231. states['input_boolean.irrigation_cycle3_running'].state == 'on')
  3232. return '';
  3233. else return '1px solid var(--accent-color)';
  3234. ]]]
  3235. - padding: |
  3236. [[[
  3237. var zone = '1';
  3238. if (entity.state == 'on' ||
  3239. states['input_boolean.irrigation_cycle1_running'].state == 'on' ||
  3240. states['input_boolean.irrigation_cycle2_running'].state == 'on' ||
  3241. states['input_boolean.irrigation_cycle3_running'].state == 'on')
  3242. return '0em';
  3243. else return '0.5em';
  3244. ]]]
  3245. - border-radius: 5px
  3246. icon:
  3247. - color: |
  3248. [[[
  3249. var zone = '1';
  3250. if (entity.state == 'off' &&
  3251. states['input_boolean.irrigation_cycle1_running'].state == 'off' ||
  3252. states['input_boolean.irrigation_cycle2_running'].state == 'off' ||
  3253. states['input_boolean.irrigation_cycle3_running'].state == 'off')
  3254. return 'green';
  3255. else if (
  3256. entity.state == 'on' &&
  3257. states['timer.irrigation_zone' + zone + '_timer'].state == 'active'
  3258. )
  3259. return 'red';
  3260. else return '';
  3261. ]]]
  3262. tap_action:
  3263. action: call-service
  3264. service: |
  3265. [[[
  3266. var zone = '1';
  3267. if (entity.state == 'off' &&
  3268. states['input_boolean.irrigation_cycle1_running'].state == 'off' &&
  3269. states['input_boolean.irrigation_cycle2_running'].state == 'off' &&
  3270. states['input_boolean.irrigation_cycle3_running'].state == 'off')
  3271. return 'script.irrigation_run_a_single_zone_on_demand';
  3272. else if (entity.state == 'on' &&
  3273. states['timer.irrigation_zone' + zone + '_timer'].state == 'active')
  3274. return 'script.irrigation_cancel_irrigation';
  3275. else return '';
  3276. ]]]
  3277. service_data:
  3278. cycle: cycle3
  3279. zone: zone4
  3280. - type: custom:button-card
  3281. color_type: blank-card
  3282. - entity: >-
  3283. input_number.irrigation_cycle3_zone4_duration_box
  3284. name: Duration
  3285. - type: conditional
  3286. conditions:
  3287. - entity: input_boolean.irrigation_remote_control
  3288. state: "on"
  3289. row:
  3290. entity: >-
  3291. input_number.irrigation_remote_control_zone4_duration
  3292. name: Remote Control Duration
  3293. icon: mdi:alpha-r-box-outline
  3294. - entity: input_text.irrigation_zone4_name
  3295. name: Zone Name
  3296. - entity: >-
  3297. input_text.irrigation_zone4_switch_entity_id
  3298. name: Switch Name
  3299. card_mod:
  3300. style: |
  3301. ha-card {
  3302. font-family: {% raw %}{{ states('input_text.irrigation_ui_font_family') }}{% endraw %};
  3303. }
  3304. style:
  3305. $: >
  3306. .mdc-dialog .mdc-dialog__container
  3307. .mdc-dialog__surface {
  3308. font-family: {% raw %}{{ states('input_text.irrigation_ui_font_family') }}{% endraw %};
  3309. }
  3310. card_mod:
  3311. style: |
  3312. :host {
  3313. {% if is_state('input_number.irrigation_cycle3_zone4_duration', '0.0') %}
  3314. color: var(--secondary-text-color);
  3315. opacity: 50%;
  3316. {% endif %}
  3317. }
  3318. card_mod:
  3319. style: |
  3320. ha-card {
  3321. background: none;
  3322. overflow: visible !important;
  3323. }
  3324. #states {
  3325. font-family: {% raw %}{{ states('input_text.irrigation_ui_font_family') }}{% endraw %};
  3326. font-size: 16px;
  3327. padding: 0.25em 0.75em 0.25em 0.25em;
  3328. }
  3329. :host {
  3330. {% raw %}
  3331. {% if is_state('input_select.irrigation_cycle', 'cycle1') %}
  3332. {% set cycle_ui = 1 %}
  3333. {% elif is_state('input_boolean.irrigation_cycle', 'cycle2') %}
  3334. {% set cycle_ui = 2 %}
  3335. {% else %}
  3336. {% set cycle_ui = 3 %}
  3337. {% endif %}
  3338. {% if is_state('timer.irrigation_zone4_timer', 'active') and
  3339. cycle_ui == 3 %}
  3340. --paper-item-icon-color: var(--paper-item-icon-active-color);
  3341. {% endif %}
  3342. {% endraw %}
  3343. }
  3344. head:
  3345. entity: input_boolean.irrigation_cycle3_running
  3346. toggle: false
  3347. name: Manual Cycle
  3348. content_info: name
  3349. icon: mdi:sprinkler-variant
  3350. type: custom:multiple-entity-row
  3351. state_color: true
  3352. entities:
  3353. - entity: sensor.cycle_3_zones1234_duration_sum
  3354. styles: null
  3355. state_color: true
  3356. name: false
  3357. card_mod:
  3358. style: |
  3359. div#head ha-icon {
  3360. color: gray;
  3361. }
  3362. - type: custom:vertical-stack-in-card
  3363. cards:
  3364. - type: entities
  3365. entities:
  3366. - entity: input_number.irrigation_high_temp_4
  3367. name: Temp History (°C)
  3368. type: custom:multiple-entity-row
  3369. unit: false
  3370. secondary_info:
  3371. entity: sensor.blankblank
  3372. name: Multiplier
  3373. state_header: 4 days
  3374. entities:
  3375. - entity: sensor.irrigation_sensor_forecast_high_temp
  3376. unit: false
  3377. name: Today
  3378. - entity: input_number.irrigation_high_temp_1
  3379. unit: false
  3380. name: Yesterday
  3381. - entity: input_number.irrigation_high_temp_2
  3382. unit: false
  3383. name: 2 Days
  3384. - entity: input_number.irrigation_high_temp_3
  3385. unit: false
  3386. name: 3 Days
  3387. card_mod:
  3388. style:
  3389. hui-generic-entity-row $: |
  3390. .secondary::after {
  3391. color: crimson ;
  3392. content: "{{ states('input_number.irrigation_temp_multiplier') }}"
  3393. }
  3394. - type: custom:vertical-stack-in-card
  3395. cards:
  3396. - type: custom:mini-graph-card
  3397. height: 92
  3398. entities:
  3399. - entity: sensor.irrigation_sensor_forecast_high_temp
  3400. color: orchid
  3401. show_legend: true
  3402. name: Forecasted max temp
  3403. - entity: sensor.irrigation_sensor_current_temp
  3404. color: Crimson
  3405. show_legend: true
  3406. name: Real temp
  3407. - entity: sensor.night_or_day
  3408. name: Night
  3409. y_axis: secondary
  3410. color: black
  3411. show_line: false
  3412. show_points: false
  3413. show_legend: false
  3414. line_width: 1
  3415. hours_to_show: 72
  3416. points_per_hour: 1
  3417. aggregate_func: min
  3418. show:
  3419. fill: fade
  3420. name: false
  3421. state: false
  3422. labels: true
  3423. points: false
  3424. labels_secondary: false
  3425. icon: false
  3426. tap_action:
  3427. action: none
  3428. card_mod:
  3429. style: |
  3430. ha-card {
  3431. background: none;
  3432. border-radius: 0px;
  3433. border-width: 0px;
  3434. }
  3435. show_header_toggle: false
  3436. card_mod:
  3437. style: |
  3438. ha-card {
  3439. padding-top:13px ;
  3440. }
  3441. - type: entities
  3442. entities:
  3443. - entity: sensor.irrigation_sensor_rainfall_4
  3444. name: Rain History (mm)
  3445. type: custom:multiple-entity-row
  3446. tap-action:
  3447. action: more-info
  3448. entity-id: input_number.irrigation_rainfall_multiplier
  3449. secondary_info:
  3450. entity: sensor.blankblank
  3451. name: Multiplier
  3452. tap-action:
  3453. action: more-info
  3454. entity: input_number.irrigation_rainfall_multiplier
  3455. unit: false
  3456. state_header: 4 days
  3457. entities:
  3458. - entity: sensor.irrigation_sensor_rainfall_today
  3459. name: Today
  3460. unit: false
  3461. - entity: sensor.irrigation_sensor_rainfall_yesterday
  3462. unit: false
  3463. name: Yesterday
  3464. - entity: sensor.irrigation_sensor_rainfall_2
  3465. unit: false
  3466. name: 2 Days
  3467. - entity: sensor.irrigation_sensor_rainfall_3
  3468. unit: false
  3469. name: 3 Days
  3470. card_mod:
  3471. style:
  3472. hui-generic-entity-row $: |
  3473. .secondary::after {
  3474. color: DodgerBlue ;
  3475. content: "{{ states('input_number.irrigation_rainfall_multiplier') }}"
  3476. }
  3477. - type: custom:vertical-stack-in-card
  3478. cards:
  3479. - type: custom:mini-graph-card
  3480. height: 92
  3481. entities:
  3482. - entity: sensor.irrigation_sensor_forecast_rain
  3483. color: orchid
  3484. show_legend: true
  3485. name: Forecasted rainfall
  3486. - entity: sensor.irrigation_sensor_rainfall_today
  3487. color: DodgerBlue
  3488. name: Real rainfall
  3489. show_legend: true
  3490. show_fill: true
  3491. - entity: sensor.night_or_day
  3492. name: Night
  3493. y_axis: secondary
  3494. color: black
  3495. show_points: true
  3496. show_line: false
  3497. show_legend: false
  3498. line_width: 1
  3499. hours_to_show: 72
  3500. points_per_hour: 1
  3501. aggregate_func: min
  3502. show:
  3503. fill: fade
  3504. name: false
  3505. state: false
  3506. labels: true
  3507. points: false
  3508. labels_secondary: false
  3509. icon: false
  3510. tap_action:
  3511. action: none
  3512. card_mod:
  3513. style: |
  3514. ha-card {
  3515. background: none;
  3516. border-radius: 0px;
  3517. } .flex {
  3518. padding: 0em
  3519. }
  3520. card_mod:
  3521. style: |
  3522. ha-card {
  3523. padding-top:13px ;
  3524. }
  3525. - type: custom:weather-chart-card
  3526. entity: weather.pirateweather
  3527. forecast:
  3528. precipitation_type: ""
  3529. type: daily
  3530. style: style2
  3531. units:
  3532. pressure: ""
  3533. speed: ""
  3534. temp: sensor.gw2000a_outdoor_temperature
  3535. feels_like: sensor.gw2000a_feels_like_temperature
  3536. press: sensor.gw2000a_absolute_pressure
  3537. humid: sensor.gw2000a_humidity
  3538. uv: sensor.gw2000a_uv_index
  3539. winddir: sensor.gw2000a_wind_direction
  3540. windspeed: sensor.gw2000a_wind_speed
  3541. dew_point: sensor.gw2000a_dewpoint
  3542. wind_gust_speed: sensor.gw2000a_wind_gust
  3543. description: sensor.openweathermap_hourly_weather_forecast
  3544. show_main: false
  3545. show_feels_like: false
  3546. show_description: false
  3547. show_temperature: false
  3548. show_current_condition: false
  3549. show_attributes: false
  3550. show_humidity: false
  3551. show_pressure: false
  3552. show_sun: false
  3553. show_wind_direction: false
  3554. show_wind_speed: false
  3555. show_dew_point: false
  3556. show_wind_gust_speed: false
  3557. show_visibility: false
  3558. show_last_changed: false
  3559. autoscroll: false
  3560. use_12hour_format: false
  3561. show_time: false
  3562. layout:
  3563. grid-template-columns: 33% 33% 34%
  3564. grid-template-areas: |
  3565. "charts tariff"
  3566.  
Advertisement
Add Comment
Please, Sign In to add comment