Jak ze zprávy z HHTP request vytvořit entitu

Automatizace pomocí vývojového nástroje pro vizuální programování. Původně vyvinuto společnost IBM.
Odpovědět
Beny
Pokročilý
Pokročilý
Příspěvky: 123
Registrován: 17. listopad 2021, 20:29
Dal poděkování: 3 poděkování

Jak ze zprávy z HHTP request vytvořit entitu

Příspěvek od Beny »

Ahoj,

občas si hraju s NR a nyní stojím před úkolem vytvořit z dotazu http request entitu pro další účely.
Zpráva se zobrazuje, OK, ale co dál ...

Vůbec nevím. Pokušel jsem se Googlit, ale nevím ani jak to pořádně nazvat.

Pomůže někdo s popostrčením?

Díky

rxw
Začínající autor
Začínající autor
Příspěvky: 41
Registrován: 09. prosinec 2022, 13:48
Dostal poděkování: 4 poděkování

Re: Jak ze zprávy z HHTP request vytvořit entitu

Příspěvek od rxw »

Ahoj,

pokud jsem správně pochopil požadavek, tak postup je následující:

- nadefinovat si template sensor

Kód: Vybrat vše

template:
  - sensor:
      - unique_id: sensor_nodered_text
        name: "Text sensor updated from Node-red"
        state: "not set"
- v rámci NR flow použít node "Fire event" po vygenerování události "state_changed" s následujícími parametry (Data):

Kód: Vybrat vše

{
    "entity_id": "sensor.text_sensor_updated_from_node_red",
    "new_state": {
        "entity_id": "sensor.text_sensor_updated_from_node_red",
        "state": "value from Node-red: " & msg.payload
    }
}
R.

PS. Příkladový kód pro NR:

Kód: Vybrat vše

[{"id":"9ec211ed5a97c66b","type":"inject","z":"ac835e53f642e5db","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":140,"y":480,"wires":[["68dec6285fdb63c9"]]},{"id":"68dec6285fdb63c9","type":"ha-fire-event","z":"ac835e53f642e5db","name":"","server":"32d979eb.46fec6","version":0,"event":"state_changed","data":"{\t    \"entity_id\": \"sensor.text_sensor_updated_from_node_red\",\t    \"new_state\": {\t        \"entity_id\": \"sensor.text_sensor_updated_from_node_red\",\t        \"state\": msg.payload\t    }\t}","dataType":"jsonata","x":360,"y":480,"wires":[["4d724af5d2e243c2"]]},{"id":"4d724af5d2e243c2","type":"debug","z":"ac835e53f642e5db","name":"debug 2","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":620,"y":480,"wires":[]},{"id":"32d979eb.46fec6","type":"server","name":"Home Assistant","version":5,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true,"heartbeat":false,"heartbeatInterval":30,"areaSelector":"friendlyName","deviceSelector":"friendlyName","entitySelector":"friendlyName","statusSeparator":"at: ","statusYear":"hidden","statusMonth":"short","statusDay":"numeric","statusHourCycle":"h23","statusTimeFormat":"h:m","enableGlobalContextStore":true}]

Beny
Pokročilý
Pokročilý
Příspěvky: 123
Registrován: 17. listopad 2021, 20:29
Dal poděkování: 3 poděkování

Re: Jak ze zprávy z HHTP request vytvořit entitu

Příspěvek od Beny »

Šel jsem na to od lesa, zatím.
Pro dotaz, kde je jen jeden údaj používám v HA restAPI. To jede báječně.
Pro více údajů ve zprávě, kde potřebuji ale vyfiltrovat jen jeden údaj se zatím ztrácím.

Přes NR a HTTP request vydoluji informace s nastavení json. Tedy jsou i hezky roztříděné v bugu. Pokusil jsem se to vyfiltrovat přes change node, kde jsem vložil zkopírovanou cestu do msg a překlopil jsem to na jinou msg, ale bohužel ten údaj ne že se nevyfiltruje,m ale dokonce ze zprávy zmizí. Ostatní je stále vidět.
Přílohy
Screenshot 2023-01-09 at 17-00-17 Node-RED – Home Assistant.png

Beny
Pokročilý
Pokročilý
Příspěvky: 123
Registrován: 17. listopad 2021, 20:29
Dal poděkování: 3 poděkování

Re: Jak ze zprávy z HHTP request vytvořit entitu

Příspěvek od Beny »

Tak jen změna msg na payload to vyřešila
Přílohy
Screenshot 2023-01-09 at 18-00-42 Node-RED – Home Assistant.png

Beny
Pokročilý
Pokročilý
Příspěvky: 123
Registrován: 17. listopad 2021, 20:29
Dal poděkování: 3 poděkování

Re: Jak ze zprávy z HHTP request vytvořit entitu

Příspěvek od Beny »

Tak zkouška přes NR zatím nevyšla

senzor
Screenshot 2023-01-09 at 18-22-53 Nástroje pro vývojáře – Home Assistant.png
debug
Screenshot 2023-01-09 at 18-39-17 Node-RED – Home Assistant.png
Jakmile to nechám běžet děsně se zahltí HA. Vidím hodnotu, které by se měla poslat do nové identity v bugu, ale v identitě se nepřipíše

rxw
Začínající autor
Začínající autor
Příspěvky: 41
Registrován: 09. prosinec 2022, 13:48
Dostal poděkování: 4 poděkování

Re: Jak ze zprávy z HHTP request vytvořit entitu

Příspěvek od rxw »

Já jsem to zkoušel na nové entitě, která ještě neměla změněnou hodnotu a tam se to asi chová jinak. Aby to fungovalo vždy, musí "data" objekt obsahovat element "old_state".

Použil jsem node "current_state" a jeho výsledek jsem vložil do "data" objektu

Kód: Vybrat vše

{
    "entity_id": "sensor.text_sensor_updated_from_node_red",
    "new_state": {
        "entity_id": "sensor.text_sensor_updated_from_node_red",
        "state": "update from Node-red: " & msg.rand & " (" & msg.timestamp & ")"
    },
    "old_state": msg.data
}
node-red.png

Beny
Pokročilý
Pokročilý
Příspěvky: 123
Registrován: 17. listopad 2021, 20:29
Dal poděkování: 3 poděkování

Re: Jak ze zprávy z HHTP request vytvořit entitu

Příspěvek od Beny »

Už to funguje.
Problém byl v propojení NR a HA. V HA nebyl nějaký doplněk z HACS.
Jsem to udělal jinak, ale hlavně že to funguje.

Děkuji moc za rady-
Přílohy
Screenshot 2023-01-09 at 20-29-14 Node-RED – Home Assistant.png

Odpovědět

Zpět na „Node-Red“