Utworzenie Encji i aktualizacja przez API

Cześć, jako że nie mogłem znaleźć odpowiedniej integracji z SolarmanSmart , napisałem sobie kawałek kodu (PHP) który pobiera poprzez ich Api dane. Teraz chciałbym tak jak miałem w DOMOTICZ, uworzyć “pustą” encje i aktualizować ją za pomocą API HA. Samo logowanie do HA poprzez API już zrobiłem.
Utknąłem trochę na samej definicji encji. Doczytałem że służy do tego integracja TEMPLATE, ale czy mogę utworzyć encje np Test która ma wartość 0 i zmieniam jest stan za pomocą API np na 1, 2, 3 itp ?

W configuration.yaml

sensor:
  - platform: template
    sensors:
      test_sensor:
        value_template: "{{ states('sensor.test')| float(0) }}" 
        friendly_name: "Test Sensor"
        unit_of_measurement: "none"

lub
W sensor.yaml

  - platform: template
    sensors:    
      test_sensor:
        friendly_name: "Test Sensor"
        value_template: "{{ states('sensor.test')| float(0) }}"                  
        unique_id: test_sensor2

Edycja:
lub
W nowym, poprawnym formacie

Wymaga utworzenia pliku z nawą template.yaml w folderze config i dodatkowego wpisu w configuration.yaml

template: !include template.yaml 

W template.yaml

- sensor:
    - name: "Test Sensor2"
      state:  "{{ states('sensor.test2')| float(0) }}" 
      unit_of_measurement: "none"
      unique_id: sensor.test


Mam nadzieje, że oto Ci chodziło :thinking:
/

Dziękuje, o to mi dokładnie chodziło
Pozdrawiam

Tego zapisu już bym nie sugerował, w dokumentacji jest to wyraźnie zaznaczone - This format still works but is no longer recommended. Można to zinterpretować, że nadal działa, nie jest rekomendowany a wg mnie z czasem zostanie usunięty ze wsparcia :wink:

1 polubienie

Ok, to co innego proponuesz ?

Juz zrobiłęm i działa, ale skoro tak jak piszesz może mi to się wywalic…

Użyj właściwego formatu Template - Home Assistant czyli:

# Example configuration.yaml entry with two sections
template:
  # Define state-based template entities
  - sensor:
      ...
  - binary_sensor:
      ...

  # Define trigger-based template entities
  - trigger:
      ...
    sensor:
      ...
    binary_sensor:
      ...

OK, i muszę robić jakiś troger, mimo że chcę tylko utworzyć sam sensor ?
Sorry że truje

nic nie musisz, tworzysz to co jest ci potrzebne, @macek pokazał Tobie przykłady. Ogólnie zmianie ulega format, patrz podlinkowana dokumentacja, używasz nowego template.

Jasne, dziekuje wszystko rozumiem.

Pozdrawiam

1 polubienie

czytam, uczę się :slight_smile: i mam pytanie :

jeśli chce wymieniać pewne informacja via api ( esphome <-> ha ) to co lepiej używać ?

  1. template sensor.test opisany powyżej
  2. czy na przykład helper input_number.test

czy obiema metodami uzyskam to samo ? czyli wartość będę mógł zmieniać w urzadzeniu esphome a potem korzystac z niej w HA ?

czy może inny prostszy sposób ?
jakie sa plusy i minusy obu metod ?

dzięki za pomoc
Adam

via API? Nic nie trzeba “robić”, wszystko jest gotowe i działające, encje z HA odczytujesz w ESPHome i w nim ich używasz - Home Assistant Sensor — ESPHome, Home Assistant Binary Sensor — ESPHome, itd

Tak to właśnie wszystko zostało zaprojektowane , prosty przykład
Automat schodowy (przekaźnik czasowy) z przyciskami i czujnikiem ruchu - #3 przez macek

1 polubienie

zaczynam powoli to rozumieć :slight_smile:
krótko podsumowując: (pisząc skrótami)

  • jeśli zdefiniuje encje w esphome to jest ona widoczna w HA
  • jeśli zdefiniuje encje w HA ( np poprzez template ) to aby ją widzieć w esphome używam sensor: - platform: homeassistant … i jeśli ustawię internal: false to zmieniając wartość tego sensora w esphome - równocześnie zmieniam wartość tej encji w HA …
    … dobrze myślę ?

A czy takie coś też zadziała ? kroki :
1: definiuje encje na urządzeniu esphome-1

number:
  - platform: template
    name: "Template number"
    id: number_id  ...
  1. w HA będę widział to jako “Template number”
  2. wartość mogę odczytać i zmieniać w HA poprzez modyfikację encji “Template number”
  3. na innym urządzeniu esphome-2 podłączę sobię ta encję poprzez:
number:
  - platform: homeassistant
    name: "template number 2"
    entity_id: sensor.Template_number
    internal: false
  1. modyfikując wartość “template number 2” na urządzeniu esphome-2 → powoduję zmianę wartości “Template number” w HA i dalej zmianę wartości “Template number” na urządzeniu esphome-1

… czy taki ciąg myślowy jest poprawny ?

Ufff … trudno to ogarnąć :slight_smile:

Takiej funkcjonalnosci - definicji number z platform: homeassistant nie ma w ESPHome czyli to będzie błąd w składni yaml w ESPHome.
Próbujesz “coś” osiągnąć nie znając “ograniczeń” i możliwosci rozwiązania ESPHome, lepiej podziel się pomysłem wtedy prościej będzie go zrealizować, pamiętaj: punt widzenia zależy od punktu siedzenia :slight_smile:.

ok … generalnie na razie mam pomysł w głowie ale nie czas i miejsce o tym tutaj pisać. Tutaj chcę bardzie teoretycznie o temacie wymiany informacji pomiędzy urzadzeniami esphome i HA.

czyli wracając do mojego punktu 4 ( odczyt zmiennej na drugim urządzeniu esphome-2 ) - to czy w takim razie taka forma definicji na esphome-2 będzie poprawna ?

sensor:
  - platform: homeassistant
    name: "Temperature Sensor From Home Assistant - from esphom1"
    entity_id: sensor.Template_number
    internal: false

to wtedy ta zmienna będzie widoczna w esphome-2 ?
bo w takiej wersji to na esphome-1 jest to number, w HA to jest encja urządzenia esphome-1, a na urządzeniu esphome-2 to jest sensor o nazwie “Temperature Sensor From Home Assistant - from esphom1” … który bedzie ? widoczny w HA jako encja urządzenia esphome-2 ?

czy może powinienem od początku zachować spójność i na esphome-1 zdefiniować sensor - ten będzie widoczny w HA - i ten zadeklarować w esphome-2 poprzez sensor / platform: homeassistant ?

Może trochę zawile to opisuję ale dla osób które dopiero wchodzą w świat HA ten problemy niestety nie sa nigdzie dobrze opisane. Nie znalazłem takiego przewodnika - wprowadzenia w świat HA. jest dużo instrukcji - opisów poszczeólnych funkcji / platform itp …ale nigdzie nie ma podstawowych informacji jak do tego sie zabrać :frowning:
Na szczęście czytając takie fora powoli uczę sie i zaczynam rozmumieć logikę tego ekosystemu HA .

PS: docelowo to są rozważania dotyczące tematu który rozwijam w tym wątku: https://forum.arturhome.pl/t/logika-sterowania-kilkoma-termostatami-esphome-w-ha/8281

Nie no wcale… :wink: @macek ma rację, podaj swój konkretny przykład i na nim nauczymy Cię jak łączyć informacje z przewodników. Jak się zrozumie jak działa HA, to otwierają się możliwości ograniczone jedynie zbiorową wiedzą open source i Twoją wyobraźnią. Ba, może nawet pokażesz nam coś o czym nikt nie wie, że talk można. HA jako platforma spinająca przeróżne techniki i protokoły komunikacji ma zawsze kilka możliwych rozwiązań dla tych samych celów. Może okazać się, że to co próbujesz osiągnąć łatwiej i szybciej będzie do zrobienia niekoniecznie z ESPHome.

P.S.
Zapomniałem dodać, przewodniki szybko się de aktualizują, bo HA rozwija się bardzo szybko.

to pomysł docelowy
tutaj zacząłem rozważać problem wymiany informacji pomiędzy urządzeniami esphome a centralką HA. … tak zeby pewna informacja była widoczna nie tylko pomiędzy esphome ↔ HA … ale takze pomiedzy esphome-1 ↔ esphome-2

PS: pod nazwą esphome mam na myśli urzadzenie z wgranym softem esphome . na przykład sonoff basic, wemos D1, Xiao nrF52 lub Lolin D32 … akurat na takich się bawię

Musisz nam podać swoje założenia, czyli bez konkretnej wiedzy jaka informacja ma być widoczna i dlaczego, będzie ciężko doradzić.
Zakładam, że masz swoje doświadczenia sprzętowe i znasz ich ograniczenia oraz możliwości. Dlatego sam powinieneś zdecydować na jaką logikę się zdecydować. Centralną w HA czy lokalnie w urządzeniu wykonawczym. Nie mamy żadnej wiedzy co ma dokładnie robić moduł ESP. Mierzyć temperaturę (to oczywiste), sterować wyjściem/przekaźnikiem itd. Jak dla mnie nadal tajemniczo…

P.S.
Dlaczego ESPHome? Może masz kompetencje do programowania w C++, wówczas nie było pytania. Możesz zaszywać własne automatyzacje w kodzie ESPHome.

A może masz doświadczenie z ESPEasy, wówczas można różne reguły i skrypty zaszywać w Tasmota:

Dla Tasmota jest też funkcjonalność termostatu.

Jako, że komunikuje się po MQTT, to można w tym protokole robić komunikację między różnymi urządzeniami.

Kolega @RobinI30 eksperymentował sobie z KNX na Tasmota:

pozostane jednak przy esphome + HA :slight_smile: …za dużo pomysłów za dużo bałaganu w głowie.
The ESPHome native API has many advantages over using MQTT for communication with Home Automation software

a wracając do dyskusji o wymianie danych pomiedzy urządzeniami esphome <-> HA <-> esphome

  • znalazłem kolejne rozwiązanie o którym nie wspominaliśmy wyżej … native API. przecież tutaj też jest opisane jak wymieniać dane :slight_smile:

https://esphome.io/components/api.html

To nie jest kolejne rozwiązanie, tylko API o którym była mowa od początku…

… dla mnie to kolejne rozwiązanie problemu.
w postach powyżej pokazywano składnie np -

sensor:
  - platform: homeassistant
    name: "Temperature Sensor From Home Assistant - from esphom1"
    entity_id: sensor.Template_number
    internal: false

takiej składni / przykładu nie ma w opisie komponentu API na stronie [Native API Component — ESPHome] … stąd moje zagubienie

domyślam się, że ciągle obracamy sie wokół komponent homeassistant ale raz jest to opisywane jako platforma homeassistant a raz jako wywołania funkcji komponentu API
Generalnie dla mnie początkującego jest to mentalny bałagan - trudno to ogarnąć :slight_smile:
Ale trzeba sie uczyć ! :slight_smile: