Wow, danke hydralein das beantwortet meine Fragen und ich habe wieder was gelernt. MQTT ist mir im Smarthome-Bereich schon mehrfach begegnet, aber bislang sah ich keinen Grund mich damit mal näher zu beschäftigen.
Für alle die es interessiert, sich aber nicht durch die Dokumentation wühlen wollen oder denen das alles zu kompliziert ist, versuche ich mich mal an einer kurzen und einfach verständlichen Zusammenfassung:
Im Prinzip war mein Gedanke mit dem Ausruf des Autos „hier ist meine Adresse, darüber kannst du mich erreichen“ gar nicht so falsch. Allerdings sprechen wir hier nicht von einer klassischen Client-Server-Kommunikation bei der eine Verbindung hergestellt, eine Anfrage gesendet, diese beantwortet und damit die Verbindung wieder beendet wird. Eine solche Kommunikation ist „stateless“. Das heißt, jede Anfrage ist neu und kennt keine der vorherigen Anfragen - in etwa so wie Siri, die sich auch nicht mehr erinnern kann, worüber wir vorher gerade noch gesprochen haben.
Bei MQTT werden die Teilnehmer, die miteinander sprechen, nicht in Clients und Server unterteilt, sondern in Clients und Broker. Wichtiger Unterschied: jeder Client kann sowohl Anfragen senden, als auch beantworten, wenn er sich dafür zuständig fühlt. Und der Broker ist „nur“ dafür da, um zwischen den Clients zu vermitteln. Diese sprechen also niemals direkt miteinander. Natürlich macht der Broker noch bisschen mehr, z.B. die Authentifizierung, sodass auch nur Clients miteinander sprechen, die das auch dürfen.
Genau das brauchen wir in unserem Fall ja: das Auto ist nach klassischer Denkweise sowohl Client als auch Server, stellt also Anfragen genauso wie es Anfragen beantwortet. MQTT bricht das auf und erlaubt allen Clients beides.
Jetzt nochmal kurz zu meiner ursprünglichen Frage: wie finden sich die Clients und der Broker? Antwort: die Clients melden sich am Broker an. Daher muss nur der Broker im öffentlichen Netz erreichbar sein. Das Auto stellt eine Verbindung her und diese bleibt anschließend für weitere Kommunikation offen. Wird die Verbindung unterbrochen, kann sie später wieder hergestellt und an die vorige Sitzung angeknüpft werden. Ich nehme an, dass dies bspw. dann erfolgt, wenn das Auto über WLAN eine Verbindung ins Internet herstellt. Dann dürfte dies die „primäre“ Internetverbindung sein. Das Auto meldet sich danach einfach wieder beim Broker und die Kommunikation wird fortgesetzt. Der Verbindungsaufbau geht also immer vom Auto aus und dem Broker ist es egal, ob das Auto per 4G oder WLAN ins Internet gekommen ist. Genauso ist es ja auch bei der App auf dem Handy. Das Handy kann in einem WLAN sein oder im Mobilfunknetz und meldet sich genauso beim Broker an. Damit ist auch die Frage beantwortet, ob eine lokale Kommunikation möglich ist: ist sie nicht, da alles immer über den Broker abgewickelt wird, und die Teilnehmer niemals direkt miteinander sprechen.
Steht das Auto in einer Tiefgarage ohne 4G-Empfang wäre eine Verbindung ins Internet (zum Broker) per WLAN problemlos möglich. Leider deaktiviert Smart das WLAN- Modul im Tiefschlaf, sodass in Folge solange keine Kommunikation mit dem Auto mehr möglich ist, bis es sich wieder am Broker anmeldet. Grund dafür dürfte der Energieverbrauch der erforderlichen Komponenten sein. Wenn das der einzige Grund ist, ließe sich das zukünftig sicher per Software-Update ändern: eine Option das WLAN dauerhaft aktiv zu lassen wenn der SoC > x% ist.