Czujnik poziomu cieczy mojdomek.eu i jego integracja za pomocą rest

//mod-edit: wydzielono z wątku


Hej! Podpowie mi ktoś jak wydobyć dane z pliku json by zintegrować ten czujnik z HA? Męczę się od dwóch dni a pewnie wystarczy jakaś prosta składnia w configuration.yaml

Sam sobie odpowiem, może komuś się przyda:

sensor:
  - platform: rest
    method: GET
    resource_template: http://mojdomek.euAPIzeSTRONYwww
    value_template: "{{ value_json.locations[0].measurement.percent }}"
    name: 'Poziom szamba'
    scan_interval: 1800
    unit_of_measurement: '%'
  
1 polubienie

Cześć.
Jak wyciągnąć wartość z JSON template aby ją wyświetlić>

Pomocny przykład masz tu Jakość powietrza - #2 przez macek

Czesc,
Podpowidz krok po kroku jak to zrobiles.
Tez chcialem zintegrowac mojdomek z HA.
dzieki za pomoc

Dzieki udalo sie zrobic. Macie pomysl jak wyciagnac informacje o dacie zapelnienia?

Przykładowa konfiguracja tworząca encje dla wszystkich danych z czujnika:

rest:
  - resource: "http://mojdomek.eu/...." #link do API ze strony 
    scan_interval: 1800 #interwał odpytywania serwera (w sekundach)

    sensor:
      - name: "mojdomek_Poziom_%"
        unique_id: mojdomek_eu_deviceid_percent
        value_template: "{{ value_json.locations[0].measurement.percent }}"
        unit_of_measurement: "%"

      - name: "mojdomek_Poziom_cm"
        unique_id: mojdomek_eu_deviceid_depth_cm
        value_template: "{{ value_json.locations[0].measurement.cm }}"
        unit_of_measurement: "cm"

      - name: "mojdomek_Temperatura"
        unique_id: mojdomek_eu_deviceid_temperature
        value_template: "{{ value_json.locations[0].measurement.temperature }}"
        device_class: temperature
        unit_of_measurement: "°C"

      - name: "mojdomek_Napięcie"
        unique_id: mojdomek_eu_deviceid_voltage
        value_template: "{{ value_json.locations[0].measurement.volts }}"
        device_class: voltage
        unit_of_measurement: "V"
        
      - name: "mojdomek_Stan_baterii"
        unique_id: mojdomek_eu_deviceid_battery
        value_template: "{{ value_json.locations[0].measurement.batt_level }}"
        device_class: battery
        unit_of_measurement: "%"

      - name: "mojdomek_Rssi"
        unique_id: mojdomek_eu_deviceid_rssi
        value_template: "{{ value_json.locations[0].measurement.rssi }}"
        device_class: signal_strength
        unit_of_measurement: "dB"

      - name: "mojdomek_Ostatni_pomiar"
        unique_id: mojdomek_eu_deviceid_datetime
        value_template: "{{ value_json.locations[0].measurement.datatime }}"
        
      - name: "mojdomek_Następne_zapełnienie"
        unique_id: mojdomek_eu_deviceid_nextfull
        value_template: "{{ value_json.locations[0].measurement.nextfull }}"
        
      - name: "mojdomek_Ostatnie_opróżnienie"
        unique_id: mojdomek_eu_deviceid_lastempty
        value_template: "{{ value_json.locations[0].measurement.lastempty }}"

1 polubienie

A gdzie znajdę API, przeszukałem panel operatora czujnika ale nie widzę.

Po zalogowaniu się na swoje konto, w lewym menu
Wsparcie → Interfejs programowania

1 polubienie

Ja piernicze rzeczywiście , no tam ostatni akurat ominołem hehe. konfiguracje wstawiłem do configuration.yaml, zmieniłem adres ale dalej czujniki są nie widoczne status :Unknow

:Unknow encja nie istnieje
:unavailable, encja istnieje, ale nie jest dostępna

Może być kilka przyczyn:
1.
Wcześniej już istniała taka encja: w tym przypadku HA zmieni jej nazwę.
Np. mojdomek_Napięcie na mojdomek_Napięcie_2

  1. Encja istnieje i jest poprawna ale nie odbiera żadnych danych.

Przeszukaj więc Narzędzia deweloperskie -> Stany czy twoja encja nie ukrywa się pod inną nazwą, jeżeli nie to szukaj przyczyny dlaczego nie otrzymuje żadnych danych.

Możliwa złą konfiguracja sensora w YAML. Dlatego warto umieścić tu konfigurację swoich sensorów może ktoś inny zauważy błędy.

Tak są: Unknow.
Konfigurację wstawiłęm z tego tematu , i zminiełem tylko API:

Zmineiłem odczytywanie na 18 s, tylko na test myślałem,że zczyta dane.

Po pierwsze wstaw kod, a nie obrazek (obrazki są dopuszczalne, ale jako ilustracja dodatkowa), może @Adam_84 się odezwie jako jedyny użytkownik, któremu to działa i się pochwalił wstępną informacją…

Po drugie zadałem sobie trochę trudu by przepisać ten kluczowy tekst…
https://mojdomek.eu/api/api2php?ID=UUY39AKA
i pod tym linkiem otwiera się strona z błędem, więc nie jestem przekonany czy to jest właściwy adres… (może wymagane jest logowanie?, a może w ogóle link jest do bani).

Na stronie producenta nie ma żadnej dokumentacji do API (nie wiem może jest dostępna po zalogowaniu, ale są granice brawury w pomaganiu).

Jasne mój błąd z tym kopiowaniem:

rest:
  - resource: "https://mojdomek.eu/api/api2.php?id=UUY39AKA " #link do API ze strony 
    scan_interval: 18 #interwał odpytywania serwera (w sekundach)

    sensor:
      - name: "mojdomek_Poziom_%"
        unique_id: mojdomek_eu_deviceid_percent
        value_template: "{{ value_json.locations[0].measurement.percent }}"
        unit_of_measurement: "%"

      - name: "mojdomek_Poziom_cm"
        unique_id: mojdomek_eu_deviceid_depth_cm
        value_template: "{{ value_json.locations[0].measurement.cm }}"
        unit_of_measurement: "cm"

      - name: "mojdomek_Temperatura"
        unique_id: mojdomek_eu_deviceid_temperature
        value_template: "{{ value_json.locations[0].measurement.temperature }}"
        device_class: temperature
        unit_of_measurement: "°C"

      - name: "mojdomek_Napięcie"
        unique_id: mojdomek_eu_deviceid_voltage
        value_template: "{{ value_json.locations[0].measurement.volts }}"
        device_class: voltage
        unit_of_measurement: "V"
        
      - name: "mojdomek_Stan_baterii"
        unique_id: mojdomek_eu_deviceid_battery
        value_template: "{{ value_json.locations[0].measurement.batt_level }}"
        device_class: battery
        unit_of_measurement: "%"

      - name: "mojdomek_Rssi"
        unique_id: mojdomek_eu_deviceid_rssi
        value_template: "{{ value_json.locations[0].measurement.rssi }}"
        device_class: signal_strength
        unit_of_measurement: "dB"

      - name: "mojdomek_Ostatni_pomiar"
        unique_id: mojdomek_eu_deviceid_datetime
        value_template: "{{ value_json.locations[0].measurement.datatime }}"
        
      - name: "mojdomek_Następne_zapełnienie"
        unique_id: mojdomek_eu_deviceid_nextfull
        value_template: "{{ value_json.locations[0].measurement.nextfull }}"
        
      - name: "mojdomek_Ostatnie_opróżnienie"
        unique_id: mojdomek_eu_deviceid_lastempty
        value_template: "{{ value_json.locations[0].measurement.lastempty }}"

Możesz mieć błąd bo dopiero kilka dni temu postawiłem HA na nowo po 2 latach. Nie mam skonfigurowanego Nabu Casa jeszcze. Ale sam czujnik podłączony jest do tego samego routera, jak ja wrzucam link pojawia mi się kod:
Oryginalny tekst zastąpiłem gwiazdkami ja więc to nie żaden błąd.

{
	"id":"*****************",
	"login":"**************",
	"firstname":"Tomasz",
	"lastname":"H",
	"email":"********************",
	"active":true,
	"created":"2024-01-21 13:32:46",
	"address":{
		"address":"",
		"town":"",
		"postalcode":"",
		"country":""
		},
	"locations":[
		{
		"id":"****************",
		"name":"********************",
		"created":"2024-01-21 13:32:46",
		"max":220,
		"alarm":160,
		"adc1":117487,
		"adc2":386266,
		"cm1":9,
		"cm2":118,
		"direction":"growth",
		"active":true,
		"tanktype":1,
		"mainboard":"SZ04-002",
		"software":"11.0",
		"address":{
			"address":"******************",
			"town":"**************",
			"postalcode":"55-095",
			"country":"Polska"
			},
		"measurement":{
			"percent":30,
			"cm":48,
			"temperature":16.4,
			"volts":5.6,
			"batt_level":80.2,
			"rssi":76,
			"nextfull":"2025-05-13 07:49:09",
			"lastempty":"2024-08-01 15:07:15",
			"datatime":"2024-10-22 19:30:42"
			}
		}
	]
}

Kod ten jest skopiowany właśnie ze strony po zalogowaniu się do czujnika:

Na stronie mojdomek.eu po zalogowaniu jest zakładka ‘Interfejs programowania’ - są tam wszystkie potrzebne dane łącznie z ID które trzeba wklepać w sensors.yaml

Tu podaję przykład jak to mam dodane

  - platform: rest
     method: GET
     resource_template: http://mojdomek.eu/api/api2.php?id=TUTAJ_ID
     value_template: "{{ value_json.locations[0].measurement.percent }}"
     name: 'Poziom szamba'
     scan_interval: 1800
     unit_of_measurement: '%'
   
   - platform: rest
     method: GET
     resource_template: http://mojdomek.eu/api/api2.php?id=TUTAJ_ID
     value_template: "{{ value_json.locations[0].measurement.batt_level }}"
     name: 'Stan baterii'
     scan_interval: 1800
     unit_of_measurement: '%'
     
   - platform: rest
     method: GET
     resource_template: http://mojdomek.eu/api/api2.php?id=TUTAJ_ID
     value_template: "{{ value_json.locations[0].measurement.cm }}"
     name: 'Poziom szamba w cm'
     scan_interval: 1800
     unit_of_measurement: 'cm'
   
   - platform: rest
     method: GET
     resource_template: http://mojdomek.eu/api/api2.php?id=TUTAJ_ID
     value_template: "{{ value_json.locations[0].measurement.nextfull }}"
     name: 'Następne opróżnienie'
     scan_interval: 1800
 
   - platform: rest
     method: GET
     resource_template: http://mojdomek.eu/api/api2.php?id=TUTAJ_ID
     value_template: "{{ value_json.locations[0].measurement.lastempty }}"
     name: 'Ostatnie opróżnienie'
     scan_interval: 1800

Zrzut ekranu 2024-10-22 202343

2 polubienia

@HellboyPL @Adam_84