FHEM2FHEM RAW IOWrite

Begonnen von CoolTux, 11 November 2021, 11:26:11

Vorheriges Thema - Nächstes Thema

CoolTux

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
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

CoolTux

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.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

CoolTux

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.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

rudolfkoenig

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.

CoolTux

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.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

rudolfkoenig

ZitatDas mit IOWrite nur 2 Parameter trifft aber nur bei FHEM2FHEM zu [...]?
Ja.