diff --git a/ibsystem/ibsystem_dashboard.yaml b/ibsystem/ibsystem_dashboard.yaml new file mode 100644 index 0000000..f6d3c1f --- /dev/null +++ b/ibsystem/ibsystem_dashboard.yaml @@ -0,0 +1,254 @@ +title: IBSystem Sterowniki +views: +- title: Wszystkie sterowniki + path: all + icon: mdi:lightbulb-group + cards: + - type: horizontal-stack + cards: + - type: button + name: WSZYSTKIE ON + icon: mdi:lightbulb-group + icon_height: 40px + tap_action: + action: call-service + service: switch.turn_on + target: + entity_id: + - switch.ibsystem_rs0_id30_rs0_id30_output_do_0 + - switch.ibsystem_rs0_id30_rs0_id30_output_do_1 + - switch.ibsystem_rs0_id30_rs0_id30_output_do_2 + - switch.ibsystem_rs0_id30_rs0_id30_output_do_3 + - switch.ibsystem_rs0_id31_rs0_id31_output_do_0 + - switch.ibsystem_rs0_id31_rs0_id31_output_do_1 + - switch.ibsystem_rs0_id31_rs0_id31_output_do_2 + - switch.ibsystem_rs0_id31_rs0_id31_output_do_3 + - switch.ibsystem_rs0_id32_rs0_id32_output_do_0 + - switch.ibsystem_rs0_id32_rs0_id32_output_do_1 + - switch.ibsystem_rs0_id32_rs0_id32_output_do_2 + - switch.ibsystem_rs0_id32_rs0_id32_output_do_3 + - switch.ibsystem_rs0_id33_rs0_id33_output_do_0 + - switch.ibsystem_rs0_id33_rs0_id33_output_do_1 + - switch.ibsystem_rs0_id33_rs0_id33_output_do_2 + - switch.ibsystem_rs0_id33_rs0_id33_output_do_3 + - switch.ibsystem_rs0_id34_rs0_id34_output_do_0 + - switch.ibsystem_rs0_id34_rs0_id34_output_do_1 + - switch.ibsystem_rs0_id34_rs0_id34_output_do_2 + - switch.ibsystem_rs0_id34_rs0_id34_output_do_3 + - switch.ibsystem_rs0_id35_rs0_id35_output_do_0 + - switch.ibsystem_rs0_id35_rs0_id35_output_do_1 + - switch.ibsystem_rs0_id35_rs0_id35_output_do_2 + - switch.ibsystem_rs0_id35_rs0_id35_output_do_3 + - switch.ibsystem_rs0_id36_rs0_id36_output_do_0 + - switch.ibsystem_rs0_id36_rs0_id36_output_do_1 + - switch.ibsystem_rs0_id36_rs0_id36_output_do_2 + - switch.ibsystem_rs0_id36_rs0_id36_output_do_3 + - switch.ibsystem_rs0_id37_rs0_id37_output_do_0 + - switch.ibsystem_rs0_id37_rs0_id37_output_do_1 + - switch.ibsystem_rs0_id37_rs0_id37_output_do_2 + - switch.ibsystem_rs0_id37_rs0_id37_output_do_3 + - switch.ibsystem_rs0_id38_rs0_id38_output_do_0 + - switch.ibsystem_rs0_id38_rs0_id38_output_do_1 + - switch.ibsystem_rs0_id38_rs0_id38_output_do_2 + - switch.ibsystem_rs0_id38_rs0_id38_output_do_3 + - switch.ibsystem_rs0_id39_rs0_id39_output_do_0 + - switch.ibsystem_rs0_id39_rs0_id39_output_do_1 + - switch.ibsystem_rs0_id39_rs0_id39_output_do_2 + - switch.ibsystem_rs0_id39_rs0_id39_output_do_3 + - switch.ibsystem_rs0_id40_rs0_id40_output_do_0 + - switch.ibsystem_rs0_id40_rs0_id40_output_do_1 + - switch.ibsystem_rs0_id40_rs0_id40_output_do_2 + - switch.ibsystem_rs0_id40_rs0_id40_output_do_3 + - switch.ibsystem_rs0_id41_rs0_id41_output_do_0 + - switch.ibsystem_rs0_id41_rs0_id41_output_do_1 + - switch.ibsystem_rs0_id41_rs0_id41_output_do_2 + - switch.ibsystem_rs0_id41_rs0_id41_output_do_3 + - type: button + name: WSZYSTKIE OFF + icon: mdi:lightbulb-group-off + icon_height: 40px + tap_action: + action: call-service + service: switch.turn_off + target: + entity_id: + - switch.ibsystem_rs0_id30_rs0_id30_output_do_0 + - switch.ibsystem_rs0_id30_rs0_id30_output_do_1 + - switch.ibsystem_rs0_id30_rs0_id30_output_do_2 + - switch.ibsystem_rs0_id30_rs0_id30_output_do_3 + - switch.ibsystem_rs0_id31_rs0_id31_output_do_0 + - switch.ibsystem_rs0_id31_rs0_id31_output_do_1 + - switch.ibsystem_rs0_id31_rs0_id31_output_do_2 + - switch.ibsystem_rs0_id31_rs0_id31_output_do_3 + - switch.ibsystem_rs0_id32_rs0_id32_output_do_0 + - switch.ibsystem_rs0_id32_rs0_id32_output_do_1 + - switch.ibsystem_rs0_id32_rs0_id32_output_do_2 + - switch.ibsystem_rs0_id32_rs0_id32_output_do_3 + - switch.ibsystem_rs0_id33_rs0_id33_output_do_0 + - switch.ibsystem_rs0_id33_rs0_id33_output_do_1 + - switch.ibsystem_rs0_id33_rs0_id33_output_do_2 + - switch.ibsystem_rs0_id33_rs0_id33_output_do_3 + - switch.ibsystem_rs0_id34_rs0_id34_output_do_0 + - switch.ibsystem_rs0_id34_rs0_id34_output_do_1 + - switch.ibsystem_rs0_id34_rs0_id34_output_do_2 + - switch.ibsystem_rs0_id34_rs0_id34_output_do_3 + - switch.ibsystem_rs0_id35_rs0_id35_output_do_0 + - switch.ibsystem_rs0_id35_rs0_id35_output_do_1 + - switch.ibsystem_rs0_id35_rs0_id35_output_do_2 + - switch.ibsystem_rs0_id35_rs0_id35_output_do_3 + - switch.ibsystem_rs0_id36_rs0_id36_output_do_0 + - switch.ibsystem_rs0_id36_rs0_id36_output_do_1 + - switch.ibsystem_rs0_id36_rs0_id36_output_do_2 + - switch.ibsystem_rs0_id36_rs0_id36_output_do_3 + - switch.ibsystem_rs0_id37_rs0_id37_output_do_0 + - switch.ibsystem_rs0_id37_rs0_id37_output_do_1 + - switch.ibsystem_rs0_id37_rs0_id37_output_do_2 + - switch.ibsystem_rs0_id37_rs0_id37_output_do_3 + - switch.ibsystem_rs0_id38_rs0_id38_output_do_0 + - switch.ibsystem_rs0_id38_rs0_id38_output_do_1 + - switch.ibsystem_rs0_id38_rs0_id38_output_do_2 + - switch.ibsystem_rs0_id38_rs0_id38_output_do_3 + - switch.ibsystem_rs0_id39_rs0_id39_output_do_0 + - switch.ibsystem_rs0_id39_rs0_id39_output_do_1 + - switch.ibsystem_rs0_id39_rs0_id39_output_do_2 + - switch.ibsystem_rs0_id39_rs0_id39_output_do_3 + - switch.ibsystem_rs0_id40_rs0_id40_output_do_0 + - switch.ibsystem_rs0_id40_rs0_id40_output_do_1 + - switch.ibsystem_rs0_id40_rs0_id40_output_do_2 + - switch.ibsystem_rs0_id40_rs0_id40_output_do_3 + - switch.ibsystem_rs0_id41_rs0_id41_output_do_0 + - switch.ibsystem_rs0_id41_rs0_id41_output_do_1 + - switch.ibsystem_rs0_id41_rs0_id41_output_do_2 + - switch.ibsystem_rs0_id41_rs0_id41_output_do_3 + - type: entities + title: Wiatrołap (ID30) + entities: + - entity: switch.ibsystem_rs0_id30_rs0_id30_output_do_0 + name: Oświetlenie H1 (Led bar AP) + - entity: switch.ibsystem_rs0_id30_rs0_id30_output_do_1 + name: Oświetlenie H2 led + - entity: switch.ibsystem_rs0_id30_rs0_id30_output_do_2 + name: Oświetlenie K1 szynoprzewód nowodworski + - entity: switch.ibsystem_rs0_id30_rs0_id30_output_do_3 + name: Oświetlenie K2 szynoprzewód nowodworski + - type: entities + title: Kuchnia (ID31) + entities: + - entity: switch.ibsystem_rs0_id31_rs0_id31_output_do_0 + name: Oświetlenie K3 halogeny okno + - entity: switch.ibsystem_rs0_id31_rs0_id31_output_do_1 + name: Oświetlenie K4 lampy nad barem + - entity: switch.ibsystem_rs0_id31_rs0_id31_output_do_2 + name: Oświetlenie K5 półki led + - entity: switch.ibsystem_rs0_id31_rs0_id31_output_do_3 + name: Oświetlenie K6 led okno + - type: entities + title: Jadalnia / Salon (ID32) + entities: + - entity: switch.ibsystem_rs0_id32_rs0_id32_output_do_0 + name: Oświetlenie J1 + - entity: switch.ibsystem_rs0_id32_rs0_id32_output_do_1 + name: Oświetlenie J2 + - entity: switch.ibsystem_rs0_id32_rs0_id32_output_do_2 + name: Oświetlenie S1 Ring + - entity: switch.ibsystem_rs0_id32_rs0_id32_output_do_3 + name: Oświetlenie S2 lampy za kanapą + - type: entities + title: Salon (ID33) + entities: + - entity: switch.ibsystem_rs0_id33_rs0_id33_output_do_0 + name: Oświetlenie lampa przed tv + - entity: switch.ibsystem_rs0_id33_rs0_id33_output_do_1 + name: Oświetlenie led + - entity: switch.ibsystem_rs0_id33_rs0_id33_output_do_2 + name: Oświetlenie dekoracyjne koło lampy + - entity: switch.ibsystem_rs0_id33_rs0_id33_output_do_3 + name: Oświetlenie led sufit wnęka + - type: entities + title: Korytarz (ID34) + entities: + - entity: switch.ibsystem_rs0_id34_rs0_id34_output_do_0 + name: Oświetlenie H3 szynoprzewód nowodworski + - entity: switch.ibsystem_rs0_id34_rs0_id34_output_do_1 + name: Oświetlenie H4 szynoprzewód nowodworski + - entity: switch.ibsystem_rs0_id34_rs0_id34_output_do_2 + name: Oświetlenie H5 ledy pionowe + - entity: switch.ibsystem_rs0_id34_rs0_id34_output_do_3 + name: Oświetlenie H6 led kominek + - type: entities + title: Biuro W/ Garderoba (ID35) + entities: + - entity: switch.ibsystem_rs0_id35_rs0_id35_output_do_0 + name: Oświetlenie BW1 + - entity: switch.ibsystem_rs0_id35_rs0_id35_output_do_1 + name: Oświetlenie BW2 + - entity: switch.ibsystem_rs0_id35_rs0_id35_output_do_2 + name: Oświetlenie G1 + - entity: switch.ibsystem_rs0_id35_rs0_id35_output_do_3 + name: Oświetlenie G2 led nad szafami i koło lustra + - type: entities + title: Sypialnia (ID36) + entities: + - entity: switch.ibsystem_rs0_id36_rs0_id36_output_do_0 + name: Oświetlenie R1 główne + - entity: switch.ibsystem_rs0_id36_rs0_id36_output_do_1 + name: Oświetlenie R2 nakastlik P + - entity: switch.ibsystem_rs0_id36_rs0_id36_output_do_2 + name: Oświetlenie R3 nakastlik L + - entity: switch.ibsystem_rs0_id36_rs0_id36_output_do_3 + name: Oświetlenie R4 led na suficie + - type: entities + title: Łazienka (ID37) + entities: + - entity: switch.ibsystem_rs0_id37_rs0_id37_output_do_0 + name: Oświetlenie L1 + - entity: switch.ibsystem_rs0_id37_rs0_id37_output_do_1 + name: Oświetlenie L2 + - entity: switch.ibsystem_rs0_id37_rs0_id37_output_do_2 + name: Oświetlenie L3 + - entity: switch.ibsystem_rs0_id37_rs0_id37_output_do_3 + name: Oświetlenie L4 + - type: entities + title: Łazienka/WC (ID38) + entities: + - entity: switch.ibsystem_rs0_id38_rs0_id38_output_do_0 + name: Oświetlenie L5 + - entity: switch.ibsystem_rs0_id38_rs0_id38_output_do_1 + name: Oświetlenie L6 + - entity: switch.ibsystem_rs0_id38_rs0_id38_output_do_2 + name: Oświetlenie W1 + - entity: switch.ibsystem_rs0_id38_rs0_id38_output_do_3 + name: Oświetlenie W2 + - type: entities + title: Basia (ID39) + entities: + - entity: switch.ibsystem_rs0_id39_rs0_id39_output_do_0 + name: Oświetlenie D1 główne + - entity: switch.ibsystem_rs0_id39_rs0_id39_output_do_1 + name: Oświetlenie D2 nad biurkiem + - entity: switch.ibsystem_rs0_id39_rs0_id39_output_do_2 + name: Oświetlenie D3 chmurka + - entity: switch.ibsystem_rs0_id39_rs0_id39_output_do_3 + name: Oświetlenie D4 łóżko + - type: entities + title: Biuro A (ID40) + entities: + - entity: switch.ibsystem_rs0_id40_rs0_id40_output_do_0 + name: Oświetlenie B1 główne + - entity: switch.ibsystem_rs0_id40_rs0_id40_output_do_1 + name: Oświetlenie B2 nad biurkiem + - entity: switch.ibsystem_rs0_id40_rs0_id40_output_do_2 + name: Oświetlenie B3 biurko lampa + - entity: switch.ibsystem_rs0_id40_rs0_id40_output_do_3 + name: Oświetlenie B4 dla ledów + - type: entities + title: WC/Poddasze (ID41) + entities: + - entity: switch.ibsystem_rs0_id41_rs0_id41_output_do_0 + name: Oświetlenie W2 góra halogeny + - entity: switch.ibsystem_rs0_id41_rs0_id41_output_do_1 + name: Oświetlenie W3 halogen prysznic + led + - entity: switch.ibsystem_rs0_id41_rs0_id41_output_do_2 + name: Oświetlenie P1 Poddasze 1 + - entity: switch.ibsystem_rs0_id41_rs0_id41_output_do_3 + name: Oświetlenie P2 Poddasze 2 diff --git a/ibsystem/ibsystem_dashboard.yaml b/ibsystem/ibsystem_dashboard.yaml new file mode 100644 index 0000000..f6d3c1f --- /dev/null +++ b/ibsystem/ibsystem_dashboard.yaml @@ -0,0 +1,254 @@ +title: IBSystem Sterowniki +views: +- title: Wszystkie sterowniki + path: all + icon: mdi:lightbulb-group + cards: + - type: horizontal-stack + cards: + - type: button + name: WSZYSTKIE ON + icon: mdi:lightbulb-group + icon_height: 40px + tap_action: + action: call-service + service: switch.turn_on + target: + entity_id: + - switch.ibsystem_rs0_id30_rs0_id30_output_do_0 + - switch.ibsystem_rs0_id30_rs0_id30_output_do_1 + - switch.ibsystem_rs0_id30_rs0_id30_output_do_2 + - switch.ibsystem_rs0_id30_rs0_id30_output_do_3 + - switch.ibsystem_rs0_id31_rs0_id31_output_do_0 + - switch.ibsystem_rs0_id31_rs0_id31_output_do_1 + - switch.ibsystem_rs0_id31_rs0_id31_output_do_2 + - switch.ibsystem_rs0_id31_rs0_id31_output_do_3 + - switch.ibsystem_rs0_id32_rs0_id32_output_do_0 + - switch.ibsystem_rs0_id32_rs0_id32_output_do_1 + - switch.ibsystem_rs0_id32_rs0_id32_output_do_2 + - switch.ibsystem_rs0_id32_rs0_id32_output_do_3 + - switch.ibsystem_rs0_id33_rs0_id33_output_do_0 + - switch.ibsystem_rs0_id33_rs0_id33_output_do_1 + - switch.ibsystem_rs0_id33_rs0_id33_output_do_2 + - switch.ibsystem_rs0_id33_rs0_id33_output_do_3 + - switch.ibsystem_rs0_id34_rs0_id34_output_do_0 + - switch.ibsystem_rs0_id34_rs0_id34_output_do_1 + - switch.ibsystem_rs0_id34_rs0_id34_output_do_2 + - switch.ibsystem_rs0_id34_rs0_id34_output_do_3 + - switch.ibsystem_rs0_id35_rs0_id35_output_do_0 + - switch.ibsystem_rs0_id35_rs0_id35_output_do_1 + - switch.ibsystem_rs0_id35_rs0_id35_output_do_2 + - switch.ibsystem_rs0_id35_rs0_id35_output_do_3 + - switch.ibsystem_rs0_id36_rs0_id36_output_do_0 + - switch.ibsystem_rs0_id36_rs0_id36_output_do_1 + - switch.ibsystem_rs0_id36_rs0_id36_output_do_2 + - switch.ibsystem_rs0_id36_rs0_id36_output_do_3 + - switch.ibsystem_rs0_id37_rs0_id37_output_do_0 + - switch.ibsystem_rs0_id37_rs0_id37_output_do_1 + - switch.ibsystem_rs0_id37_rs0_id37_output_do_2 + - switch.ibsystem_rs0_id37_rs0_id37_output_do_3 + - switch.ibsystem_rs0_id38_rs0_id38_output_do_0 + - switch.ibsystem_rs0_id38_rs0_id38_output_do_1 + - switch.ibsystem_rs0_id38_rs0_id38_output_do_2 + - switch.ibsystem_rs0_id38_rs0_id38_output_do_3 + - switch.ibsystem_rs0_id39_rs0_id39_output_do_0 + - switch.ibsystem_rs0_id39_rs0_id39_output_do_1 + - switch.ibsystem_rs0_id39_rs0_id39_output_do_2 + - switch.ibsystem_rs0_id39_rs0_id39_output_do_3 + - switch.ibsystem_rs0_id40_rs0_id40_output_do_0 + - switch.ibsystem_rs0_id40_rs0_id40_output_do_1 + - switch.ibsystem_rs0_id40_rs0_id40_output_do_2 + - switch.ibsystem_rs0_id40_rs0_id40_output_do_3 + - switch.ibsystem_rs0_id41_rs0_id41_output_do_0 + - switch.ibsystem_rs0_id41_rs0_id41_output_do_1 + - switch.ibsystem_rs0_id41_rs0_id41_output_do_2 + - switch.ibsystem_rs0_id41_rs0_id41_output_do_3 + - type: button + name: WSZYSTKIE OFF + icon: mdi:lightbulb-group-off + icon_height: 40px + tap_action: + action: call-service + service: switch.turn_off + target: + entity_id: + - switch.ibsystem_rs0_id30_rs0_id30_output_do_0 + - switch.ibsystem_rs0_id30_rs0_id30_output_do_1 + - switch.ibsystem_rs0_id30_rs0_id30_output_do_2 + - switch.ibsystem_rs0_id30_rs0_id30_output_do_3 + - switch.ibsystem_rs0_id31_rs0_id31_output_do_0 + - switch.ibsystem_rs0_id31_rs0_id31_output_do_1 + - switch.ibsystem_rs0_id31_rs0_id31_output_do_2 + - switch.ibsystem_rs0_id31_rs0_id31_output_do_3 + - switch.ibsystem_rs0_id32_rs0_id32_output_do_0 + - switch.ibsystem_rs0_id32_rs0_id32_output_do_1 + - switch.ibsystem_rs0_id32_rs0_id32_output_do_2 + - switch.ibsystem_rs0_id32_rs0_id32_output_do_3 + - switch.ibsystem_rs0_id33_rs0_id33_output_do_0 + - switch.ibsystem_rs0_id33_rs0_id33_output_do_1 + - switch.ibsystem_rs0_id33_rs0_id33_output_do_2 + - switch.ibsystem_rs0_id33_rs0_id33_output_do_3 + - switch.ibsystem_rs0_id34_rs0_id34_output_do_0 + - switch.ibsystem_rs0_id34_rs0_id34_output_do_1 + - switch.ibsystem_rs0_id34_rs0_id34_output_do_2 + - switch.ibsystem_rs0_id34_rs0_id34_output_do_3 + - switch.ibsystem_rs0_id35_rs0_id35_output_do_0 + - switch.ibsystem_rs0_id35_rs0_id35_output_do_1 + - switch.ibsystem_rs0_id35_rs0_id35_output_do_2 + - switch.ibsystem_rs0_id35_rs0_id35_output_do_3 + - switch.ibsystem_rs0_id36_rs0_id36_output_do_0 + - switch.ibsystem_rs0_id36_rs0_id36_output_do_1 + - switch.ibsystem_rs0_id36_rs0_id36_output_do_2 + - switch.ibsystem_rs0_id36_rs0_id36_output_do_3 + - switch.ibsystem_rs0_id37_rs0_id37_output_do_0 + - switch.ibsystem_rs0_id37_rs0_id37_output_do_1 + - switch.ibsystem_rs0_id37_rs0_id37_output_do_2 + - switch.ibsystem_rs0_id37_rs0_id37_output_do_3 + - switch.ibsystem_rs0_id38_rs0_id38_output_do_0 + - switch.ibsystem_rs0_id38_rs0_id38_output_do_1 + - switch.ibsystem_rs0_id38_rs0_id38_output_do_2 + - switch.ibsystem_rs0_id38_rs0_id38_output_do_3 + - switch.ibsystem_rs0_id39_rs0_id39_output_do_0 + - switch.ibsystem_rs0_id39_rs0_id39_output_do_1 + - switch.ibsystem_rs0_id39_rs0_id39_output_do_2 + - switch.ibsystem_rs0_id39_rs0_id39_output_do_3 + - switch.ibsystem_rs0_id40_rs0_id40_output_do_0 + - switch.ibsystem_rs0_id40_rs0_id40_output_do_1 + - switch.ibsystem_rs0_id40_rs0_id40_output_do_2 + - switch.ibsystem_rs0_id40_rs0_id40_output_do_3 + - switch.ibsystem_rs0_id41_rs0_id41_output_do_0 + - switch.ibsystem_rs0_id41_rs0_id41_output_do_1 + - switch.ibsystem_rs0_id41_rs0_id41_output_do_2 + - switch.ibsystem_rs0_id41_rs0_id41_output_do_3 + - type: entities + title: Wiatrołap (ID30) + entities: + - entity: switch.ibsystem_rs0_id30_rs0_id30_output_do_0 + name: Oświetlenie H1 (Led bar AP) + - entity: switch.ibsystem_rs0_id30_rs0_id30_output_do_1 + name: Oświetlenie H2 led + - entity: switch.ibsystem_rs0_id30_rs0_id30_output_do_2 + name: Oświetlenie K1 szynoprzewód nowodworski + - entity: switch.ibsystem_rs0_id30_rs0_id30_output_do_3 + name: Oświetlenie K2 szynoprzewód nowodworski + - type: entities + title: Kuchnia (ID31) + entities: + - entity: switch.ibsystem_rs0_id31_rs0_id31_output_do_0 + name: Oświetlenie K3 halogeny okno + - entity: switch.ibsystem_rs0_id31_rs0_id31_output_do_1 + name: Oświetlenie K4 lampy nad barem + - entity: switch.ibsystem_rs0_id31_rs0_id31_output_do_2 + name: Oświetlenie K5 półki led + - entity: switch.ibsystem_rs0_id31_rs0_id31_output_do_3 + name: Oświetlenie K6 led okno + - type: entities + title: Jadalnia / Salon (ID32) + entities: + - entity: switch.ibsystem_rs0_id32_rs0_id32_output_do_0 + name: Oświetlenie J1 + - entity: switch.ibsystem_rs0_id32_rs0_id32_output_do_1 + name: Oświetlenie J2 + - entity: switch.ibsystem_rs0_id32_rs0_id32_output_do_2 + name: Oświetlenie S1 Ring + - entity: switch.ibsystem_rs0_id32_rs0_id32_output_do_3 + name: Oświetlenie S2 lampy za kanapą + - type: entities + title: Salon (ID33) + entities: + - entity: switch.ibsystem_rs0_id33_rs0_id33_output_do_0 + name: Oświetlenie lampa przed tv + - entity: switch.ibsystem_rs0_id33_rs0_id33_output_do_1 + name: Oświetlenie led + - entity: switch.ibsystem_rs0_id33_rs0_id33_output_do_2 + name: Oświetlenie dekoracyjne koło lampy + - entity: switch.ibsystem_rs0_id33_rs0_id33_output_do_3 + name: Oświetlenie led sufit wnęka + - type: entities + title: Korytarz (ID34) + entities: + - entity: switch.ibsystem_rs0_id34_rs0_id34_output_do_0 + name: Oświetlenie H3 szynoprzewód nowodworski + - entity: switch.ibsystem_rs0_id34_rs0_id34_output_do_1 + name: Oświetlenie H4 szynoprzewód nowodworski + - entity: switch.ibsystem_rs0_id34_rs0_id34_output_do_2 + name: Oświetlenie H5 ledy pionowe + - entity: switch.ibsystem_rs0_id34_rs0_id34_output_do_3 + name: Oświetlenie H6 led kominek + - type: entities + title: Biuro W/ Garderoba (ID35) + entities: + - entity: switch.ibsystem_rs0_id35_rs0_id35_output_do_0 + name: Oświetlenie BW1 + - entity: switch.ibsystem_rs0_id35_rs0_id35_output_do_1 + name: Oświetlenie BW2 + - entity: switch.ibsystem_rs0_id35_rs0_id35_output_do_2 + name: Oświetlenie G1 + - entity: switch.ibsystem_rs0_id35_rs0_id35_output_do_3 + name: Oświetlenie G2 led nad szafami i koło lustra + - type: entities + title: Sypialnia (ID36) + entities: + - entity: switch.ibsystem_rs0_id36_rs0_id36_output_do_0 + name: Oświetlenie R1 główne + - entity: switch.ibsystem_rs0_id36_rs0_id36_output_do_1 + name: Oświetlenie R2 nakastlik P + - entity: switch.ibsystem_rs0_id36_rs0_id36_output_do_2 + name: Oświetlenie R3 nakastlik L + - entity: switch.ibsystem_rs0_id36_rs0_id36_output_do_3 + name: Oświetlenie R4 led na suficie + - type: entities + title: Łazienka (ID37) + entities: + - entity: switch.ibsystem_rs0_id37_rs0_id37_output_do_0 + name: Oświetlenie L1 + - entity: switch.ibsystem_rs0_id37_rs0_id37_output_do_1 + name: Oświetlenie L2 + - entity: switch.ibsystem_rs0_id37_rs0_id37_output_do_2 + name: Oświetlenie L3 + - entity: switch.ibsystem_rs0_id37_rs0_id37_output_do_3 + name: Oświetlenie L4 + - type: entities + title: Łazienka/WC (ID38) + entities: + - entity: switch.ibsystem_rs0_id38_rs0_id38_output_do_0 + name: Oświetlenie L5 + - entity: switch.ibsystem_rs0_id38_rs0_id38_output_do_1 + name: Oświetlenie L6 + - entity: switch.ibsystem_rs0_id38_rs0_id38_output_do_2 + name: Oświetlenie W1 + - entity: switch.ibsystem_rs0_id38_rs0_id38_output_do_3 + name: Oświetlenie W2 + - type: entities + title: Basia (ID39) + entities: + - entity: switch.ibsystem_rs0_id39_rs0_id39_output_do_0 + name: Oświetlenie D1 główne + - entity: switch.ibsystem_rs0_id39_rs0_id39_output_do_1 + name: Oświetlenie D2 nad biurkiem + - entity: switch.ibsystem_rs0_id39_rs0_id39_output_do_2 + name: Oświetlenie D3 chmurka + - entity: switch.ibsystem_rs0_id39_rs0_id39_output_do_3 + name: Oświetlenie D4 łóżko + - type: entities + title: Biuro A (ID40) + entities: + - entity: switch.ibsystem_rs0_id40_rs0_id40_output_do_0 + name: Oświetlenie B1 główne + - entity: switch.ibsystem_rs0_id40_rs0_id40_output_do_1 + name: Oświetlenie B2 nad biurkiem + - entity: switch.ibsystem_rs0_id40_rs0_id40_output_do_2 + name: Oświetlenie B3 biurko lampa + - entity: switch.ibsystem_rs0_id40_rs0_id40_output_do_3 + name: Oświetlenie B4 dla ledów + - type: entities + title: WC/Poddasze (ID41) + entities: + - entity: switch.ibsystem_rs0_id41_rs0_id41_output_do_0 + name: Oświetlenie W2 góra halogeny + - entity: switch.ibsystem_rs0_id41_rs0_id41_output_do_1 + name: Oświetlenie W3 halogen prysznic + led + - entity: switch.ibsystem_rs0_id41_rs0_id41_output_do_2 + name: Oświetlenie P1 Poddasze 1 + - entity: switch.ibsystem_rs0_id41_rs0_id41_output_do_3 + name: Oświetlenie P2 Poddasze 2 diff --git a/ibsystem/sync_names.py b/ibsystem/sync_names.py index b759794..adf375c 100755 --- a/ibsystem/sync_names.py +++ b/ibsystem/sync_names.py @@ -1,96 +1,205 @@ #!/usr/bin/env python3 """ -Synchronizuje friendly_names w ibsystem2mqtt.yaml z dokumentacji projektu. +Synchronizuje friendly_names i dashboard IBSystem z dokumentacji projektu. Źródło: /smart-home/proj-ib-lighting-rs485-zarki.yaml """ -import yaml, re, sys, os, subprocess, shutil +import yaml, re, sys, os, subprocess, shutil, io from datetime import datetime +import copy -PROJECT_YAML = "/smart-home/proj-ib-lighting-rs485-zarki.yaml" -CONFIG_YAML = "/ibsystem/ibsystem2mqtt.yaml" -MQTT_HOST = "192.168.50.151" -MQTT_USER = "mqtt" -MQTT_PASS = "mqtt123" +PROJECT_YAML = "/smart-home/proj-ib-lighting-rs485-zarki.yaml" +CONFIG_YAML = "/ibsystem/ibsystem2mqtt.yaml" +DASHBOARD_LOCAL = "/ibsystem/ibsystem_dashboard.yaml" +DASHBOARD_HA = "root@192.168.50.151:/config/dashboards/ibsystem_dashboard.yaml" +HA_SSH_PORT = 2222 +MQTT_HOST = "192.168.50.151" +MQTT_USER = "mqtt" +MQTT_PASS = "mqtt123" + +# Zakresy ID sterowników oświetlenia (pomijamy ogrzewanie itp.) +LIGHTING_ID_MIN = 30 +LIGHTING_ID_MAX = 99 + +def log(msg): print(f"[{datetime.now():%H:%M:%S}] {msg}") def device_id_to_rs_id(device_id): - """'rs.0.id.35' → ('0', '35')""" m = re.match(r"rs\.(\d+)\.id\.(\d+)", device_id) return (m.group(1), m.group(2)) if m else (None, None) def io_key(rs, dev_id, io_id): - """'output.do.0' → 'rs0_id35_output_do_0'""" safe = re.sub(r"[^a-zA-Z0-9]+", "_", io_id).strip("_") return f"rs{rs}_id{dev_id}_{safe}" +def entity_id(rs, dev_id, io_id): + safe = re.sub(r"[^a-zA-Z0-9]+", "_", io_id).strip("_") + return f"switch.ibsystem_rs{rs}_id{dev_id}_rs{rs}_id{dev_id}_{safe}" + def parse_project_yaml(path): with open(path) as f: data = yaml.safe_load(f) - devices = data["project"]["hardware_specification"]["devices"] - names = {} - + result = [] for dev in devices: device_id = dev.get("device_id", "") location = dev.get("location", "").strip() rs, dev_id = device_id_to_rs_id(device_id) if not rs: continue - - # Nazwa urządzenia = lokalizacja + ID - if location: - names[f"rs{rs}_id{dev_id}"] = f"{location} - ID{dev_id}" - - # Nazwy wyjść DO (sterowalne) + io_list = [] for io in dev.get("io", []): io_id = io.get("io_id", "") desc = io.get("description", "").strip() status = io.get("status", "ok") - - # Tylko output.do.* z niepustym opisem i status != nc - if io_id.startswith("output.do.") and desc and status != "nc": - # Pomiń generyczne opisy - if not desc.startswith("Opcjonalne"): - names[io_key(rs, dev_id, io_id)] = desc - + if io_id.startswith("output.do.") and desc and status != "nc" \ + and not desc.startswith("Opcjonalne"): + io_list.append({"io_id": io_id, "description": desc}) + result.append({ + "device_id": device_id, + "rs": rs, + "dev_id": dev_id, + "location": location, + "io": io_list, + }) + return result + +def build_friendly_names(devices): + names = {} + for dev in devices: + rs, dev_id, location = dev["rs"], dev["dev_id"], dev["location"] + if location: + names[f"rs{rs}_id{dev_id}"] = f"{location} - ID{dev_id}" + for io in dev["io"]: + names[io_key(rs, dev_id, io["io_id"])] = io["description"] return names -def update_config(config_path, new_names, dry_run=False): +def build_dashboard(devices): + # Tylko sterowniki oświetlenia (ID30+) + light_devs = [d for d in devices + if d["io"] and LIGHTING_ID_MIN <= int(d["dev_id"]) <= LIGHTING_ID_MAX] + + # Lista wszystkich switch entity_id dla WSZYSTKIE ON/OFF + all_switches = [] + for dev in light_devs: + rs, dev_id = dev["rs"], dev["dev_id"] + for io in dev["io"]: + all_switches.append(entity_id(rs, dev_id, io["io_id"])) + + # Karty per urządzenie + device_cards = [] + for dev in light_devs: + rs, dev_id, location = dev["rs"], dev["dev_id"], dev["location"] + title = f"{location} (ID{dev_id})" if location else f"ID{dev_id}" + entities = [] + for io in dev["io"]: + entities.append({ + "entity": entity_id(rs, dev_id, io["io_id"]), + "name": io["description"], + }) + device_cards.append({ + "type": "entities", + "title": title, + "entities": entities, + }) + + dashboard = { + "title": "IBSystem Sterowniki", + "views": [{ + "title": "Wszystkie sterowniki", + "path": "all", + "icon": "mdi:lightbulb-group", + "cards": [ + { + "type": "horizontal-stack", + "cards": [ + { + "type": "button", + "name": "WSZYSTKIE ON", + "icon": "mdi:lightbulb-group", + "icon_height": "40px", + "tap_action": { + "action": "call-service", + "service": "switch.turn_on", + "target": {"entity_id": copy.deepcopy(all_switches)}, + }, + }, + { + "type": "button", + "name": "WSZYSTKIE OFF", + "icon": "mdi:lightbulb-group-off", + "icon_height": "40px", + "tap_action": { + "action": "call-service", + "service": "switch.turn_off", + "target": {"entity_id": copy.deepcopy(all_switches)}, + }, + }, + ], + }, + ] + device_cards, + }], + } + return dashboard + +def update_friendly_names(config_path, new_names, dry_run=False): with open(config_path) as f: config = yaml.safe_load(f) - old_names = config.get("friendly_names") or {} - - # Oblicz diff - changed = {} - all_keys = set(old_names) | set(new_names) - for k in sorted(all_keys): - o, n = old_names.get(k), new_names.get(k) - if o != n: - changed[k] = (o, n) - + changed = {k for k in (set(old_names) | set(new_names)) if old_names.get(k) != new_names.get(k)} if not changed: - print(f"[{datetime.now():%H:%M:%S}] Brak zmian.") + log("friendly_names: bez zmian.") return False - - print(f"[{datetime.now():%H:%M:%S}] Zmiany ({len(changed)}):") - for k, (o, n) in changed.items(): - print(f" {k}: {o!r} → {n!r}") - + log(f"friendly_names: {len(changed)} zmian.") if dry_run: - print(" (dry-run, nie zapisuję)") + for k in sorted(changed): + print(f" {k}: {old_names.get(k)!r} → {new_names.get(k)!r}") return True - - # Zapisz backup shutil.copy(config_path, config_path + ".bak") config["friendly_names"] = new_names with open(config_path, "w") as f: yaml.dump(config, f, allow_unicode=True, default_flow_style=False, sort_keys=False) - print(f" Zapisano {config_path}") + log(f" Zapisano {config_path}") + return True + +def update_dashboard(dashboard, local_path, ha_path, dry_run=False): + # Serializuj do YAML + buf = io.StringIO() + yaml.dump(dashboard, buf, allow_unicode=True, default_flow_style=False, + sort_keys=False, width=200) + new_content = buf.getvalue() + + # Sprawdź czy się zmieniło + try: + with open(local_path) as f: + old_content = f.read() + if old_content == new_content: + log("dashboard: bez zmian.") + return False + except FileNotFoundError: + pass + + log("dashboard: aktualizuję.") + if dry_run: + log(" (dry-run, nie zapisuję)") + return True + + with open(local_path, "w") as f: + f.write(new_content) + + # Kopiuj na HA przez SSH + host, remote_path = ha_path.split(":", 1) + result = subprocess.run( + ["scp", "-P", str(HA_SSH_PORT), "-o", "StrictHostKeyChecking=no", + local_path, ha_path], + capture_output=True, text=True + ) + if result.returncode != 0: + log(f" BŁĄD SCP: {result.stderr.strip()}") + else: + log(f" Skopiowano → {ha_path}") return True def reload_ibsystem(): - """Wyczyść retained MQTT discovery i zrestartuj serwis.""" - print("Czyszczę MQTT discovery cache...") + log("Czyszczę MQTT discovery cache...") os.system( f"timeout 5 mosquitto_sub -h {MQTT_HOST} -u {MQTT_USER} -P {MQTT_PASS} " f"-t 'homeassistant/#' --retained-only -v 2>/dev/null | " @@ -98,26 +207,30 @@ f"while read t; do mosquitto_pub -h {MQTT_HOST} -u {MQTT_USER} -P {MQTT_PASS} " f"-t \"$t\" -n -r; done" ) - print("Restartuję ibsystem2mqtt...") + log("Restartuję ibsystem2mqtt...") subprocess.run(["systemctl", "restart", "ibsystem2mqtt"], check=True) - print("Gotowe.") def main(): dry_run = "--dry-run" in sys.argv - print(f"[{datetime.now():%H:%M:%S}] Parsing {PROJECT_YAML}...") - + log(f"Parsing {PROJECT_YAML}...") + try: - names = parse_project_yaml(PROJECT_YAML) + devices = parse_project_yaml(PROJECT_YAML) except Exception as e: - print(f"BŁĄD parsowania YAML: {e}") + log(f"BŁĄD parsowania: {e}") sys.exit(1) - - print(f" Znaleziono {len(names)} wpisów.") - - changed = update_config(CONFIG_YAML, names, dry_run) - - if changed and not dry_run: + + log(f" {len(devices)} urządzeń, " + f"{sum(len(d['io']) for d in devices)} wyjść DO.") + + names_changed = update_friendly_names(CONFIG_YAML, build_friendly_names(devices), dry_run) + dashboard_changed = update_dashboard(build_dashboard(devices), DASHBOARD_LOCAL, + DASHBOARD_HA, dry_run) + + if (names_changed or dashboard_changed) and not dry_run: reload_ibsystem() + else: + log("Brak zmian wymagających restartu.") if __name__ == "__main__": main()