Ich möchte erkannte Bewegung eines KNX-PM als rrd darstellen. Grundsätzlich funktioniert es, aber bei genauerer Betrachtung nicht zuverlässig.
Things, Items und Rule:
Ein zusammenkopiertes Log, was jeweils die KNX-Message (anderes System), Events und Ausgabe aus Rule enthält:
Man erkennt zwei Probleme:
1. Bei Aufruf der Rule ist der state noch der alte (Block 3). Das ist ein bekanntes Problem bei "receive command" (the Rule might trigger before the Item's state is updated), was man mittels receivedCommand umgeht. Aber gilt das gleiche für "receive update"? Und wie ist die Lösung?
2. das postUpdate in der Rule bewirkt keine Änderung, obwohl der übergebene Wert ein anderer ist als der zuvor (Block 5).
Sicher gibt es dafür eine Erklärung, nur habe ich sie noch nicht gefunden.
Viele Grüße, Manuel
Things, Items und Rule:
Code:
Thing device PM_1_1_54 "PM 1.1.54" [
] {
Type number : PM_DG_Beweg "PM DG Bewegung" [ga="1.006:<7/3/10"]
}
Number PM_DG_Beweg "PM DG Bewegung" { channel="knx:device:bridge:PM_1_1_54:PM_DG_Beweg" }
Number PM_DG_Beweg_Ofs "PM DG Bewgung mit Offset"
rule "PM_DG"
when Item PM_DG_Beweg received update
then
{
var Number bewoffset = (PM_DG_Beweg.state as Number) + 2.4
logInfo("Manuel","PM_DG: " + (PM_DG_Beweg.state as Number))
PM_DG_Beweg_Ofs.postUpdate(bewoffset)
}
end
Code:
2021-06-05 20:32:25.647,A_GroupValue_Write,1.1.54,7/3/10,00,,,,0,low,6,T_DATA_XXX_REQ,0 2021-06-05 20:32:25.635 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'PM_DG_Beweg' changed from 1 to 0 2021-06-05 20:32:25.640 [INFO ] [org.openhab.core.model.script.Manuel] - PM_DG: 0 2021-06-05 20:32:25.645 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'PM_DG_Beweg_Ofs' changed from 3.4 to 2.4 2021-06-05 22:16:55.869,A_GroupValue_Write,1.1.54,7/3/10,01,,,,0,low,6,T_DATA_XXX_REQ,0 2021-06-05 22:16:55.865 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'PM_DG_Beweg' changed from 0 to 1 2021-06-05 22:16:55.868 [INFO ] [org.openhab.core.model.script.Manuel] - PM_DG: 1 2021-06-05 22:16:55.873 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'PM_DG_Beweg_Ofs' changed from 2.4 to 3.4 2021-06-05 22:27:05.784,A_GroupValue_Write,1.1.54,7/3/10,00,,,,0,low,6,T_DATA_XXX_REQ,0 2021-06-05 22:27:05.782 [INFO ] [org.openhab.core.model.script.Manuel] - PM_DG: 1 2021-06-05 22:27:05.784 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'PM_DG_Beweg' changed from 1 to 0 2021-06-06 08:58:41.194,A_GroupValue_Write,1.1.54,7/3/10,01,,,,0,low,6,T_DATA_XXX_REQ,0 2021-06-06 08:58:41.191 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'PM_DG_Beweg' changed from 0 to 1 2021-06-06 08:58:41.195 [INFO ] [org.openhab.core.model.script.Manuel] - PM_DG: 1 2021-06-06 09:08:50.121,A_GroupValue_Write,1.1.54,7/3/10,00,,,,0,low,6,T_DATA_XXX_REQ,0 2021-06-06 09:08:50.122 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'PM_DG_Beweg' changed from 1 to 0 2021-06-06 09:08:50.122 [INFO ] [org.openhab.core.model.script.Manuel] - PM_DG: 0 2021-06-06 09:44:20.851,A_GroupValue_Write,1.1.54,7/3/10,01,,,,0,low,6,T_DATA_XXX_REQ,0 2021-06-06 09:44:20.849 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'PM_DG_Beweg' changed from 0 to 1 2021-06-06 09:44:20.853 [INFO ] [org.openhab.core.model.script.Manuel] - PM_DG: 1 2021-06-06 09:54:30.768,A_GroupValue_Write,1.1.54,7/3/10,00,,,,0,low,6,T_DATA_XXX_REQ,0 2021-06-06 09:54:30.770 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'PM_DG_Beweg' changed from 1 to 0 2021-06-06 09:54:30.770 [INFO ] [org.openhab.core.model.script.Manuel] - PM_DG: 0 2021-06-06 09:54:30.780 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'PM_DG_Beweg_Ofs' changed from 3.4 to 2.4 2021-06-06 10:25:50.908,A_GroupValue_Write,1.1.54,7/3/10,01,,,,0,low,6,T_DATA_XXX_REQ,0 2021-06-06 10:25:50.905 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'PM_DG_Beweg' changed from 0 to 1 2021-06-06 10:25:50.907 [INFO ] [org.openhab.core.model.script.Manuel] - PM_DG: 1 2021-06-06 10:25:50.914 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'PM_DG_Beweg_Ofs' changed from 2.4 to 3.4 2021-06-06 10:36:00.464,A_GroupValue_Write,1.1.54,7/3/10,00,,,,0,low,6,T_DATA_XXX_REQ,0 2021-06-06 10:36:00.463 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'PM_DG_Beweg' changed from 1 to 0 2021-06-06 10:36:00.463 [INFO ] [org.openhab.core.model.script.Manuel] - PM_DG: 0 2021-06-06 10:36:00.469 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'PM_DG_Beweg_Ofs' changed from 3.4 to 2.4 2021-06-06 10:47:30.410,A_GroupValue_Write,1.1.54,7/3/10,01,,,,0,low,6,T_DATA_XXX_REQ,0 2021-06-06 10:47:30.406 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'PM_DG_Beweg' changed from 0 to 1 2021-06-06 10:47:30.409 [INFO ] [org.openhab.core.model.script.Manuel] - PM_DG: 1 2021-06-06 10:47:30.414 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'PM_DG_Beweg_Ofs' changed from 2.4 to 3.4
1. Bei Aufruf der Rule ist der state noch der alte (Block 3). Das ist ein bekanntes Problem bei "receive command" (the Rule might trigger before the Item's state is updated), was man mittels receivedCommand umgeht. Aber gilt das gleiche für "receive update"? Und wie ist die Lösung?
2. das postUpdate in der Rule bewirkt keine Änderung, obwohl der übergebene Wert ein anderer ist als der zuvor (Block 5).
Sicher gibt es dafür eine Erklärung, nur habe ich sie noch nicht gefunden.

Viele Grüße, Manuel


) sollte das Problem auch komplett ohne Rules lösbar sein, und zwar mit Profiles. Du definierst den Channel tatsächlich als Number (mindestens in OH3 ginge es aber auch mit Switch, dann müsstest Du beim Link auf das Number Item noch zusätzlich ein Mapping von ON auf 1 und OFF auf 0 vornehmen)
Kommentar