OpenHausIO / backend

HTTP API for the OpenHaus SmartHome/IoT solution
https://docs.open-haus.io
6 stars 2 forks source link

Update/refactor `/events` route #403

Closed mStirner closed 4 months ago

mStirner commented 8 months ago

In the frontend are a lot of "get" events, these are not needed. Frontend should only care about "add", "update", "remove" and render items based on these events.

mStirner commented 5 months ago

- Bogues/buggy WebSocket /event route
- State update buggy/laggy weil update event wird viel zu oft gesendet
- 13.04.2024 - 12:12: OpenHaus VM Herunter gefahren (Wie lange bis "Buggy State update" wieder erkennbar?
- Debounce state update in component api? sensor spammt ziemlich viel auf dem mqtt topic
- Via events werden auch states gesendet die gar nicht geupdated worde. e.g. AV Reciever/SmartMeter
  -> Nee, war nur ein "get"
- Geht ?intents[]=update eigentlich richtig? Laut wscat kommt tortzdem get/add events...
mStirner commented 5 months ago

Possible that the intents handling not working, There are just "get" events, event with ?intents[]=update set. Where are the update events?

< {"component":"mqtt","event":"get","args":[{"_id":"65b2874b98c30b71f603a07a","description":"ESP8266/ESPHome IKEA VINDSTYRKA Particle sensor","topic":"air-sensor/sensor/particulate_matter_25m_concentration/state","timestamps":{"created":1706198859263,"updated":null},"labels":[]}]}
< {"component":"mqtt","event":"get","args":[{"_id":"65b2874b98c30b71f603a07a","description":"ESP8266/ESPHome IKEA VINDSTYRKA Particle sensor","topic":"air-sensor/sensor/particulate_matter_25m_concentration/state","timestamps":{"created":1706198859263,"updated":null},"labels":[]}]}
< {"component":"mqtt","event":"get","args":[{"_id":"65b2874b98c30b71f603a07a","description":"ESP8266/ESPHome IKEA VINDSTYRKA Particle sensor","topic":"air-sensor/sensor/particulate_matter_25m_concentration/state","timestamps":{"created":1706198859263,"updated":null},"labels":[]}]}
< {"component":"mqtt","event":"get","args":[{"_id":"65b2874b98c30b71f603a07a","description":"ESP8266/ESPHome IKEA VINDSTYRKA Particle sensor","topic":"air-sensor/sensor/particulate_matter_25m_concentration/state","timestamps":{"created":1706198859263,"updated":null},"labels":[]}]}
< {"component":"ssdp","event":"get","args":[{"_id":"633328f81f7a7d41d0f7e73c","nt":"urn:schemas-upnp-org:device:basic:1","timestamps":{"created":1664297208272,"updated":1713006792546,"announced":1713006792545},"description":null,"usn":null,"labels":[]}]}
< {"component":"ssdp","event":"get","args":[{"_id":"633328f81f7a7d41d0f7e73c","nt":"urn:schemas-upnp-org:device:basic:1","timestamps":{"created":1664297208272,"updated":1713006792546,"announced":1713006812544},"description":null,"usn":null,"labels":[]}]}
< {"component":"ssdp","event":"update","args":[{"_id":"633328f81f7a7d41d0f7e73c","nt":"urn:schemas-upnp-org:device:basic:1","timestamps":{"created":1664297208272,"updated":1713006812545,"announced":1713006812544},"description":null,"usn":null,"labels":[]}]}
< {"component":"devices","event":"get","args":[{"_id":"63a0ce5b33d59ec69d8ffe16","name":"Lowboard","interfaces":[{"settings":{"host":"lowboard.lan","port":8080,"socket":"tcp","mac":null},"_id":"63a0ce5b33d59ec69d8ffe17","type":"ETHERNET","adapter":["raw"],"description":null}],"meta":{"manufacturer":"custom","model":"lowboard","revision":null,"serial":null},"timestamps":{"created":1671482971412,"updated":1673891306192},"room":"62a4bbf0d9256b5e8d69889c","enabled":true,"icon":"fa-solid fa-minus","labels":[]}]}
< {"component":"devices","event":"get","args":[{"_id":"63a0ceb1fa5b98c4b1f74ba9","name":"AV - Receiver","meta":{"manufacturer":"pioneer","model":"SC-LX501","revision":null,"serial":null},"interfaces":[{"type":"ETHERNET","description":"eISCP Interface","settings":{"host":"192.168.2.10","port":60128,"socket":"tcp","mac":null},"adapter":["eiscp"],"_id":"63a0ceb1fa5b98c4b1f74baa"}],"timestamps":{"created":1671483057571,"updated":1673896543706},"room":"62a4bbf0d9256b5e8d69889c","enabled":true,"icon":"fa-solid fa-volume-high","labels":[]}]}
< {"component":"devices","event":"get","args":[{"_id":"63a1745d9116397c5e22aa40","name":"Phoscon Gateway (00212EFFFF03FFC9)","icon":"fa-solid fa-wave-square","interfaces":[{"type":"ETHERNET","settings":{"socket":"tcp","host":"192.168.2.4","port":80,"mac":null},"_id":"63a1745d9116397c5e22aa41","adapter":["raw"],"description":null},{"type":"ETHERNET","settings":{"socket":"tcp","host":"192.168.2.4","port":443,"mac":null},"_id":"63a1745d9116397c5e22aa42","adapter":["raw"],"description":null}],"meta":{"manufacturer":"phoscon","model":"raspbee","serial":"00212EFFFF03FFC9","revision":null},"timestamps":{"created":1671525469439,"updated":1673896543251},"room":"62a4bbf0d9256b5e8d69889c","enabled":true,"labels":[]}]}
< {"component":"mqtt","event":"get","args":[{"_id":"65b2874b98c30b71f603a07a","description":"ESP8266/ESPHome IKEA VINDSTYRKA Particle sensor","topic":"air-sensor/sensor/particulate_matter_25m_concentration/state","timestamps":{"created":1706198859263,"updated":null},"labels":[]}]}

1) Why are the many get's, from where? 2) Why no update events?

mStirner commented 5 months ago
wscat --connect ws://open-haus.lan/api/events?intents[]=update | grep -i '"event":"update"'
{"component":"mdns","event":"update","args":[{"_id":"63fa3292f0195a861bf0167b","name":"shelly*.local","type":"A","labels":["manufacturer=shelly","shelly=true"],"timestamps":{"created":1677341330774,"updated":1713007025563,"announced":1713007025563}}]}
{"component":"mdns","event":"update","args":[{"_id":"63fa3292f0195a861bf0167b","name":"shelly*.local","type":"A","labels":["manufacturer=shelly","shelly=true"],"timestamps":{"created":1677341330774,"updated":1713007029595,"announced":1713007029594}}]}
{"component":"mdns","event":"update","args":[{"_id":"63fa3292f0195a861bf0167b","name":"shelly*.local","type":"A","labels":["manufacturer=shelly","shelly=true"],"timestamps":{"created":1677341330774,"updated":1713007031701,"announced":1713007031700}}]}
{"component":"ssdp","event":"update","args":[{"_id":"633328f81f7a7d41d0f7e73c","nt":"urn:schemas-upnp-org:device:basic:1","timestamps":{"created":1664297208272,"updated":1713007032545,"announced":1713007032545},"description":null,"usn":null,"labels":[]}]}
{"component":"mdns","event":"update","args":[{"_id":"63fa3292f0195a861bf0167b","name":"shelly*.local","type":"A","labels":["manufacturer=shelly","shelly=true"],"timestamps":{"created":1677341330774,"updated":1713007040205,"announced":1713007040205}}]}
{"component":"mdns","event":"update","args":[{"_id":"63fa3292f0195a861bf0167b","name":"shelly*.local","type":"A","labels":["manufacturer=shelly","shelly=true"],"timestamps":{"created":1677341330774,"updated":1713007046149,"announced":1713007046149}}]}
{"component":"ssdp","event":"update","args":[{"_id":"633328f81f7a7d41d0f7e73c","nt":"urn:schemas-upnp-org:device:basic:1","timestamps":{"created":1664297208272,"updated":1713007052545,"announced":1713007052545},"description":null,"usn":null,"labels":[]}]}
{"component":"mdns","event":"update","args":[{"_id":"63fa3292f0195a861bf0167b","name":"shelly*.local","type":"A","labels":["manufacturer=shelly","shelly=true"],"timestamps":{"created":1677341330774,"updated":1713007054066,"announced":1713007054066}}]}
{"component":"mdns","event":"update","args":[{"_id":"63fa3292f0195a861bf0167b","name":"shelly*.local","type":"A","labels":["manufacturer=shelly","shelly=true"],"timestamps":{"created":1677341330774,"updated":1713007057898,"announced":1713007057898}}]}
{"component":"mdns","event":"update","args":[{"_id":"63fa3292f0195a861bf0167b","name":"shelly*.local","type":"A","labels":["manufacturer=shelly","shelly=true"],"timestamps":{"created":1677341330774,"updated":1713007061291,"announced":1713007061291}}]}
{"component":"mdns","event":"update","args":[{"_id":"63fa3292f0195a861bf0167b","name":"shelly*.local","type":"A","labels":["manufacturer=shelly","shelly=true"],"timestamps":{"created":1677341330774,"updated":1713007069774,"announced":1713007069774}}]}
{"component":"ssdp","event":"update","args":[{"_id":"633328f81f7a7d41d0f7e73c","nt":"urn:schemas-upnp-org:device:basic:1","timestamps":{"created":1664297208272,"updated":1713007072545,"announced":1713007072545},"description":null,"usn":null,"labels":[]}]}
{"component":"mdns","event":"update","args":[{"_id":"63fa3292f0195a861bf0167b","name":"shelly*.local","type":"A","labels":["manufacturer=shelly","shelly=true"],"timestamps":{"created":1677341330774,"updated":1713007074868,"announced":1713007074868}}]}
{"component":"endpoints","event":"update","args":[{"_id":"65b2874b98c30b71f603a078","name":"Particlesensor","device":"65b17b1989be565470e58cdd","icon":"fa-solid fa-gauge-high","states":[{"name":"Particles (µg/m³)","alias":"particles","type":"number","min":0,"max":25000,"_id":"65b2874b98c30b71f603a079","description":null,"value":16,"invert":false,"timestamps":{"created":1706198859261,"updated":1713007079210}}],"labels":["particlesensor=true","board=eps8266","esphome=true"],"timestamps":{"created":1706198859182,"updated":1713007079318},"enabled":true,"room":null,"commands":[],"identifier":null}]}
{"component":"mdns","event":"update","args":[{"_id":"63fa3292f0195a861bf0167b","name":"shelly*.local","type":"A","labels":["manufacturer=shelly","shelly=true"],"timestamps":{"created":1677341330774,"updated":1713007082572,"announced":1713007082572}}]}
{"component":"mdns","event":"update","args":[{"_id":"63fa3292f0195a861bf0167b","name":"shelly*.local","type":"A","labels":["manufacturer=shelly","shelly=true"],"timestamps":{"created":1677341330774,"updated":1713007086201,"announced":1713007086201}}]}
{"component":"mdns","event":"update","args":[{"_id":"63fa3292f0195a861bf0167b","name":"shelly*.local","type":"A","labels":["manufacturer=shelly","shelly=true"],"timestamps":{"created":1677341330774,"updated":1713007090882,"announced":1713007090881}}]}
{"component":"ssdp","event":"update","args":[{"_id":"633328f81f7a7d41d0f7e73c","nt":"urn:schemas-upnp-org:device:basic:1","timestamps":{"created":1664297208272,"updated":1713007092545,"announced":1713007092545},"description":null,"usn":null,"labels":[]}]}
{"component":"mdns","event":"update","args":[{"_id":"63fa3292f0195a861bf0167b","name":"shelly*.local","type":"A","labels":["manufacturer=shelly","shelly=true"],"timestamps":{"created":1677341330774,"updated":1713007099347,"announced":1713007099346}}]}
wscat --connect ws://open-haus.lan/api/events?intents[]=update | grep -i '"event":"get"'
{"component":"mqtt","event":"get","args":[{"_id":"65b2874b98c30b71f603a07a","description":"ESP8266/ESPHome IKEA VINDSTYRKA Particle sensor","topic":"air-sensor/sensor/particulate_matter_25m_concentration/state","timestamps":{"created":1706198859263,"updated":null},"labels":[]}]}
{"component":"mqtt","event":"get","args":[{"_id":"65b2874b98c30b71f603a07a","description":"ESP8266/ESPHome IKEA VINDSTYRKA Particle sensor","topic":"air-sensor/sensor/particulate_matter_25m_concentration/state","timestamps":{"created":1706198859263,"updated":null},"labels":[]}]}
{"component":"mqtt","event":"get","args":[{"_id":"65b2874b98c30b71f603a07a","description":"ESP8266/ESPHome IKEA VINDSTYRKA Particle sensor","topic":"air-sensor/sensor/particulate_matter_25m_concentration/state","timestamps":{"created":1706198859263,"updated":null},"labels":[]}]}
{"component":"mqtt","event":"get","args":[{"_id":"65b2874b98c30b71f603a07a","description":"ESP8266/ESPHome IKEA VINDSTYRKA Particle sensor","topic":"air-sensor/sensor/particulate_matter_25m_concentration/state","timestamps":{"created":1706198859263,"updated":null},"labels":[]}]}
{"component":"mqtt","event":"get","args":[{"_id":"65b2874b98c30b71f603a07a","description":"ESP8266/ESPHome IKEA VINDSTYRKA Particle sensor","topic":"air-sensor/sensor/particulate_matter_25m_concentration/state","timestamps":{"created":1706198859263,"updated":null},"labels":[]}]}
{"component":"mqtt","event":"get","args":[{"_id":"65b2874b98c30b71f603a07a","description":"ESP8266/ESPHome IKEA VINDSTYRKA Particle sensor","topic":"air-sensor/sensor/particulate_matter_25m_concentration/state","timestamps":{"created":1706198859263,"updated":null},"labels":[]}]}
{"component":"mqtt","event":"get","args":[{"_id":"65b2874b98c30b71f603a07a","description":"ESP8266/ESPHome IKEA VINDSTYRKA Particle sensor","topic":"air-sensor/sensor/particulate_matter_25m_concentration/state","timestamps":{"created":1706198859263,"updated":null},"labels":[]}]}
{"component":"mqtt","event":"get","args":[{"_id":"65b2874b98c30b71f603a07a","description":"ESP8266/ESPHome IKEA VINDSTYRKA Particle sensor","topic":"air-sensor/sensor/particulate_matter_25m_concentration/state","timestamps":{"created":1706198859263,"updated":null},"labels":[]}]}
{"component":"mqtt","event":"get","args":[{"_id":"65b2874b98c30b71f603a07a","description":"ESP8266/ESPHome IKEA VINDSTYRKA Particle sensor","topic":"air-sensor/sensor/particulate_matter_25m_concentration/state","timestamps":{"created":1706198859263,"updated":null},"labels":[]}]}
{"component":"mqtt","event":"get","args":[{"_id":"65b2874b98c30b71f603a07a","description":"ESP8266/ESPHome IKEA VINDSTYRKA Particle sensor","topic":"air-sensor/sensor/particulate_matter_25m_concentration/state","timestamps":{"created":1706198859263,"updated":null},"labels":[]}]}
{"component":"mqtt","event":"get","args":[{"_id":"65b2874b98c30b71f603a07a","description":"ESP8266/ESPHome IKEA VINDSTYRKA Particle sensor","topic":"air-sensor/sensor/particulate_matter_25m_concentration/state","timestamps":{"created":1706198859263,"updated":null},"labels":[]}]}
{"component":"mqtt","event":"get","args":[{"_id":"65b2874b98c30b71f603a07a","description":"ESP8266/ESPHome IKEA VINDSTYRKA Particle sensor","topic":"air-sensor/sensor/particulate_matter_25m_concentration/state","timestamps":{"created":1706198859263,"updated":null},"labels":[]}]}
{"component":"mqtt","event":"get","args":[{"_id":"65b2874b98c30b71f603a07a","description":"ESP8266/ESPHome IKEA VINDSTYRKA Particle sensor","topic":"air-sensor/sensor/particulate_matter_25m_concentration/state","timestamps":{"created":1706198859263,"updated":null},"labels":[]}]}
{"component":"mqtt","event":"get","args":[{"_id":"65b2874b98c30b71f603a07a","description":"ESP8266/ESPHome IKEA VINDSTYRKA Particle sensor","topic":"air-sensor/sensor/particulate_matter_25m_concentration/state","timestamps":{"created":1706198859263,"updated":null},"labels":[]}]}
{"component":"mqtt","event":"get","args":[{"_id":"65b2874b98c30b71f603a07a","description":"ESP8266/ESPHome IKEA VINDSTYRKA Particle sensor","topic":"air-sensor/sensor/particulate_matter_25m_concentration/state","timestamps":{"created":1706198859263,"updated":null},"labels":[]}]}
{"component":"mqtt","event":"get","args":[{"_id":"65b2874b98c30b71f603a07a","description":"ESP8266/ESPHome IKEA VINDSTYRKA Particle sensor","topic":"air-sensor/sensor/particulate_matter_25m_concentration/state","timestamps":{"created":1706198859263,"updated":null},"labels":[]}]}
{"component":"mqtt","event":"get","args":[{"_id":"65b2874b98c30b71f603a07a","description":"ESP8266/ESPHome IKEA VINDSTYRKA Particle sensor","topic":"air-sensor/sensor/particulate_matter_25m_concentration/state","timestamps":{"created":1706198859263,"updated":null},"labels":[]}]}
{"component":"mqtt","event":"get","args":[{"_id":"65b2874b98c30b71f603a07a","description":"ESP8266/ESPHome IKEA VINDSTYRKA Particle sensor","topic":"air-sensor/sensor/particulate_matter_25m_concentration/state","timestamps":{"created":1706198859263,"updated":null},"labels":[]}]}
{"component":"mqtt","event":"get","args":[{"_id":"65b2874b98c30b71f603a07a","description":"ESP8266/ESPHome IKEA VINDSTYRKA Particle sensor","topic":"air-sensor/sensor/particulate_matter_25m_concentration/state","timestamps":{"created":1706198859263,"updated":null},"labels":[]}]}
{"component":"mqtt","event":"get","args":[{"_id":"65b2874b98c30b71f603a07a","description":"ESP8266/ESPHome IKEA VINDSTYRKA Particle sensor","topic":"air-sensor/sensor/particulate_matter_25m_concentration/state","timestamps":{"created":1706198859263,"updated":null},"labels":[]}]}
{"component":"mqtt","event":"get","args":[{"_id":"65b2874b98c30b71f603a07a","description":"ESP8266/ESPHome IKEA VINDSTYRKA Particle sensor","topic":"air-sensor/sensor/particulate_matter_25m_concentration/state","timestamps":{"created":1706198859263,"updated":null},"labels":[]}]}
{"component":"mqtt","event":"get","args":[{"_id":"65b2874b98c30b71f603a07a","description":"ESP8266/ESPHome IKEA VINDSTYRKA Particle sensor","topic":"air-sensor/sensor/particulate_matter_25m_concentration/state","timestamps":{"created":1706198859263,"updated":null},"labels":[]}]}
{"component":"mqtt","event":"get","args":[{"_id":"65b2874b98c30b71f603a07a","description":"ESP8266/ESPHome IKEA VINDSTYRKA Particle sensor","topic":"air-sensor/sensor/particulate_matter_25m_concentration/state","timestamps":{"created":1706198859263,"updated":null},"labels":[]}]}
{"component":"mdns","event":"get","args":[{"_id":"63fa3292f0195a861bf0167b","name":"shelly*.local","type":"A","labels":["manufacturer=shelly","shelly=true"],"timestamps":{"created":1677341330774,"updated":1713007114509,"announced":1713007114509}}]}
{"component":"mdns","event":"get","args":[{"_id":"63fa3292f0195a861bf0167b","name":"shelly*.local","type":"A","labels":["manufacturer=shelly","shelly=true"],"timestamps":{"created":1677341330774,"updated":1713007114509,"announced":1713007120471}}]}
{"component":"devices","event":"get","args":[{"_id":"63a0ce5b33d59ec69d8ffe16","name":"Lowboard","interfaces":[{"settings":{"host":"lowboard.lan","port":8080,"socket":"tcp","mac":null},"_id":"63a0ce5b33d59ec69d8ffe17","type":"ETHERNET","adapter":["raw"],"description":null}],"meta":{"manufacturer":"custom","model":"lowboard","revision":null,"serial":null},"timestamps":{"created":1671482971412,"updated":1673891306192},"room":"62a4bbf0d9256b5e8d69889c","enabled":true,"icon":"fa-solid fa-minus","labels":[]}]}
{"component":"devices","event":"get","args":[{"_id":"63a0ceb1fa5b98c4b1f74ba9","name":"AV - Receiver","meta":{"manufacturer":"pioneer","model":"SC-LX501","revision":null,"serial":null},"interfaces":[{"type":"ETHERNET","description":"eISCP Interface","settings":{"host":"192.168.2.10","port":60128,"socket":"tcp","mac":null},"adapter":["eiscp"],"_id":"63a0ceb1fa5b98c4b1f74baa"}],"timestamps":{"created":1671483057571,"updated":1673896543706},"room":"62a4bbf0d9256b5e8d69889c","enabled":true,"icon":"fa-solid fa-volume-high","labels":[]}]}
{"component":"devices","event":"get","args":[{"_id":"63a1745d9116397c5e22aa40","name":"Phoscon Gateway (00212EFFFF03FFC9)","icon":"fa-solid fa-wave-square","interfaces":[{"type":"ETHERNET","settings":{"socket":"tcp","host":"192.168.2.4","port":80,"mac":null},"_id":"63a1745d9116397c5e22aa41","adapter":["raw"],"description":null},{"type":"ETHERNET","settings":{"socket":"tcp","host":"192.168.2.4","port":443,"mac":null},"_id":"63a1745d9116397c5e22aa42","adapter":["raw"],"description":null}],"meta":{"manufacturer":"phoscon","model":"raspbee","serial":"00212EFFFF03FFC9","revision":null},"timestamps":{"created":1671525469439,"updated":1673896543251},"room":"62a4bbf0d9256b5e8d69889c","enabled":true,"labels":[]}]}
{"component":"devices","event":"get","args":[{"_id":"63a17ba2ecc17bba95950c7d","name":"HDMI Umschalter","interfaces":[{"type":"SERIAL","settings":{"device":"/dev/ttyUSB0","baudRate":9600,"dataBits":8,"stopBits":1,"parity":"none","rtscts":false,"xon":false,"xoff":false,"xany":false,"hupcl":true},"adapter":["eol"],"_id":"63a17ba2ecc17bba95950c7e","description":null}],"enabled":true,"icon":"fa-solid fa-shuffle","timestamps":{"created":1671527330363,"updated":1709031875464},"room":"62a4bbf0d9256b5e8d69889c","labels":[]}]}
{"component":"devices","event":"get","args":[{"_id":"63a5a4c2bd5fe7cb165960cd","meta":{"manufacturer":"samsung","model":"UE60J6289","revision":null,"serial":null},"name":"Fernseher","interfaces":[{"settings":{"host":"192.168.2.100","port":8000,"socket":"tcp","mac":"5c:49:7d:21:14:27"},"type":"ETHERNET","description":"SmartView API","adapter":["raw"],"_id":"63a5a4c2bd5fe7cb165960ce"},{"settings":{"host":"192.168.2.100","port":8001,"socket":"tcp","mac":"5c:49:7d:21:14:27"},"type":"ETHERNET","adapter":["raw"],"_id":"63a5a4c2bd5fe7cb165960cf","description":null}],"timestamps":{"created":1671800002207,"updated":1673896542153},"room":"62a4bbf0d9256b5e8d69889c","enabled":true,"icon":"fa-solid fa-tv","labels":[]}]}
{"component":"devices","event":"get","args":[{"_id":"65905859ed87038064218f5d","name":"Gamingregal (shellyrgbw2-4A3E6A.local)","interfaces":[{"settings":{"host":"192.168.2.136","port":80,"socket":"tcp","mac":null},"_id":"65905859ed87038064218f5e","type":"ETHERNET","adapter":["raw"],"description":null}],"timestamps":{"created":1703958617386,"updated":1703962613044},"labels":["shelly=true","gen=1","auth=false","type=SHRGBW2"],"room":"62a4bc8bd9256b5e8d6988a0","enabled":true,"icon":"fa-solid fa-lightbulb"}]}
{"component":"devices","event":"get","args":[{"_id":"6590585ced87038064218f5f","name":"Popcornmaschine (shelly1pm-98CDAC2FDBD8.local)","interfaces":[{"settings":{"host":"192.168.2.115","port":80,"socket":"tcp","mac":null},"_id":"6590585ced87038064218f60","type":"ETHERNET","adapter":["raw"],"description":null}],"timestamps":{"created":1703958620175,"updated":1703962625842},"labels":["shelly=true","gen=1","auth=false","type=SHSW-PM"],"room":"62a4bc0ed9256b5e8d69889d","enabled":true,"icon":"fa-solid fa-lightbulb"}]}
{"component":"devices","event":"get","args":[{"_id":"6590585ded87038064218f65","name":"Ventilator (shellyplug-2F52AD.local)","interfaces":[{"settings":{"host":"192.168.2.161","port":80,"socket":"tcp","mac":null},"_id":"6590585ded87038064218f66","type":"ETHERNET","adapter":["raw"],"description":null}],"timestamps":{"created":1703958621678,"updated":1703962031803},"labels":["shelly=true","gen=1","auth=false","type=SHPLG2-1"],"room":"62a4bbf0d9256b5e8d69889c","enabled":true,"icon":"fa-solid fa-fan"}]}
{"component":"mqtt","event":"get","args":[{"_id":"65b2874b98c30b71f603a07a","description":"ESP8266/ESPHome IKEA VINDSTYRKA Particle sensor","topic":"air-sensor/sensor/particulate_matter_25m_concentration/state","timestamps":{"created":1706198859263,"updated":null},"labels":[]}]}
{"component":"mqtt","event":"get","args":[{"_id":"65b2874b98c30b71f603a07a","description":"ESP8266/ESPHome IKEA VINDSTYRKA Particle sensor","topic":"air-sensor/sensor/particulate_matter_25m_concentration/state","timestamps":{"created":1706198859263,"updated":null},"labels":[]}]}
{"component":"mqtt","event":"get","args":[{"_id":"65b2874b98c30b71f603a07a","description":"ESP8266/ESPHome IKEA VINDSTYRKA Particle sensor","topic":"air-sensor/sensor/particulate_matter_25m_concentration/state","timestamps":{"created":1706198859263,"updated":null},"labels":[]}]}
{"component":"mqtt","event":"get","args":[{"_id":"65b2874b98c30b71f603a07a","description":"ESP8266/ESPHome IKEA VINDSTYRKA Particle sensor","topic":"air-sensor/sensor/particulate_matter_25m_concentration/state","timestamps":{"created":1706198859263,"updated":null},"labels":[]}]}
{"component":"mqtt","event":"get","args":[{"_id":"65b2874b98c30b71f603a07a","description":"ESP8266/ESPHome IKEA VINDSTYRKA Particle sensor","topic":"air-sensor/sensor/particulate_matter_25m_concentration/state","timestamps":{"created":1706198859263,"updated":null},"labels":[]}]}
{"component":"mqtt","event":"get","args":[{"_id":"65b2874b98c30b71f603a07a","description":"ESP8266/ESPHome IKEA VINDSTYRKA Particle sensor","topic":"air-sensor/sensor/particulate_matter_25m_concentration/state","timestamps":{"created":1706198859263,"updated":null},"labels":[]}]}
{"component":"mqtt","event":"get","args":[{"_id":"65b2874b98c30b71f603a07a","description":"ESP8266/ESPHome IKEA VINDSTYRKA Particle sensor","topic":"air-sensor/sensor/particulate_matter_25m_concentration/state","timestamps":{"created":1706198859263,"updated":null},"labels":[]}]}
{"component":"mqtt","event":"get","args":[{"_id":"65b2874b98c30b71f603a07a","description":"ESP8266/ESPHome IKEA VINDSTYRKA Particle sensor","topic":"air-sensor/sensor/particulate_matter_25m_concentration/state","timestamps":{"created":1706198859263,"updated":null},"labels":[]}]}
mStirner commented 5 months ago
wscat --connect=ws://localhost:8080/api/events?intents[]=update | grep -i value
{"component":"endpoints","event":"update","args": [{"_id":"661a81727e93da1b7fa9d111","name":"Particlesensor","device":"661a81727e93da1b7fa9d110","icon":"fa-solid fa-gauge-high","states":[{"name":"Particles (µg/m³)","alias":"particles","type":"number","min":0,"max":25000,"_id":"661a81727e93da1b7fa9d112","description":null,"value":17,"invert":false,"timestamps":{"created":1713013106241,"updated":1713013695282}}],"labels":["particlesensor=true","board=eps8266","esphome=true"],"timestamps":{"created":1713013106222,"updated":1713013695386},"enabled":true,"room":null,"commands":[],"identifier":null}]}
{"component":"endpoints","event":"update","args":[{"_id":"661a81727e93da1b7fa9d111","name":"Particlesensor","device":"661a81727e93da1b7fa9d110","icon":"fa-solid fa-gauge-high","states":[{"name":"Particles (µg/m³)","alias":"particles","type":"number","min":0,"max":25000,"_id":"661a81727e93da1b7fa9d112","description":null,"value":16,"invert":false,"timestamps":{"created":1713013106241,"updated":1713013755156}}],"labels":["particlesensor=true","board=eps8266","esphome=true"],"timestamps":{"created":1713013106222,"updated":1713013755257},"enabled":true,"room":null,"commands":[],"identifier":null}]}
{"component":"endpoints","event":"update","args":[{"_id":"661a81727e93da1b7fa9d111","name":"Particlesensor","device":"661a81727e93da1b7fa9d110","icon":"fa-solid fa-gauge-high","states":[{"name":"Particles (µg/m³)","alias":"particles","type":"number","min":0,"max":25000,"_id":"661a81727e93da1b7fa9d112","description":null,"value":17,"invert":false,"timestamps":{"created":1713013106241,"updated":1713013785088}}],"labels":["particlesensor=true","board=eps8266","esphome=true"],"timestamps":{"created":1713013106222,"updated":1713013785189},"enabled":true,"room":null,"commands":[],"identifier":null}]}
{"component":"endpoints","event":"update","args":[{"_id":"661a81727e93da1b7fa9d111","name":"Particlesensor","device":"661a81727e93da1b7fa9d110","icon":"fa-solid fa-gauge-high","states":[{"name":"Particles (µg/m³)","alias":"particles","type":"number","min":0,"max":25000,"_id":"661a81727e93da1b7fa9d112","description":null,"value":18,"invert":false,"timestamps":{"created":1713013106241,"updated":1713013844988}}],"labels":["particlesensor=true","board=eps8266","esphome=true"],"timestamps":{"created":1713013106222,"updated":1713013845088},"enabled":true,"room":null,"commands":[],"identifier":null}]}
{"component":"endpoints","event":"update","args":[{"_id":"661a81727e93da1b7fa9d111","name":"Particlesensor","device":"661a81727e93da1b7fa9d110","icon":"fa-solid fa-gauge-high","states":[{"name":"Particles (µg/m³)","alias":"particles","type":"number","min":0,"max":25000,"_id":"661a81727e93da1b7fa9d112","description":null,"value":17,"invert":false,"timestamps":{"created":1713013106241,"updated":1713013883082}}],"labels":["particlesensor=true","board=eps8266","esphome=true"],"timestamps":{"created":1713013106222,"updated":1713013883184},"enabled":true,"room":null,"commands":[],"identifier":null}]}
{"component":"endpoints","event":"update","args":[{"_id":"661a81727e93da1b7fa9d111","name":"Particlesensor","device":"661a81727e93da1b7fa9d110","icon":"fa-solid fa-gauge-high","states":[{"name":"Particles (µg/m³)","alias":"particles","type":"number","min":0,"max":25000,"_id":"661a81727e93da1b7fa9d112","description":null,"value":19,"invert":false,"timestamps":{"created":1713013106241,"updated":1713013964744}}],"labels":["particlesensor=true","board=eps8266","esphome=true"],"timestamps":{"created":1713013106222,"updated":1713013964845},"enabled":true,"room":null,"commands":[],"identifier":null}]}
{"component":"endpoints","event":"update","args":[{"_id":"661a81727e93da1b7fa9d111","name":"Particlesensor","device":"661a81727e93da1b7fa9d110","icon":"fa-solid fa-gauge-high","states":[{"name":"Particles (µg/m³)","alias":"particles","type":"number","min":0,"max":25000,"_id":"661a81727e93da1b7fa9d112","description":null,"value":18,"invert":false,"timestamps":{"created":1713013106241,"updated":1713013967692}}],"labels":["particlesensor=true","board=eps8266","esphome=true"],"timestamps":{"created":1713013106222,"updated":1713013967792},"enabled":true,"room":null,"commands":[],"identifier":null}]}

Intents parameter work exactly like it should. At least on local dev version but not on nightly build on open-haus.lan

mStirner commented 5 months ago

wscat --connect ws://open-haus.lan:8080/api/events?intents[]=update Works, without port through nginx, you get everything back (incl. get/add). Why? -> Perhaps of the location rule?

map $http_upgrade $connection_upgrade {
  default upgrade;
  ''      close;
}

server {

    listen 80;
    server_name 127.0.0.1 localhost open-haus.lan open-haus.local;

    # remove server version
    server_tokens off;

    root /opt/OpenHaus/frontend;

    try_files $uri $uri/ =404;
    index index.html;

    autoindex off;    

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    location ~ /(api|auth)/(.*)$ {
        proxy_pass http://127.0.0.1:8080/$1/$2;
        proxy_http_version 1.1;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Connection $connection_upgrade;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

#    location ~ /(.*)$ {
#        proxy_pass http://frontend:3000/$1;
#        proxy_http_version 1.1;
#        proxy_set_header X-Forwarded-Proto $scheme;
#        proxy_set_header Connection $connection_upgrade;
#        proxy_set_header Upgrade $http_upgrade;
#        proxy_set_header Host $host;
#        proxy_set_header X-Real-IP $remote_addr;
#        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#    }

}
mStirner commented 5 months ago

My supposion was right, the cause of the problem is the nginx location block. Fixed version:

    location ~ ^/(api|auth)/ {
        proxy_pass http://127.0.0.1:8080$uri$is_args$args;
        proxy_http_version 1.1;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Connection $connection_upgrade;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

TODO: Update documentation: https://github.com/OpenHausIO/documentation/issues/34 See: https://stackoverflow.com/a/17859905/5781499

mStirner commented 5 months ago

Drop/reject ws connection when no intents/events or components query parameter is set with a http client error state

mStirner commented 5 months ago

Add/rename "event": "add" property to method?