Zapis danych pobier...
 
Powiadomienia
Wyczyść wszystko

Home Assistant Zapis danych pobieranych za pomocą komendy curl-get

20 Wpisów
2 Użytkownicy
0 Reactions
1,596 Wyświetleń
(@adrianmajdanik)
Wpisów: 13
Bywalec
Autor tematu
 

Drodzy,

szukam pomocy, aby do Home Asistant wczytać dane, które potrafię odczytać w Terminalu za pomocą poniższego polecenia:

curl -v -H "X-MitsContextKey: EDE6807341394DDAB68E259311A9C9" "https://app.melcloud.com/Mitsubishi.Wifi.Client/Device/Get?id=50936101&buildingID=462054"

Próbowałem wykorzystać do tego command_line wzorując się na jakichś innych tematach, niestety jednak nie zapisują się encje.

Czy wiecie jak to rozwiązać?

 

 
Dodane : 24/12/2022 7:33 am
Tagi tematu
(@mig41)
Wpisów: 626
Ekspert
 

W NodeRed robisz to tak:

[{"id":"9e6fc5a6725ad4c2","type":"http request","z":"8e79d07be38ec7f4","name":"Mitsubishi","method":"GET","ret":"txt","paytoqs":"ignore","url":"https://app.melcloud.com/Mitsubishi.Wifi.Client/Device/Get?id=50936101&buildingID=462054","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[{"keyType":"other","keyValue":"X-MitsContextKey","valueType":"other","valueValue":"EDE6807341394DDAB68E259311A9C9"}],"x":420,"y":360,"wires":[["c1e325c7108b7cd6","0aa2448b3f47b969"]]},{"id":"985aaec0c58abaa8","type":"inject","z":"8e79d07be38ec7f4","name":"Otwórz","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"true","payloadType":"bool","x":250,"y":360,"wires":[["9e6fc5a6725ad4c2"]]},{"id":"c1e325c7108b7cd6","type":"debug","z":"8e79d07be38ec7f4","name":"debug 2","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":720,"y":480,"wires":[]},{"id":"0aa2448b3f47b969","type":"json","z":"8e79d07be38ec7f4","name":"","property":"payload","action":"","pretty":false,"x":590,"y":360,"wires":[["c1e325c7108b7cd6"]]}]

 

Później przekazanie do HA poszczególnych wartości nie powinno być problemem

EDIT: Możesz w nodzie http request zmienić Return na JSON parsed , wtedy ten kolejny node do parsowania nie będzie potrzeby.

To pompa Ciepła Mitsubishi jest ?

 
Dodane : 24/12/2022 9:19 am
(@mig41)
Wpisów: 626
Ekspert
 

A bezpośrednio w HA jest też rest... Takie coś ściągnie te trzy podane atrybuty:

sensor:
  - platform: rest
    name: mitsubishi_test
    resource:  https://app.melcloud.com/Mitsubishi.Wifi.Client/Device/Get?id=50936101&buildingID=462054 
    scan_interval: 15
    headers:
      X-MitsContextKey: EDE6807341394DDAB68E259311A9C9
    value_template: '{{ value_json["EffectiveFlags"]["SetTemperatureZone1"]["SetTemperatureZone2"] }}'

 

A później wg tego: https://www.home-assistant.io/integrations/sensor.rest/

prz pomocy template można ściągać wartości do poszczególnych encji. 

 

 
Dodane : 24/12/2022 1:35 pm
(@adrianmajdanik)
Wpisów: 13
Bywalec
Autor tematu
 

@mig41 Tak, pompa ciepła mitsubishi. Dzięki za podpowiedź, natomiast póki co w ogóle nie wykorzystywałem Node-Red

 
Dodane : 25/12/2022 9:14 pm
(@adrianmajdanik)
Wpisów: 13
Bywalec
Autor tematu
 

@mig41 Sprawdzam w narzędziach deweloperskich i mam zwrotkę, że "value _json is undefined" 

 

obraz
 
Dodane : 25/12/2022 9:15 pm
(@mig41)
Wpisów: 626
Ekspert
 

W configuration.yaml to wpisz 

 
Dodane : 25/12/2022 11:36 pm
(@adrianmajdanik)
Wpisów: 13
Bywalec
Autor tematu
 

@mig41 Wpisywałem i nie działa.. masz jeszcze jakiś pomysł?

 
Dodane : 26/12/2022 7:38 pm
(@mig41)
Wpisów: 626
Ekspert
 

Spróbuj tak:

sensor:
   - platform: rest
    name: mitsubishi_test
    resource:   https://app.melcloud.com/Mitsubishi.Wifi.Client/Device/Get?id=50936101&buildingID=462054  
    scan_interval: 15
    headers:
      X-MitsContextKey: EDE6807341394DDAB68E259311A9C9
    value_template: '{{ value_json["EffectiveFlags"]["SetTemperatureZone1"]["SetTemperatureZone2"] }}'
    json_attributes:
      - EffectiveFlags
      - SetTemperatureZone1
      - SetTemperatureZone2
 
Dodane : 26/12/2022 8:47 pm
(@adrianmajdanik)
Wpisów: 13
Bywalec
Autor tematu
 

Zakładam, że bez tego poniżej, a przed -platform: rest musi się znaleźć sensor: 

 

Sprawdzam i dam znać.

sensor:
  - platform: dahua_vto
    name: Dahua VTO
    host: 192.168.1.28
    username: admin
    password: Taczucha2
    scan_interval: 5
 
Dodane : 26/12/2022 9:40 pm
(@adrianmajdanik)
Wpisów: 13
Bywalec
Autor tematu
 

 Wygląda na to, że działa 😉 .. .ogromne wielkie za pomoc!

obraz
 
Dodane : 26/12/2022 9:49 pm
(@adrianmajdanik)
Wpisów: 13
Bywalec
Autor tematu
 

@mig41 Jak pisałem wyżej - encje pobieram. Encja posiada atrybuty, teraz muszę ogarnąć jak je zapisać w dashboardzie. Dzięki za pomoc.

P.S. podmieniam ścieżkę resource na tą z komendy niżej i nie pobiera atrybutów. Zakładałem, że bez problemu pobierz. Coś podpowiesz?

 

curl -v --header "X-MitsContextKey: EDE6807341394DDAB68E259311A9C9" https://app.melcloud.com/Mitsubishi.Wifi.Client/User/ListDevices

obraz
 
Dodane : 26/12/2022 9:51 pm
(@mig41)
Wpisów: 626
Ekspert
 

I podejrzewam ,że dostaniesz odpowiedź , tyle ,że atrybuty musisz podmienić też na te ,które chcesz dostać.

 

 
Dodane : 26/12/2022 10:44 pm
(@adrianmajdanik)
Wpisów: 13
Bywalec
Autor tematu
 

@mig41 Podmieniam i brak odpowiedzi.

W między czasie ogarnąłem jak zamieniać atrybut na encję. Tu przykład:

sensor:
  - platform: template
    sensors:
      jakas_nazwa:
        friendly_name: "Jakaś Nazwa"
        unit_of_measurement: 'Jakaś jednostka np - μg/m³'
        value_template: "{{ state_attr('nazwa_encji_z_atrybutem', 'nazwa_atrybutu') }}"
 
Dodane : 26/12/2022 10:46 pm
(@mig41)
Wpisów: 626
Ekspert
 

Które konkretnie chcesz ? Pewnie podajesz źle ścieżki ( bo tu już bardziej skomplikowana struktura jest) , coś jak np tu :  payload[0].Structure.Floors[0].Devices[0].MaxTemperature

 

 
Dodane : 26/12/2022 11:03 pm
(@adrianmajdanik)
Wpisów: 13
Bywalec
Autor tematu
 

@mig41 Tych niżej potrzebuję. Rozumiem, że trzeba podać ścieżkę prowadzącą do wartości - możesz mi wyjaśnić Twój przykład, abym zrozumiał co i skąd podawać, aby wskazać ścieżkę?

"DefrostMode"
"HeatPumpFrequency"
"MaxSetTemperature"
"MinSetTemperature"
"RoomTemperatureZone1"
"RoomTemperatureZone2"
"OutdoorTemperature"
"FlowTemperature"
"FlowTemperatureZone1"
"FlowTemperatureZone2"
"FlowTemperatureBoiler"
"ReturnTemperature"
"ReturnTemperatureZone1"
"ReturnTemperatureZone2"
"ReturnTemperatureBoiler"
"CondensingTemperature"
"DailyHeatingEnergyConsumed"
"DailyCoolingEnergyConsumed"
"DailyHotWaterEnergyConsumed"
"DailyHeatingEnergyProduced"
"DailyCoolingEnergyProduced"
"DailyHotWaterEnergyProduced"
"OperationMode"
"OperationModeZone1"
"OperationModeZone2"
"SetTemperatureZone1"
"SetTemperatureZone2"
"SetTankWaterTemperature"
"TargetHCTemperatureZone1"
"TargetHCTemperatureZone2"
"BoosterHeater1Status"
"BoosterHeater2Status"
"BoosterHeater2PlusStatus"

 
Dodane : 27/12/2022 6:44 am
(@mig41)
Wpisów: 626
Ekspert
 

Popatrz w jakiś parser json , i będziesz widział tą strukturę , np wklejając odpowiedź tu: http://json.parser.online.fr/

 

Przykładowo ścieżka do DefrostMode to Structure.Floors[0].Devices[0].Device.DefrostMode 

Ale jak to wpisać to dokładnie nie wiem jeszcze...

 
Dodane : 27/12/2022 7:13 am
(@adrianmajdanik)
Wpisów: 13
Bywalec
Autor tematu
 

@mig41 Czy możliwe, że tak jak niżej? Coś podobnego znalazłem gdzieś na forum. Przetestuję, jak zadziała to powstanie pytanie jak to zrobić, aby w jednym zapytaniu dostać kilka atrybutów

json[0]["Structure"]["Floors"][0]["Devices"][0]["Device"]["DefrostMode"]

 
Dodane : 27/12/2022 9:50 am
(@adrianmajdanik)
Wpisów: 13
Bywalec
(@adrianmajdanik)
Wpisów: 13
Bywalec
Autor tematu
 

To niżej działa i pobiera dane. Nie wiem jednak jak pobrać kilka atrybutów, tzn jak podać ścieżkę do kilku jednocześnie.

sensor:
- platform: rest
name: DailyEnergyProduced
resource: https://app.melcloud.com/Mitsubishi.Wifi.Client/User/ListDevices
scan_interval: 120
headers:
X-MitsContextKey: EDE6807341394DDAB68E259311A9C9
value_template: '{{ value_json[0]["Structure"]["Floors"][0]["Devices"][0]["Device"]["DailyHeatingEnergyProduced"]
}}'
unique_id: 'DailyEnergyProduced'
json_attributes:
- DailyHeatingEnergyProduced

 
Dodane : 27/12/2022 10:34 am
(@adrianmajdanik)
Wpisów: 13
Bywalec
Autor tematu
 

@mig41 Hej, dasz radę jeszcze coś pomóc? W ślad za Twoją podpowiedzią szukałem jak podać ścieżkę do json, ale nic mi nie wychodzi. Masz jakiś pomysł?

Próbuję jak niżej ale nie zwraca danych:

sensor:
- platform: rest
name: OutDoorTemperature
unit_of_measurement: "Hz"
resource: https://app.melcloud.com/Mitsubishi.Wifi.Client/User/ListDevices
scan_interval: 120
headers:
X-MitsContextKey: EDE6807341394DDAB68E259311A9C9
value_template: '{{ value_json["OutDoorTemperature"]
}}'
unique_id: 'HeatPumpFrequency'
json_attributes_path: $.[0].Structure.Floors[0].Devices[0].Device
json_attributes:
- OutDoorTemperature

 
Dodane : 02/01/2023 11:50 pm
Udostępnij: