IO Bitmaske aus Dezimalwert nutzen für postUpdate von Contacts
Verfasst: 4. Jan 2024 21:30
Hallo zusammen.
Lese hier schon viele Jahre still mit und bedanke mich für Eure Ratschläge und Tipps, welche oft zum Erfolg geführt haben. Jetzt hängt es bei einer Rule.
Es kommt die Fehlermeldung:
Das Item wird mit einem dreiteiligen Payload gefüttert der den Status eines IOs mit 16 Kanälen widerspiegelt.
Der payload ist:
port – Type: char, Range: [“a” to “b”]
interrupt_mask – Type: int, Range: [0 to 255]
value_mask – Type: int, Range: [0 to 255]
Z.B. meint a 1 255 (a 00000001, 11111111) dass an Port A ein interrupt an Pin 0 aufgetreten ist und der Pin 0 hat sich von low auf high geändert und die anderen pins 1-7 sind high.
Die Regel soll eigentlich die 16 Kanläe in den Status von contact items überführen. Aber hänge schon beim Umrechnen in den Binärwert
Lese hier schon viele Jahre still mit und bedanke mich für Eure Ratschläge und Tipps, welche oft zum Erfolg geführt haben. Jetzt hängt es bei einer Rule.
Code: Alles auswählen
import java.math.BigInteger
rule "lightstatusviamqtt"
when Item tinkerforge_37_callback_io16_bricklet_ESS changed
then
val port = transform("JSONPATH", "$.port", tinkerforge_37_callback_io16_bricklet_ESS.state.toString)
val interrupt_mask =transform("JSONPATH", "$.interrupt_mask", tinkerforge_37_callback_io16_bricklet_ESS.state.toString)
val value_mask =transform("JSONPATH", "$.value_mask", tinkerforge_37_callback_io16_bricklet_ESS.state.toString)
logInfo("ESSlog", "Port ist " + port)
logInfo("ESSlog", "Interrupt Maske ist " + interrupt_mask)
logInfo("ESSlog", "Value Maske ist " + value_mask)
if (port == "a")
logInfo("ESSlog", "if Schleife a")
var interrupt_binary = interrupt_mask.toString().toBinaryString()
logInfo("ESSlog", "Interrupt Binary ist " + interrupt_binary)
end
Code: Alles auswählen
'toBinaryString' is not a member of 'java.lang.String"
Der payload ist:
port – Type: char, Range: [“a” to “b”]
interrupt_mask – Type: int, Range: [0 to 255]
value_mask – Type: int, Range: [0 to 255]
Z.B. meint a 1 255 (a 00000001, 11111111) dass an Port A ein interrupt an Pin 0 aufgetreten ist und der Pin 0 hat sich von low auf high geändert und die anderen pins 1-7 sind high.
Die Regel soll eigentlich die 16 Kanläe in den Status von contact items überführen. Aber hänge schon beim Umrechnen in den Binärwert
