Hey ich weiß zwar nicht, ob das noch aktuell ist, aber wenn du das noch weitermachen möchtest hätte ich einen Ansatz der mit Sicherheit sehr flexibel wäre. Vielleicht hilft es dir und vielleicht auch anderen die ähnliches planen weiter. 🙂

Du könntest ja einen allgemeinen Endpoint machen auf den alle Requests laufen. Meinetwegen der Endpoint http://192.168.178.50/api/set/. Auf diesen Endpoint laufen, wie gesagt alle Requests.

Mal angenommen du machst ein Request über POST mit folgendem Body als JSON.

{ "id": "esp8266-fe23", "data": { // deine Daten die gesendet werden } }

So kannst du wie gesagt immer auf deinen Endpoint gehen, egal was du schickst. Also musst du nur ESP / Clientseitig definieren.

Auf der Serverseite kommen alle Request an, werden aber dann nur durch die id also in dem Fall esp8266-fe23 verarbeitet.

Wäre halt ganz praktisch weil so musst du nicht immer Client / Server gleichzeitig definieren. Sondern machst einfach deinen Client wie du ihn brauchst und kannst die Daten dann ganz einfach weiterverarbeiten.

if(json.id == "esp8266-fe23"){ execute_function(blabla); }

Oder du definierst es gleich als Accessories:
So dass jeder Sensor einen type und einen value hat. Wie auch immer.

{ "accessorie": "sensor, "sensor": { "type": "temp", "value": 22.5 } }

Dazu müsse man sich halt Gedanken machen welche Felder required sind etc.

Für einen Sensor z.B:

REQUEST BODY SCHEMA: application/json { accessorie, String, required id, String, required sensor, Object {}, optional type, String, optional value, int, optional }

Nur als kleine Anregung. 🙂
Oder hast du dir schon nähere Gedanken zur Umsetzung gemacht?