SmartMyHome - taki mój przykład - inspiracja dla innych Dashboard

cała zabawa z tymi opcjami opiera się o custom:button-card i jego właściwości
poniżej przykład zmiany stylu dla wartości zmiennej ON

state:
  - value: 'on'
    styles:
      card:
        - box-shadow: 0 0 0.95rem 0.2rem var(--button-card-light-color)
        - border: solid 3px var(--button-card-light-color)
        - transition: all 1s ease
        - icon-color: red

Proszę o informacje w jaki sposób uzyskuje się ten boczny pionowy pasek po lewej stronie czy to coś z hucs

to jest Slider-card linki poniżej, można tam różne opcje dodawać, ja wrzuciłem odnośniki do innych kard i template jako podstawowe informacje :slight_smile:

jak coś daj znać wrzucę ten kawałek kodu.

Ja bym bardzo poprosił :slight_smile: .

tutaj dokładnie moja konfiguracja - możecie śmiało przerabiać pod swoje encje i potrzeby:)

wklejamy do yaml bezpośrednio pod linijkę title:

title: Nasz dom
sidebar:
  digitalClock: true
  clock: false
  date: true
  dateFormat: dddd DD.MM.YYYY
  hideTopMenu: false
  width:
    mobile: 0
    tablet: 5
    desktop: 15
  style: |
    :host {
        --sidebar-background: transparent!important;
        --sidebar-text-color: #B4B7B7;
        --face-color: #FFF;
        --face-border-color: #FFF;
        --clock-hands-color: #000;
        --clock-seconds-hand-color: #FF4B3E;
        --clock-middle-background: #FFF;
        --clock-middle-border: #000;
    }

    h1.digitalClock {
        color: #B4B7B7;
        font-weight: 350;
        font-size: 80px!important;
        text-align: center;
        padding-top: 2px;
    }

    .date {
        color: #B4B7B7;
        font-size: 30px;
        text-align: center;
        font-weight: 100;
        line-height: 35px;
        padding-top: 2px;
    }

    .template li {
        font-size: 5px;
        padding-left: 10px;
        padding-top: 2px;
    }
  template: >
    <li>
      {% if now().hour  < 5 %} Dzień dobry! {{'\U0001F634'}}
      {% elif now().hour < 12 %} Dzień dobry! {{'\u2615\uFE0F'}}
      {% elif now().hour < 18 %} Dzień dobry! {{'\U0001F44B\U0001F3FB'}}
      {% else %} Dobry wieczór! {{'\U0001F44B\U0001F3FB'}}{% endif %}
    </li>

    <li> </li> <li>Temperatura {{ states('sensor.temp_zewnetrzna') }} °C ({{
    states('sensor.pogoda_prognoza_4') | round() }} °C)</li>


    <li>Wiatr {{ states('sensor.czujnik_wiatru') }} km/h ({{
    states('sensor.pogoda_prognoza_wiatru') | round() }} km/h)</li>

    <li> {{ states('sensor.aktualna_pogoda_weather') }} </li>

    <li>
      {% if is_state("binary_sensor.ogrzewanie_parter",  "on") %} Parter {{'\U0001f525'}}
      {% else %} {% endif %}
      
      {% if is_state("binary_sensor.ogrzewanie_pietro",  "on") %} Piętro {{'\U0001f525'}}
      {% else %}  {% endif %}
    </li>

    <li> {% if is_state("sensor.licznik_swiatel", "0") -%} {%- else -%}
      Ilość świateł: {{ states('sensor.licznik_swiatel')}}  {{'\U0001F4A1'}}
    {%- endif %}    </li>

    <li>
      {% if is_state("sensor.birch_tree_pollen_concentration", "lack") %}
      {% elif is_state("sensor.birch_tree_pollen_concentration", "very low") %} Brzoza lekko pyli! {{'\U0001F625'}}
      {% elif is_state("sensor.birch_tree_pollen_concentration", "medium") %} Średnie pylenie brzozy {{'\U0001F624'}}
      {% elif is_state("sensor.birch_tree_pollen_concentration", "high") %} Wysokie pylenie brzozy! {{'\U0001F637'}}
      {% elif is_state("sensor.birch_tree_pollen_concentration", "very high") %} Bardzo wysokie pylenie brzozy! {{'\U0001F637'}}
      {% else %} {% endif %}
    </li>
  sidebarMenu:
    - action: navigate
      navigation_path: /nasz-dom/default_view
      name: Home
      active: true
      icon: mdi:home-account
    - action: navigate
      navigation_path: /nasz-dom/parter
      name: Parter
      icon: mdi:home-floor-0
    - action: navigate
      navigation_path: /nasz-dom/pietro
      name: Piętro
      icon: mdi:home-floor-1
    - action: navigate
      navigation_path: /nasz-dom/media
      name: Multimedia
      icon: mdi:music
    - action: navigate
      navigation_path: /nasz-dom/uzycie-w-domu
      name: Użycie w domu
      icon: mdi:chart-donut
    - action: navigate
      navigation_path: /nasz-dom/kamery
      name: Kamery
      icon: mdi:cctv
  bottomCard:
    type: custom:mini-media-player
    cardOptions:
      entity: media_player.spotify_spotify
      style: |
        ha-card {
          border-radius: 12px;
          overflow: hidden !important;
          box-shadow: none !important;
          width: auto;
          height: auto;
          align: center;
        }
      hide:
        name: true
        power: true
        source: true
        volume: false
kiosk_mode:
  hide_header: true
2 polubienia

Mam pytanie, jak podszedłeś do tematu żaluzji i lamelek ? Jak obliczasz pozycje żaluzji i samych lamelek ?
Ja mam plan wykorzystać pomocnika do przechowywania pozycji lamelki, (1-7), co do otwarcia żaluzji też mogę wykorzystać pomocnika przechowującego deltę czasy góra/dół, jednak nie wiem czy to się sprawdzi.

przez to że korzystam z możliwości PLC żaluzje fasadowe sa podłączone bezpośrednio do wyjść z PLC, dodatkowo są gotowe biblioteki które po sparametryzowaniu dają mi informację własnie odnośnie pozycji żaluzji i lamelki, samo HA generalnie tylko przesyła pozycję zadaną i odczytuje odebraną z PLC.
jedyne co musiałem sparametryzować w PLC to czas przejazdu w górę oraz w dół.

Wyjaśnij początkującemu - do którego YAML to wklejamy bo tych YAMLi mam sporo. Inna sprawa, że HACS mi tej karty nie znajduje. Zainstalowałem manualnie wg opisu z Githuba ale jako karty nadal tego nie widzę.

To nie jest domyślne repozytoriom w HACS, by można było instalować automatycznie z poziomu HACS trzeba dodać w nim repo niestandardowe
https://github.com/DBuit/sidebar-card
(co jest dość istotne, a zrozumiesz to gdy autor wprowadzi jakieś zmiany, lub co gorsza jakieś zmiany nastąpią w HA i będzie trzeba zaktualizować ten komponent).
Instrukcje na większości repozytoriów są przestarzałe - po dodaniu repozytorium nie trzeba już (od wielu miesięcy) dodawać ręcznie zasobów.

UWAGA - zanim wykonasz poniższe kroki usuń swoją instalację manualną.

Edytor GUI umożliwia edycję pliku YAML będącego konfiguracją Lovelace (teraz to się nazywa po prostu “Dashboard”)

Zwróć uwagę, że linijki

kiosk_mode:
  hide_header: true

zabierają standardowe dojście do edytora GUI, więc warto by było abyś ogarniał najpierw jak grzebać sobie “pod pokładem” w konfiguracjach (jeśli muszę, robię to “na bezczelnego” w .storage ale to nie jest zalecana metoda, tam jest równoważnik naszej konfiguracji YAML w postaci pliku JSON).

1 polubienie

Bardzo Ci dziękuję za doskonałą lekcję. Tak klarownie to mi tylko fizyk w podstawówce tłumaczył jakieś 45 lat temu.

1 polubienie

Witam. Czy mógłbyś podzielić się informacją jak programujesz oświetlenie po stronie plc?
Również mam dom oparty o sterownik beckhoffa, ale twincat 2 i mam problemy ze sterowaniem przez home assistanta. Pozdrawiam

hah akurat siedze na forum to szybko odpisze :slight_smile:
z tym też miałem problem ale tylko dlatego że korzystam z gotowej funkcji obsługi świateł no i trudno jest ogarnąć sterowanie z przycisku fizycznego który wchodzi na wejście jak i ze zmiennej z HMI ale też z HA który nie jest ani tym ani tym a tylko poleceniem po ADS :slight_smile: finalnie ogarnęte tak że HA steruje zmienną która po odczytaniu w plc stymuluje wyjście - wiem że brzmi strasznie ale ciężko to opisać więc wrzucam kod z PLC (TwinCat3)

	// SALON 		
	temp:=temp+1; (*Lampa mała*)
		bLampQ[temp]:=GVL_Lamp.bLIGHT_SALON1;								(*zmienna od lampy*)
		bSomeQ[temp]:=bLIGHT_Salon_SomeON; 									(*wymagane przy pierwszej lampie*)
		button_click[temp].bSwitch:=GVL_Switches.bSWITCH_SALON1;			(*zmienna od przycisku*)
		rtrigsensor[temp](CLK:= GVL_Alarm.fbmovesensor[iSalon].bSensorNO);	(*czujnik ruchu*)
		ftrigsensor[temp](CLK:= GVL_Alarm.fbmovesensor[iSalon].bSensor_30m);(*czujnik ruchu*)
		button_click[temp](tLong:=T#500MS);
		rtrigLamp[temp].CLK	:=ftrigLamp[temp].CLK	:= bLampQ[temp];			rtrigLamp[temp]();ftrigLamp[temp]();
		rtrigFunc[temp].CLK	:=ftrigFunc[temp].CLK	:= fbLightSwitch[temp].bQ;	rtrigFunc[temp]();ftrigFunc[temp]();
		fbLightSwitch[temp].bOn		:=GVL_Lamp.bAllLightTurnON 	OR rtrigLamp[temp].Q OR (NOT bSomeQ[temp] 	AND button_click[temp].bTrig) OR button_click[temp].bLong;
		fbLightSwitch[temp].bOff	:=GVL_Lamp.bAllLightTurnOFF OR NOT GVL_Alarm.bMovmentFloor0 OR ftrigLamp[temp].Q OR (bLampQ[temp]		AND button_click[temp].bTrig) OR ftrigsensor[temp].Q;
		fbLightSwitch[temp].bToggle	:=bLIGHT_SALON1;
		IF bRelease AND rtrigFunc[temp].Q 	THEN GVL_Lamp.bLIGHT_SALON1:=TRUE;	END_IF
		IF ftrigFunc[temp].Q 				THEN GVL_Lamp.bLIGHT_SALON1:=FALSE;	END_IF

działa wykrywanie jakiejkolwiek żarówki w pomieszczeniu, automatyczne wyłączenie gdy brak ruchu itd…
w HA mam dla tego przykładu tak zmienną połączoną:

  - platform: ads
    name: salon 1 
    adsvar: GVL_Lamp.bLIGHT_SALON1
1 polubienie

Wielkie dzięki! Wieczorem będę kombinować. Pewnie jeszcze będę się odzywał .

Cześć
Jak teraz dodać custom repository do HACS ? chyba coś przegapiłem i teraz hacs wygląda trochę inaczej a po kliknięciu “niestandardowe repozytoria” w HACS nic się nie dzieje (nie ma okienka dodania nowego repo…)

Sprawdzałem właśnie… Tak całkiem normalnie, hacs integrację i kropki u góry niestandardowe repozytorium, wpisujesz adres, wybierasz kategorie i ok

No właśnie u mnie po wybraniu “niestandardowe repozytorium” nic się nie otwiera…

No i co mam Ci napisać?

Jeśli zaznaczasz opcję “zgadzam się na zagładę atomową bez ostrzeżenia”, to pewnie się na nią zgadzasz…
Mimo to informacje o planowanych atakach tego rodzaju można przeczytać z pewnym wyprzedzeniem - są one w notatkach do ataków :smiley:

A teraz tłumaczenie na język HA:
Jeśli odpalasz funkcje eksperymentalne (experimental features), to musisz się liczyć ze skutkami ubocznymi takiego ustawienia, gdybyś przeczytał notki do wydania (release notes) przed aktualizacją HACS, to nie byłbyś zdziwiony, że zostaną przeprowadzone testy nowego interfejsu wśród użytkowników funkcji eksperymentalnych - jak widać ujawniły one problem, możesz go zgłosić (jako issue).

Jakoś udało mi się zrobić blok funkcyjny , którym mogę zmieniać stany z przycisków i przez homeasistanta, ale mam problem z odczytaniem stanu światła w HA. Gdy w programie tworzę zależność, ze ma zmieniać wejście z HA na true, gdy światło się świeci to program się zapętla i światło mruga. Jak odczytujesz stany w swoim programie?
Druga sprawa. Czy działa Ci komunikacja po Ads w nowszych wersjach HA?

w zasadzie skopiowałem Ci moją konfigurację z mojego HA jak czytam LIGHT oraz kawałek kodu z PLC, więc normalnie powinno chodzić, pozostaje tylko jedna kwestia o czym w sumie zapomniałem…
mam u siebie kupioną bibliotekę BA (BuildingAutomation) gdzie wykorzystuję jej funkcję zarządzaniem światłem (a tak naprawdę przełącznikiem)

deklaracja:
fbLightSwitch 				:  FB_BA_Toggle;

pozostałe bloczki to zwykłe trigery wykrywające zbocze narastające lub opadające F_TRIG lub F_TRIG