NEWS
[gelöst]Objektdaten von einer Instanz in die andere kopieren
-
Hallo,
ich müsste von einer Modbus Instanz die Daten verschiedener Objekte in eine zweite Modbus Instanz kopieren.on('modbus.0.inputRegisters.2.30001_L1-N'/*30001 L1-n*/, function(){ setState('modbus.1.inputRegisters.30001_L1'/*30001 L1*/, getState('modbus.0.inputRegisters.2.30001_L1-N').val); });
So funktioniert das zwar, aber ich müsste das 76 Mal machen. Geht das nicht einfacher?
Die Register fangen bei 30001 an bis 30381, leider nicht in 2er Schritten wie ich gehofft habe. Es sind immer mal wieder größere Sprünge drin z.B. 30269 dann kommt 30335Kann ich das einfacher lösen mit javascript?
-
@coyote sagte: Geht das nicht einfacher?
Problem: Die IDs unterscheiden sich nicht nur in der Instanz, sondern auch am Ende. Ist der Unterschied am Ende immer identisch?
-
@paul53 das wäre kein Problem, das hier war nur zum Testen. Das könnte ich schon abgleichen. So dann:
on('modbus.0.inputRegisters.2.30001_L1-N', function(){ setState('modbus.1.inputRegisters.30001_L1-N', getState('modbus.0.inputRegisters.2.30001_L1-N').val); });
-
@coyote sagte: Kann ich das einfacher lösen mit javascript?
Mittels RegExp:
on(/^modbus\.0\.inputRegisters\.2\.30.+/, function(dp) { let idDst = dp.id.replace('modbus.0.inputRegisters.2', 'modbus.1.inputRegisters'); setState(idDst, dp.state.val); });
-
@paul53 wie immer ein Dank an Dich. Musste es nur etwas korrigieren, da in der zweiten Instanz der Unterordner "2" nicht vorhanden ist. Das ist die ID des Modbus Gerätes und das hab ich in der zweiten Instanz nicht, da Slave.
on(/^modbus\.0\.inputRegisters\.2\.30.+/, function(dp) { let idDst = dp.id.replace('modbus.0.inputRegisters.2', 'modbus.1.inputRegisters'); setState(idDst, dp.state.val); });
-
@coyote sagte: korrigieren, da in der zweiten Instanz der Unterordner "2" nicht vorhanden ist.
Das hatte ich inzwischen auch registriert und korrigiert.
-
@paul53 hatte ich nicht gesehen. Danke Dir