Skocz do zawartości

Home Assistant + ESPHome - własne zabawki czyli custom components


Pomocna odpowiedź

@Woszu w sumie ten temat gdzieś u mnie przepadł - miałem plan dodać to jako sterownik do wyświetlacza spektrum ale nie skończyłem wyświetlacza więc nie było okazji do kontynuacji.

Dodanie większej liczby własnych komponentów jest w tym miejscu:

sensor:
- platform: custom
  lambda: |-
    auto fps_meter = new FPSCounter();
    App.register_component(fps_meter);
    return {fps_meter};

jest to podobne do klas z C++, a przez dziedziczenie po Component i Sensor masz wystawione metody do łączenia z resztą.

Link do komentarza
Share on other sites

Zrobiłem tak:

	sensor:
	- platform: custom
	  lambda: |-
	    auto my_sensor = new MyCustomSensor();
	    App.register_component(my_sensor);
	    return {my_sensor->water_sensor, my_sensor->id_sensor};
	 
	  sensors:
	  - name: "Stan licznika wody"
	    unit_of_measurement: l
	    accuracy_decimals: 0
	  - name: "Id licznika wody"
	    accuracy_decimals: 0
	

 

a w pliku .h:

	class MyCustomSensor : public Component {
 public:
  Sensor *water_sensor = new Sensor();                            
  Sensor *id_sensor = new Sensor();
	//............
	{
	

 

Kompilacja przeszła, później zobaczę czy działa 🙂

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Cześć.

Walczę jeszcze z tym custom sensor component. W sumie z sukcesami, ale....

Prosty przykład przepisania wartości MeterID i jej opublikowanie w pliku h:

uint32_t MeterID = 1095753644;

class MyCustomSensor : public Component {
 public:                          
  Sensor *id_sensor = new Sensor();                              
  
void loop() { 
        id_sensor->publish_state(MeterID);
    }

 

natomiast w pliku yaml standardowo:

- platform: custom
  lambda: |-
    auto my_sensor = new MyCustomSensor();
    App.register_component(my_sensor);
    return {my_sensor->id_sensor}; 
  sensors:
  - name: "Meter Id"
    accuracy_decimals: 0

 

I coś dziwnego się dzieje, bo nie przechodzi ta wartość 1095753644 poprawnie. W esphome dostaję 1095753600.

Jakieś ograniczenia są w tym publish_state(), że mi obcina wartość?

Jak przesyłam mniejsze wartości (np. 10957536), to wtedy przechodzi ok....

Edytowano przez Woszu
Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.