Ich denke nicht, dass es hier um Weisheiten geht. Unser "Disput" dreht sich um was anderes:
Es gibt hier 2 unterschiedliche Dinge in meinen Augen:
1. die direkten Befehle an den Shelly via HTTP oder Shelly.call - hier gibt es weder id im Sinne von Request id (!) noch params.
2. Befehle an einen generischen Endpunkt:
So wie ich das verstehe verwendet Shelly für MQTT Befehle und für den generischen HTTP Endpunkt /rpc die JSON RPC Spezifikation.
Diese legt fest, dass jeder Request eine id als Parameter schickt und der Verarbeiter dieser Nachricht/Request in der Antwort zur Zuordnung diese id wieder angeben muss.
Letztendlich ist es da egal, ob man das für sinnvoll, notwendig oder zwingend hält - es ist eben so definiert für JSON RPC.
Da müssen wir uns nicht einmal einigen. Wenn du es nur mit "kann" akzeptierst und für dich die Aufrufe funktionieren - was mich zwar wundert, weil zumindest laut Spec diese id Pflicht ist, aber vielleicht ist es der Shelly Implementierung auch egal - ist es doch ok.