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ć?
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 ?
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.
@mig41 Tak, pompa ciepła mitsubishi. Dzięki za podpowiedź, natomiast póki co w ogóle nie wykorzystywałem Node-Red
@mig41 Sprawdzam w narzędziach deweloperskich i mam zwrotkę, że "value _json is undefined"
W configuration.yaml to wpisz
@mig41 Wpisywałem i nie działa.. masz jeszcze jakiś pomysł?
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
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
Wygląda na to, że działa 😉 .. .ogromne wielkie za pomoc!
@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
I podejrzewam ,że dostaniesz odpowiedź , tyle ,że atrybuty musisz podmienić też na te ,które chcesz dostać.
@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') }}"
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
@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"
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...
@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"]
@mig41 Tu mam odczytany JSON - https://pastebin.com/raw/byEf3srs?fbclid=IwAR242i6wLLMPKVebTKXBsaQ4_PKyIQhDlCcdQeTfl3IkWT27fTD7_5-8uMI
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
@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