Deine Frage ist zwar schon eine Weile her, ich versuche trotzdem mal auf die verschiedenen Punkte einzugehen, vielleicht hilft Dir das noch weiter.
Eine Kompatibilitätsliste gibt es nicht, da Du aktuell selbst für die Anbindung verantwortlich bist. Das Prinzip hatte ich in der einleitenden Dokumentation mal erläutert.
Ausnahmen sind die vom Akkudoktor verfügbaren oder in EOS direkt konfigurierbaren Prediction Provider für Wetter (BrightSky, ClearOutside), Solar/PV (Akkudoktor), Strompreise (Akkudoktor, Energy Charts).
Du kannst aber jeden beliebigen Anbieter anbinden, indem Du die Integration zwischen dessen API und EOS erstellst. Einen Teil davon kann auch HA für Dich übernehmen, indem Du deinen Anbieter dort mittels einer HA-Integration anbindest und die Daten aus den Entitäten an EOS übergibst. Oder Du verwendest dafür ganz oder teilweise Node-RED. So hole ich mir die Strompreisvorhersage beispielsweise für meine Home ID direkt über die API von Tibber mittels Node-RED. Die Strompreise, bzw. genauer gesagt die Gebühren, sind übrigens abhängig von Deinem Netzbetreiber.
Andere Geräte, wie Dein Shelly 3EMpro, Deine SG-Ready Waschmaschine oder die KEBA Wallbox würdest Du ebenfalls über HA-Entitäten und einer Integration via Node-RED anbinden. Am Ende musst Du ein JSON-Objekt in dem Format erstellen, wie es EOS voraussetzt oder eine Kombination aus Konfiguration für die Prediction Provider und den grundlegende Anlagendaten sowie ein JSON-Objekt für aktuelle Daten.
Das Gleiche gilt dann auch für den Wechselrichter. Der muss dann eine Schnittstelle in irgendeiner Form bieten, über die Du ihn anweisen kannst, den Lade-/Entladestrom für die Batterie einzustellen oder verschiedene Betriebsmodi zu aktivieren, z.B. Laden aus dem Netz. Bei mir ist das z.B. ein Sungrow SH10RT, den ich lokal über die Modus-Integration in HA eingebunden habe. Er sendet zwar auch Daten über die zweite Schnittstelle in die Cloud, muss man aber nicht nutzen, geht auch alles lokal, nur dann halt ohne Support eines Installateurs.
EOS erstellt mittels der erhaltenen Daten einen optimierten Steuerungsplan und Du bist dann wieder dafür zuständig, diesen Plan in eine Orchestrierung Deiner Komponenten durch Ansteuerung entweder von HA-Entitäten oder direkter Anbindung via z.B. Node-RED umzusetzen.