@Johan_Thomas to complete my answer, here an my definition example :
ipx800.things
Thing gce:ipx800v3:ipx "IPX800" @ "Chaufferie" [hostname="192.168.0.244", portNumber=9870] {
Channels:
Type digitalInput : I#1 [ // Aimant Détection porte de garage ouverte
debouncePeriod=2500,
pulsePeriod=1000,
pulseTimeout=60000
]
Type digitalInput : I#2 [ // Aimant Détection porte de garage fermée
debouncePeriod=2500
]
Type digitalInput : I#3 [ // Bouton poussoir potelets jardin
]
Type digitalInput : I#4 [ // Bouton poussoir lumière porche facade maison
]
Type digitalInput : I#5 [ // Bouton poussoir couloir RdC
]
Type digitalInput : I#8 [ // Contacteur NA Plug Chaudière
]
Type digitalOutput : O#3 [ // Chaudière
]
Type digitalOutput : O#4 [ // Lumière porche
]
Type digitalOutput : O#5 [ // Lumière potelets
]
Type digitalOutput : O#6 [ // Lumière couloir
]
Type digitalOutput : O#8 [ // Actionneur porte de garage
pulse=true
]
}
ipx800.items
Group gIPX800 "IPX 800 v3" (gBindings, gChaufferie)
Group gIPXInputs "Entrées" <input> (gIPX800)
Contact input1 "Porte garage ouverte [%s]" <none> (gIPXInputs, gPorteGarage, gSensorDoor) {channel="gce:ipx800v3:ipx:I#1",
channel="glh:vgaragedoor:rollo:opened" [profile="follow"]}
DateTime input1_LUD "LUD ouverture [%1$ta %1$td-%1$tm-%1$ty %1$tH:%1$tM]" <calendar> (gIPXInputs, gPorteGarage, gSensorTST) {channel="gce:ipx800v3:ipx:I#1" [profile="timestamp-update"]}
Number:Time input1_Dur "Last State Duration [%d] s" <clock> (gIPXInputs, gPorteGarage, gSensorCounter) {channel="gce:ipx800v3:ipx:I#1-duration"}
Contact input2 "Porte garage fermée [%s]" <none> (gIPXInputs, gPorteGarage, gSensorDoor) {channel="gce:ipx800v3:ipx:I#2",
channel="glh:vgaragedoor:rollo:closed" [profile="follow"]}
DateTime input2_LUD "LUD fermeture [%1$ta %1$td-%1$tm-%1$ty %1$tH:%1$tM]" <calendar> (gIPXInputs, gPorteGarage, gSensorTST) {channel="gce:ipx800v3:ipx:I#2" [profile="timestamp-update"]}
Number:Time input2_Dur "Last State Duration [%d] s" <clock> (gIPXInputs, gPorteGarage, gSensorCounter) {channel="gce:ipx800v3:ipx:I#2-duration"}
Contact input3 "Poussoir Potelets [%s]" <wallswitch> (gIPXInputs, gPotelets) {channel="gce:ipx800v3:ipx:I#3"}
DateTime input3_LUD "LUD Potelets [%1$ta %1$td-%1$tm-%1$ty %1$tH:%1$tM]" <calendar> (gIPXInputs, gPotelets, gSensorTST) {channel="gce:ipx800v3:ipx:I#3" [profile="timestamp-update"]}
Contact input4 "Poussoir Porche [%s]" <wallswitch> (gIPXInputs, gLumierePorche) {channel="gce:ipx800v3:ipx:I#4"}
DateTime input4_LUD "LUD Porche [%1$ta %1$td-%1$tm-%1$ty %1$tH:%1$tM]" <calendar> (gIPXInputs, gLumierePorche, gSensorTST) {channel="gce:ipx800v3:ipx:I#4" [profile="timestamp-update"]}
Contact input5 "Poussoir Couloir RdC [%s]" <wallswitch> (gIPXInputs, gLumiereCouloir) {channel="gce:ipx800v3:ipx:I#5"}
DateTime input5_LUD "LUD Lumière Couloir [%1$ta %1$td-%1$tm-%1$ty %1$tH:%1$tM]" <calendar> (gIPXInputs, gLumiereCouloir, gSensorTST) {channel="gce:ipx800v3:ipx:I#5" [profile="timestamp-update"]}
Contact input8 "NA Plug Chaudière [%s]" <none> (gIPXInputs, gChaudiere) {channel="gce:ipx800v3:ipx:I#8"}
DateTime input8_LUD "LUD NA Plug [%1$ta %1$td-%1$tm-%1$ty %1$tH:%1$tM]" <calendar> (gIPXInputs, gChaudiere, gSensorTST) {channel="gce:ipx800v3:ipx:I#8" [profile="timestamp-update"]}
Number:Time input8_Dur "Last State Duration [%d] s" <clock> (gIPXInputs, gChaudiere, gSensorCounter) {channel="gce:ipx800v3:ipx:I#8-duration"}
Group gIPXOutputs "Sorties" <output> (gIPX800)
Switch output3 "Chaudière" <chaudiere> (gIPXOutputs, gChaudiere) {channel="gce:ipx800v3:ipx:O#3"}
Switch output4 "Lumière Porche" <light> (gIPXOutputs, gLumierePorche) {channel="gce:ipx800v3:ipx:O#4"}
Switch output5 "Lumière Potelets" <light> (gIPXOutputs, gPotelets) {channel="gce:ipx800v3:ipx:O#5"}
Switch output6 "Lumière Couloir" <light> (gIPXOutputs, gLumiereCouloir) {channel="gce:ipx800v3:ipx:O#6", autoupdate="false", expire="300s,command=OFF" }
Switch output8 "Actionner Porte de garage"