Advertisement
Guest User

Untitled

a guest
Feb 19th, 2025
23
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.04 KB | None | 0 0
  1. type: custom:button-card
  2. entity: sensor.dishwasher_operation_state
  3. name: Geschirrspühler
  4. show_label: true
  5. tap_action:
  6. action: none
  7. hold_action:
  8. action: none
  9. double_tap_action:
  10. action: none
  11. icon: mdi:dishwasher
  12. state:
  13. - value: Ready
  14. label: Idle
  15. styles:
  16. custom_fields:
  17. bar:
  18. - display: none
  19. stat1:
  20. - display: none
  21. stat2:
  22. - visibility: hidden
  23. stat3:
  24. - visibility: hidden
  25. - value: "Off"
  26. label: "Off"
  27. styles:
  28. custom_fields:
  29. bar:
  30. - display: none
  31. stat1:
  32. - display: none
  33. stat2:
  34. - visibility: hidden
  35. stat3:
  36. - visibility: hidden
  37. styles:
  38. card:
  39. - padding: 20px
  40. - height: 180px
  41. - font-family: montserrat
  42. grid:
  43. - grid-template-areas: "\"i program\" \"n stat2\" \"bar bar\" \"stat1 stat3\""
  44. - grid-template-columns: 1fr 1fr
  45. - grid-template-rows: 70px min-content 40px min-content
  46. name:
  47. - justify-self: start
  48. - font-size: 16px
  49. - font-weight: 500
  50. label:
  51. - justify-self: start
  52. - font-size: 16px
  53. - font-weight: 500
  54. icon:
  55. - width: 36px
  56. img_cell:
  57. - justify-self: start
  58. - align-self: start
  59. - width: 36px
  60. - height: 36px
  61. custom_fields:
  62. program:
  63. - justify-self: end
  64. - align-self: end
  65. - padding-bottom: 6px
  66. - font-size: 16px
  67. - font-weight: 500
  68. - visibility: >
  69. [[[ return states['switch.geschirrspuler_power'].state !== 'off' ?
  70. 'visible' : 'hidden'; ]]]
  71. stat1:
  72. - justify-self: start
  73. - font-size: 12px
  74. - opacity: 0.7
  75. stat2:
  76. - justify-self: end
  77. - font-size: 16px
  78. - font-weight: 500
  79. - visibility: >
  80. [[[ return states['switch.geschirrspuler_power'].state !== 'off' ?
  81. 'visible' : 'hidden'; ]]]
  82. stat3:
  83. - justify-self: end
  84. - font-size: 12px
  85. - opacity: 0.7
  86. - visibility: |
  87. [[[
  88. var powerState = states['switch.geschirrspuler_power'].state;
  89. if (powerState === 'off') {
  90. return 'visible'; // Keep stat3 visible when power is off
  91. }
  92. var progress = states['sensor.geschirrspuler_program_progress'].state;
  93. if (progress === 'unavailable' || progress === 'unknown' || progress === '') {
  94. return 'visible'; // Show stat3 as "Ready" when power is on and progress is empty
  95. }
  96. return 'visible'; // Show progress percentage otherwise
  97. ]]]
  98. bar:
  99. - justify-self: start
  100. - width: 100%
  101. - border-radius: 6px
  102. - background: var(--slider-color)
  103. - height: 16px
  104. custom_fields:
  105. bar: |
  106. [[[
  107. var state = parseFloat(states['sensor.geschirrspuler_program_progress'].state);
  108. if (isNaN(state)) { state = 0; } // Ensure it defaults to 0 if the state isn't a valid number
  109. return `<div style="background: var(--slider-color); border-radius: 6px; width: 100%; height: 16px;">
  110. <div style="background: var(--color-blue); border-radius: 6px; height: 16px; width: ${state}%;"></div>
  111. </div>`;
  112. ]]]
  113. program: |
  114. [[[
  115. var powerState = states['switch.geschirrspuler_power'].state;
  116. var program = states['select.geschirrspuler_aktives_programm'].state;
  117. var programLabels = {
  118. "dishcare_dishwasher_program_eco_50": "Eco",
  119. "dishcare_dishwasher_program_auto_2": "Auto",
  120. "dishcare_dishwasher_program_intensiv_70": "Intensiv",
  121. "dishcare_dishwasher_program_quick_65": "Schnell 65°",
  122. "dishcare_dishwasher_program_night_wash": "Nacht Programm",
  123. "dishcare_dishwasher_program_machine_care": "Maschienenreinigung",
  124. "dishcare_dishwasher_program_pre_rinse": "Vorspühlen"
  125. };
  126.  
  127. // If the dishwasher is on but no program is running, show "Idle"
  128. if (powerState !== 'off' && (!program || program === 'unavailable' || program === 'unknown')) {
  129. return "Idle";
  130. }
  131.  
  132. return programLabels[program] || program;
  133. ]]]
  134. stat1: |
  135. [[[
  136. // Icons for rinse aid and salt status
  137. var rinseAidState = states['sensor.geschirrspuler_klarspuler_fast_leer'].state;
  138. var saltState = states['sensor.geschirrspuler_salz_fast_leer'].state;
  139.  
  140. // Set the icon color based on state
  141. var rinseAidColor = rinseAidState === 'present' ? 'red' : 'gray';
  142. var saltColor = saltState === 'present' ? 'red' : 'gray';
  143.  
  144. return `
  145. <span style="color: ${rinseAidColor}; margin-right: 4px;">
  146. <ha-icon icon="fapro:sparkles" style="width: 16px; height: 16px;"></ha-icon>
  147. </span>
  148. <span style="color: ${saltColor};">
  149. <ha-icon icon="fapro:salt-shaker" style="width: 16px; height: 16px;"></ha-icon>
  150. </span>
  151. `;
  152. ]]]
  153. stat2: |
  154. [[[
  155. var finishTime = states['sensor.geschirrspuler_remaining_program_time'].state;
  156.  
  157. // If no program is running or finish time is unavailable, return an empty string
  158. if (!finishTime || finishTime === 'unavailable' || finishTime === 'unknown') {
  159. return "";
  160. }
  161.  
  162. var time = new Date(finishTime);
  163. var hours = time.getHours();
  164. var minutes = time.getMinutes();
  165. return 'Fertig um ' + (hours < 10 ? '0' : '') + hours + ':' + (minutes < 10 ? '0' : '') + minutes;
  166. ]]]
  167. stat3: |
  168. [[[
  169. var powerState = states['switch.geschirrspuler_power'].state;
  170. if (powerState === 'off') {
  171. return "Off"; // Display "Off" when the power is off
  172. }
  173.  
  174. var progress = states['sensor.geschirrspuler_program_progress'].state;
  175.  
  176. // If the progress is unavailable or empty, show "Ready"
  177. if (progress === 'unavailable' || progress === 'unknown' || progress === '') {
  178. return "Ready"; // Default to "Ready" when the dishwasher is in idle state
  179. }
  180.  
  181. // Otherwise, return the progress percentage
  182. return progress + '%';
  183. ]]]
  184.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement