Hallo,
Ich versuche gerade über zwei FHEM Instanzen eine gemeinsame Kommunikation. Für Module mit Dispatcher soll das ja mit FHEM2FHEM Raw gehen. Soweit so gut.
Einrichten hat geklappt, Kommunikation ist vorhanden und Geräte werden auf Instanz A angelegt welche von Instanz B auf dem das eigentliche IO Device liegt übermittelt werden.
In meinem Fall ist es 73_NUKIBridge.pm auf Instanz B und 74_NUKIDevice.pm auf Instanz A.
Es werden fleißig Zustandsänderungen von Instanz A empfangen. Aber wenn ich nun schalten will klappt das nicht. Ein set Befehl von Instanz A kommt nicht korrekt an Instanz B an. Grund ist hier wohl eine Einschränkung beim IOWrite.
Ich rufe in 74_NUKIDevice IOWrite wie folgt auf
IOWrite( $hash, 'lockAction', $lockAction, $hash->{NUKIID},
$hash->{DEVICETYPE} );
Leider kommt am anderen Ende auf Instanz B in der entsprechenden Fn_Write nur folgendes an
sub Write($@) {
my ( $hash, $endpoint, $param, $nukiId, $deviceType ) = @_;
.....
.....
es kommt $hash an mit Wert, es kommt $endpoint an mit Wert und es kommt $param an mit Wert. Aber alles weitere ist leer.
In einer gemeinsamen Umgebung geht es alles natürlich. Es muss also am RAW Transport liegen. Finde nur nicht wo und wie.
Grüße
Ich bin da ein Schritt weiter gekommen. Anscheinend dürfen keine Leerzeichen enthalten sein. So geht es
IOWrite( $hash, 'lockAction', '{"lockAction":"' . $lockAction . '","nukiId":' . $hash->{NUKIID} . ',"deviceType":' . $hash->{DEVICETYPE} . '}' );
Und ganz wichtig der Datenstring darf keine Leerzeichen besitzen.
Oh Freude es geht nun endlich. Muss zwar das Modul umschreiben aber immer hin spar ich mir das anpassen von Routingtabellen.
Jetzt muss ich nur noch überlegen wie ich Nanoleafe ans rennen bekomme.
Ich meine Leerzeichen darf sein (eigentlich darf alles ausser Newline), nur beim Aufruf von IOWrite darf man nicht mehr als zwei Parameter uebergeben, was eher ein Bug in FHEM2FHEM ist.
Das ist pure Theorie, da ich kein Testsystem zum Verifizieren aufgebaut habe.
Ich habe es ausgiebig getestet gehabt und bin recht sicher das Leerzeichen nicht funktionierten.
Das mit IOWrite nur 2 Parameter trifft aber nur bei FHEM2FHEM zu oder? Denn ich konnte immer mehr Parameter an IOWrite übergeben. Probleme kamen erst durch FHEM2FHEM auf.
ZitatDas mit IOWrite nur 2 Parameter trifft aber nur bei FHEM2FHEM zu [...]?
Ja.