@blackforst sagte: Ch0 sind die Werte des Wechselrichters
Also "ch1" bis "ch4"?
Ohne das kleine "i" in der Ziel-ID wäre es sehr einfach mit einem $-Selektor und replace():
const idsSrc = $('mqtt.0.inverter.HM1500.ch*');
idsSrc.on(function(dp) {
if(!dp.id.includes('.ch0.')) {
let idDst = dp.id.replace('mqtt.0.inverter.HM1500.ch', 'beckhoff.0.plc.GVL_iobroker.stPhotovoltaik.stPhotoZelle');
setState(idDst, dp.state.val);
}
});
Mit dem kleinen "i" erstelle zwei Arrays mit je 24 Datenpunkt-IDs in gleicher Reihenfolge.
EDIT: Oder verwende für jedes Panel einen eigenen Trigger:
$('mqtt.0.inverter.HM1500.ch1.*').on(function(dp) {
let idDst = dp.id.replace('mqtt.0.inverter.HM1500.ch1.', 'beckhoff.0.plc.GVL_iobroker.stPhotovoltaik.stPhotoZelle1.i');
setState(idDst, dp.state.val);
});
$('mqtt.0.inverter.HM1500.ch2.*').on(function(dp) {
let idDst = dp.id.replace('mqtt.0.inverter.HM1500.ch2.', 'beckhoff.0.plc.GVL_iobroker.stPhotovoltaik.stPhotoZelle2.i');
setState(idDst, dp.state.val);
});
$('mqtt.0.inverter.HM1500.ch3.*').on(function(dp) {
let idDst = dp.id.replace('mqtt.0.inverter.HM1500.ch3.', 'beckhoff.0.plc.GVL_iobroker.stPhotovoltaik.stPhotoZelle3.i');
setState(idDst, dp.state.val);
});
$('mqtt.0.inverter.HM1500.ch4.*').on(function(dp) {
let idDst = dp.id.replace('mqtt.0.inverter.HM1500.ch4.', 'beckhoff.0.plc.GVL_iobroker.stPhotovoltaik.stPhotoZelle4.i');
setState(idDst, dp.state.val);
});