Hallo Benni,
noch ein Hinweis:
bei den Registern 40071 bis 40075 hast Du ja 5 Register, die gemeinsam gelesen werden müssen und 4 Readings, die daraus erzeugt werden müssen.
Aus Eurem Wiki-Eintrag:
attr <DEVICE-NAME> obj-h40071-expr $val * (10 ** ReadingsNum ('<DEVICE-NAME>' ,'I_AC_Current_SF',0))
attr <DEVICE-NAME> obj-h40071-reading I_AC_Current
attr <DEVICE-NAME> obj-h40072-expr $val * (10 ** ReadingsNum ('<DEVICE-NAME>' ,'I_AC_Current_SF',0))
attr <DEVICE-NAME> obj-h40072-reading I_AC_CurrentA
attr <DEVICE-NAME> obj-h40073-expr $val * (10 ** ReadingsNum ('<DEVICE-NAME>' ,'I_AC_Current_SF',0))
attr <DEVICE-NAME> obj-h40073-reading I_AC_CurrentB
attr <DEVICE-NAME> obj-h40074-expr $val * (10 ** ReadingsNum ('<DEVICE-NAME>' ,'I_AC_Current_SF',0))
attr <DEVICE-NAME> obj-h40074-reading I_AC_CurrentC
attr <DEVICE-NAME> obj-h40075-reading I_AC_Current_SF
attr <DEVICE-NAME> obj-h40075-unpack s>
um das mit einem Request zu machen würde ich folgendes definieren:
attr <DEVICE-NAME> obj-h40071-reading CurrentBlock
attr <DEVICE-NAME> obj-h40071-len 5
attr <DEVICE-NAME> obj-h40071-unpack nnnns>
attr <DEVICE-NAME> obj-h40071-expr readingsBulkUpdate($hash, 'Current', $val[0] * 10 ** $val[4]); readingsBulkUpdate($hash, 'CurrentA', $val[1] * 10 ** $val[4]); readingsBulkUpdate($hash, 'CurrentB', $val[2] * 10 ** $val[4]); readingsBulkUpdate($hash, 'CurrentC', $val[3] * 10 ** $val[4]); "$val[0] $val[1] $val[2] $val[3] $val[4]"
ich kann leider nicht selbst testen, da ich keine SolarEdge-Anlage habe, aber das Feintuning bekommt Ihr bestimmt hin ;-)
Die Grundidee ist dass man ein Block-Reading definiert, das die 5 Register in einem gemeinsamen Request abfragt, über den Unpack-Code in 5 Werte zerlegt und dann in der expr die Readings berechnet / setzt.
Gruss
Stefan