How many devices are we talking about? Or is it just multiple of the PM2?
I also can do personal support via phone and screen sharing. I am sure I could get you up and running in no time for less than new devices. Send me a PM if interested. (Unofficial, I do not work for Hubitat)
Just thought of something, since it is going by IP you should go into your router and set that device as a fixed or assigned IP. Not sure what your router will call it but you are setting a DHCP reservation for the IP so if that device disconnects (like if a power outage) it always get the same IP.
If that means you set the device itself to a static IP, just be warned that if that IP is within the DHCP pool of the router, there is a small chance the router could hand that IP out to some other device when the Shelly is offline, and then you would have an IP conflict when it comes back online.
I would use the built in "Button Controller" app. It lets you easily make rules based around different button presses. Under the hood it uses the Rule Machine engine. Button Controller 5.1 | Hubitat Documentation
If you want something more basic there is also a "Basic" button controller which is more in line with the style of the basic rules app.
So using that you can set up button presses to do different actions on the shelly device, depending on what commands are available.
Button held is an option in Button Controller to setup, assuming your device sends those events. The shelly driver would need to implement Start and Stop PositionChange (or LevelChange) commands. You would set th "Held" to start start then "Release" to the Stop command. This would make it move when held. If you want it to cycle between going up and down with the same button you would need to add some logic in there to track which it did last and then have it switch back and forth each button hold.
Opening to a predefined value should be possible as well, but what would be triggering it? If it is a button then instead of using th "open" command, use the Set Position (or setLevel) instead, and set a value to open to.
The mapping of shelly device input events to hubitat input events (button attributes) can be found here
Single, double, triple and long press are supported. So there is an option to map double and triple push to some predefined positions.
More sophisticated behavior can also be achieved with custom shelly scripts. The driver supports interaction with shelly scripts and getting some feedback from them.
Example of "run once" shelly script to set specific position (can be run each time 'child_script->on' button is pressed)
Shelly.call("Cover.GoToPosition", { id: 0, pos: 50 }, function (result, error_code, error_message) { die(); } );
For plus devices up to 10 scripts are available. So up to 10 presets can be used this way.