mdzio / ccu-historian

Der CCU-Historian erfasst die Betriebsdaten des Hausautomations-Systems HomeMatic der Firma eQ-3.
http://www.ccu-historian.de
GNU General Public License v3.0
121 stars 14 forks source link

Multi-homed CCU-Historian - XmlRpc transport error #369

Open MStrecke opened 1 year ago

MStrecke commented 1 year ago

Wenn der Historian auf einem Rechner läuft, der mehrere IP-Adressen hat, und mehrere Zentralen abfragt, die über diese unterschiedlichen Netze erreichbar sind, kommt bei allen abzufragenden Geräten, die nicht in dem Subnetz liegen, dessen IP der Historian verwendet, zu einem "XmlRpc transport error" (in /var/log/messages im jeweiligen Gerät).

Beispiel: Ein RaspberryMatic im lokalen Netz und ein abgesetzter über ein WireGuard-VPN.

Grund: Der Historian verwendet bei allen Geräten immer die Adresse, die unter devices.historianAddress eingestellt wurde (oder die er selbst ermittelt hat), selbst dann, wenn die IP der abzufragenden Geräte (devices.device1.address, devices.device2.addressusw.) nicht im gleichen Subnetz liegen.

Die abgefragten Geräte erhalten zwar die XmlRpc-Abfrage, aber da diese immer die fest eingestellte IP-Adresse des Historian verwendet, die in einem anderen Subnetz liegen kann (in N-1 der Fälle), kann es nicht antworten. (Der Workaround ist eine fest Route im abgefragten Gerät zum Historian über das bekannte Subnetz).

Sinnvoller wäre es (und das ist meine Anregung), die XmlRpc-Abfrage "subnetz-kompatibel" zu machen, indem der Historian die Abfrage mit seiner IP-Adresse im jeweiligen Subnetz erstellt, z.B. mit Optionen wie devices.device1.historianAddress und devices.device2.historianAddress. Damit weiß das angesprochene Gerät, wie es seine Nachricht zurücksenden kann.

Verwendete Version: CCU-Historian V3.3.0

mdzio commented 1 year ago

Ich werde mir mal anschauen, wie das umgesetzt werden könnte.