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

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • 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.