Folglich sind im Homematic Manager dann unter Verknüpfungen zwei identische Zeilen zu sehen. Lösche ich dann eine der beiden Direktverbindungen, dann verschwinden die beiden identischen Zeilen.
Also die doppelten Einträge in der Ausgabe der Funktion getLinks() ergeben sich wie beschrieben mit addLink ("QEQxxxxxxx:1", "QEQxxxxxxx:16") nur dann, wenn Senderkanal- und Empfängerkanal der Direktverknüpfung am selben Gerät liegen.
Erzeuge ich eine Diektverknüpfung zwischen zwei unterschiedlichen Geräten mit addLink ("PEQxxxxxxx:1","QEQxxxxxxx:13) dann wird richtigerweise nur ein Eintrag erzeugt und homegear -e rc 'print_v($hg->getLinks());' liefert folgendes zurück:
letzteres ist der entscheidende Hinweis: Das Ganze passiert nur, wenn Sender und Empfänger das gleiche Gerät sind. Das Problem sollte im nächsten Nightly gefixt sein. Könntest du es damit noch einmal probieren? Die Verknüpfung muss dafür neu angelegt werden - bestehende Verknüpfungen bleiben unberührt.
vielen Dank für Deine Unterstützung. Habe jetzt die aktuelle Nightly (version: 0.8.0-2934) installiert und es funktioniert jetzt alles, so wie vorgesehen:
addLink ("QEQxxxxxxx:1", "QEQxxxxxxx:16")
liefert bei Abfage mit homegear -e rc 'print_v($hg->getLinks());' nur mehr einen einzigen Eintrag wie folgt zurück:
Wenn ich die aktuelle Nightly verwende, werden die Links zwar richtig angelegt, die Direktverknüpfung funktioniert dann aber gar nicht mehr und im Homematic Manager findet beim Bearbeiten der Direktverknüpfung die RPC Funktion getParamset den Link nicht mehr.
Wenn ich nun im Sourcecode von HMWiredCentral.cpp die Abfrage:
if (sender->getID() != receiver->getID()) //Don't add link twice when sender and receiver are the same
aus der Abfrage if(!receiverLinked) herausnehme und diese sinngemäß gleich oberhalb unter if(!senderLinked) einfüge, dann funktioniert die Direktverknüpfung wie gewünscht.
Allerdings kann ich dann die Direktverknüpfung mit dem Homematic Manager nicht mehr bearbeiten, da die RPC Funktion GetLinkInfo den Link nicht findet.
Mir scheint das Problem kommt daher, dass beim Bearbeiten einer Direktverküpfung am selben Gerät einerseits die RPC Funktion getParamset("RECEIVER:RECEIVERCHANNEL","SENDER:SENDERCHANNEL" und die RPC Funktion
getLinkInfo("SENDER:SENDERCHANNEL","RECEIVER:RECEIVERCHANNEL") benötigt werden, welche dann im Falle der Änderung in der aktuellen Nightly offensichtlich nicht mehr richtig funktionieren.
Noch ein Gedanke dazu…
Vielleicht liegt das Problem aber gar nicht an der Funktion addLink in HMWiredCentral.cpp, sondern in der Implementierung der RPC Funktion getLinks, welche Direktverknüpfungen am selben Gerät einfach nur falsch auswertet und diese dann doppelt zurück liefert.
das Problem lag, wie du richtig angemerkt hast, in getLinks(). Sehr gut erkannt!!! Die Prüfung nach doppelten Einträgen wurde nur ausgeführt, wenn sich die Peers unterschieden haben. Könntest du noch einmal das nächste Nightly testen?
Hallo @sathya,
klar werde ich das testen. DieÄnderungen in HMWiredCentral.cpp wurden bereits zurück genommen und die erforderlichen Änderungen in getLinks() wurden bereits vorgenommen. Danke!
habe die erforderlichen Änderungen in der Funktion Peer:getLinks() in der Datei src/Systems/Peer.cpp im heruntergeladenen Quellcode vom Paket libhomegear-base der current stable version 0.7.45-3101 eingepflegt und daraus lokal mit apt-get source -b libhomegear-base das Paket gebaut und mit sudo dpkg -i libhomegear-base_0.7.45-3101_armhf.deb installiert. Was soll ich sagen… Bin begeistert, nun funktioniert es tatsächlich genauso wie vorgesehen. Danke! Ich denke, das Thema kann geschlossen werden.