I'm replying to myself. After reading OpenHAB doc, I managed to have all functionnalities working without changing the Irrigation Controller code.
I cannot put the whole howto here, but basically I created .things and .items files listed here. In addition, I installed the MySensor gateway on the same Raspberry Pi as OpenHAB, connected as an Ethernet gateway. I also installed MapDB persistence, as explained in the documentation.
/etc/openhab2/things/house.things
Bridge mysensors:bridge-eth:gateway [ ipAddress="127.0.0.1", tcpPort=5003, sendDelay=200 ] {
light all_zones "Toutes zones" [ nodeId=1, childId=0 ]
rgbLight zone1 "Zone 1" [ nodeId=1, childId=1 ]
rgbLight zone2 "Zone 2" [ nodeId=1, childId=2 ]
rgbLight zone3 "Zone 3" [ nodeId=1, childId=3 ]
rgbLight zone4 "Zone 4" [ nodeId=1, childId=4 ]
rgbLight zone5 "Zone 5" [ nodeId=1, childId=5 ]
rgbLight zone6 "Zone 6" [ nodeId=1, childId=6 ]
rgbLight zone7 "Zone 7" [ nodeId=1, childId=7 ]
rgbLight zone8 "Zone 8" [ nodeId=1, childId=8 ]
}
/etc/openhab2/items/house.items
Group House
Group Irrigation <water> (House)
Group AllZones <water> (Irrigation)
Group Zone1 <water> (Irrigation)
Group Zone2 <water> (Irrigation)
Group Zone3 <water> (Irrigation)
Group Zone4 <water> (Irrigation)
Group Zone5 <water> (Irrigation)
Group Zone6 <water> (Irrigation)
Group Zone7 <water> (Irrigation)
Group Zone8 <water> (Irrigation)
Switch zone0_s "On/Off" (AllZones) { channel="mysensors:light:gateway:all_zones:status" }
Switch zone1_s "On/Off" (Zone1) { channel="mysensors:rgbLight:gateway:zone1:status" }
Number zone1_1 "Temps toutes zones [%d mn]" (Zone1) { channel="mysensors:rgbLight:gateway:zone1:var1" }
Number zone1_2 "Temps individuel [%d mn]" (Zone1) { channel="mysensors:rgbLight:gateway:zone1:var2" }
String zone1_3 "Nom [%s]" (Zone1) { channel="mysensors:rgbLight:gateway:zone1:var3" }
Switch zone2_s "On/Off" (Zone2) { channel="mysensors:rgbLight:gateway:zone2:status" }
Number zone2_1 "Temps toutes zones [%d mn]" (Zone2) { channel="mysensors:rgbLight:gateway:zone2:var1" }
Number zone2_2 "Temps individuel [%d mn]" (Zone2) { channel="mysensors:rgbLight:gateway:zone2:var2" }
String zone2_3 "Nom [%s]" (Zone2) { channel="mysensors:rgbLight:gateway:zone2:var3" }
Switch zone3_s "On/Off" (Zone3) { channel="mysensors:rgbLight:gateway:zone3:status" }
Number zone3_1 "Temps toutes zones [%d mn]" (Zone3) { channel="mysensors:rgbLight:gateway:zone3:var1" }
Number zone3_2 "Temps individuel [%d mn]" (Zone3) { channel="mysensors:rgbLight:gateway:zone3:var2" }
String zone3_3 "Nom [%s]" (Zone3) { channel="mysensors:rgbLight:gateway:zone3:var3" }
Switch zone4_s "On/Off" (Zone4) { channel="mysensors:rgbLight:gateway:zone4:status" }
Number zone4_1 "Temps toutes zones [%d mn]" (Zone4) { channel="mysensors:rgbLight:gateway:zone4:var1" }
Number zone4_2 "Temps individuel [%d mn]" (Zone4) { channel="mysensors:rgbLight:gateway:zone4:var2" }
String zone4_3 "Nom [%s]" (Zone4) { channel="mysensors:rgbLight:gateway:zone4:var3" }
Switch zone5_s "On/Off" (Zone5) { channel="mysensors:rgbLight:gateway:zone5:status" }
Number zone5_1 "Temps toutes zones [%d mn]" (Zone5) { channel="mysensors:rgbLight:gateway:zone5:var1" }
Number zone5_2 "Temps individuel [%d mn]" (Zone5) { channel="mysensors:rgbLight:gateway:zone5:var2" }
String zone5_3 "Nom [%s]" (Zone5) { channel="mysensors:rgbLight:gateway:zone5:var3" }
Switch zone6_s "On/Off" (Zone6) { channel="mysensors:rgbLight:gateway:zone6:status" }
Number zone6_1 "Temps toutes zones [%d mn]" (Zone6) { channel="mysensors:rgbLight:gateway:zone6:var1" }
Number zone6_2 "Temps individuel [%d mn]" (Zone6) { channel="mysensors:rgbLight:gateway:zone6:var2" }
String zone6_3 "Nom [%s]" (Zone6) { channel="mysensors:rgbLight:gateway:zone6:var3" }
Switch zone7_s "On/Off" (Zone7) { channel="mysensors:rgbLight:gateway:zone7:status" }
Number zone7_1 "Temps toutes zones [%d mn]" (Zone7) { channel="mysensors:rgbLight:gateway:zone7:var1" }
Number zone7_2 "Temps individuel [%d mn]" (Zone7) { channel="mysensors:rgbLight:gateway:zone7:var2" }
String zone7_3 "Nom [%s]" (Zone7) { channel="mysensors:rgbLight:gateway:zone7:var3" }
Switch zone8_s "On/Off" (Zone8) { channel="mysensors:rgbLight:gateway:zone8:status" }
Number zone8_1 "Temps toutes zones [%d mn]" (Zone8) { channel="mysensors:rgbLight:gateway:zone8:var1" }
Number zone8_2 "Temps individuel [%d mn]" (Zone8) { channel="mysensors:rgbLight:gateway:zone8:var2" }
String zone8_3 "Nom [%s]"
Note the "trick" is to use rgbLight item type instead of light item type, to have Var1..3 available. Look here: https://github.com/tobof/openhab2-addons/blob/MySensors_Binding/addons/binding/org.openhab.binding.mysensors/ESH-INF/thing/thing-types.xml
Now I have a fully fonctionnal Irrigation Controller, all integrated with OpenHAB