Shelly Binding

looks good from this side, nothing obvious missing.

Does it make sense to upgrade to 2.5M2? M2 is based on the new build system with a lot of changes. M1 is more 2.4-like so running the binding’s 2.5 build on this version is not really a proper proof.

Please copy the log with the binding’s 2.5 build (use code fence, last icon in the icon bar when composing a message here, before the settings icon)

How can I make that log with the binding’s 2.5 build? also you propose to update to 2.5M2? which repo can I use?

2.5.0M2 is available here:
https://www.openhab.org/download/ (switch the selection from 2.4 stable to 2.5M2)
You should do a backup of you running environment.

@hmerk Do you know the timeline for M3?

When I want to update why I receive this error message?

pi@raspberrypi:/usr/share/openhab2/runtime/bin $ sudo apt-get update && sudo apt-get upgrade
Get:1 http://archive.raspberrypi.org/debian stretch InRelease [25.4 kB]
Hit:2 http://raspbian.raspberrypi.org/raspbian stretch InRelease
Hit:3 http://repozytorium.mati75.eu/raspbian jessie-backports InRelease
Ign:4 http://repos.azulsystems.com/debian stable InRelease
Hit:5 http://repos.azulsystems.com/debian stable Release
Hit:6 https://repo.mosquitto.org/debian jessie InRelease
Ign:7 https://dl.bintray.com/openhab/apt-repo2 stable InRelease
Hit:8 https://deb.nodesource.com/node_8.x stretch InRelease
Hit:9 https://repo.mosquitto.org/debian stretch InRelease
Get:10 https://dl.bintray.com/openhab/apt-repo2 stable Release [6051 B]
Hit:10 https://dl.bintray.com/openhab/apt-repo2 stable Release
Ign:11 https://dl.bintray.com/openhab/apt-repo2 stable Release.gpg
Fetched 25.4 kB in 2s (8653 B/s)
Reading package lists… Done
W: The repository ‘https://dl.bintray.com/openhab/apt-repo2 stable Release’ is not signed.
N: Data from such a repository can’t be authenticated and is therefore potentially dangerous to use.
N: See apt-secure(8) manpage for repository creation and user configuration details.
Reading package lists… Done
Building dependency tree
Reading state information… Done
Calculating upgrade… Done
The following packages have been kept back:
mosquitto
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.
pi@raspberrypi:/usr/share/openhab2/runtime/bin $

Should be monthly, so might be beginning of September.

This is your issue, you need to update your source list to fetch jfrog.

For 2.5 Milestone2 you need to switch to testing.

I updated to 2.5.0~S1669-1 and still not working… I still don’t see the shelly binding in bundle:list… What can I do?

Please try the build from the snapshot branch. I added various checks on initialization to narrow the problem and some more details on the bundle if activate() gets called.

Before installing the new build:

  • delete the jar in the addons folder, wait 30sec
  • stop OH
  • Open a terminal and run “openhab-cli”
  • start OH, wait until it’s completely initialized
  • run “tail -f openhab.log” from the terminal
  • copy the jar to the addons folder
  • after 5-15sec you should see some action
  • copy log

I did twice what you recommended above and nothing happened… Here is my log.

I followed also your installation description with the latest available binding.
But nothing showed up in openhab.log regarding shelly binding.

Floods are up and running :slight_smile:
Great job Markus :+1:

1 Like

just to make sure: you copied the binding jar to /addons ?
Do you have any other jar in that folder? Do they show up?

Which other bindings are installed?

this I have to /addons folder

What can I do?

I have a binding for one-wire in my addons folder and it is showing up. But not the binding for shelly.

Question/Feature request.

Sometimes it can be useful to work with visibility…do you think it could make sense to have a channel that shows if a device is reachable/working (e.g in mqtt we have LWT) ? Or it’s better to rely on the network binding and don’t reinvent the wheel?

Just brainstorming…

Thanks :slight_smile:

This should be indicated by the Thing state (online/offline) and not via a seperate channel.
According to the design concept, a Binding should set Thing state to offline ( with additional information like config pending or communication error) when a device is not working properly or reachable.
Especially with battery operated devices, which will be in deep sleep mode most of the time, you will not have any valid monitoring if the device is working.

Yes it is indeed in PaperUI but I cannot show an item in sitemap based on Thing state…or can I?

Yes I understand it cannot be a monitor system for all types of device, I was just thinking about visibility to clean up a bit a crowded sitemap (e.g I have a bunch of smart plug but I don’t always use them all, some are dedicated to “temporary” setup and I don’t always want them around).

As I said: just brainstorming…maybe it was a silly question :upside_down_face: I can achieve the goal with network binding.

No need for the network Binding.
You can request Thing state in a rule and feed a virtual item with the state. This Item can be used for visibility.

This should be already the case:

  • Thing stays in INITIALIZING until the first initialization was completed
    this is also the state for battery powered devices until the device connects
  • The thing goes ONLINE which reachable and responding to the api request
  • When the call fails the Thing goes offline, except it is a battery powered device

The solution for you:

  • you could trigger a rule when a thing state changes
  • send you could set an item
  • which gets displayed in your sitemap

This is a rule, which I created for a similar purpose:

/* ---------- Monitor Pool Status ---------- */

rule "Pentair Controller offline"
when
	Thing "network:servicedevice:c2e9cdf0" changed or
	Thing "pentair:ip_bridge:de80dacd"     changed or
    Thing "pentair:controller:20ae54fa"    changed or
    Thing "pentair:intelliflo:f4c07d6a"    changed
then
	var message = "Status of Pentair equippment changed:\n"
	var wifiOnline       = ThingAction.getThingStatusInfo("network:servicedevice:c2e9cdf0").getStatus()
	var bridgeOnline     = ThingAction.getThingStatusInfo("pentair:ip_bridge:de80dacd").getStatus()
	var controllerOnline = ThingAction.getThingStatusInfo("pentair:controller:20ae54fa").getStatus()
	var pumpOnline       = ThingAction.getThingStatusInfo("pentair:intelliflo:f4c07d6a").getStatus()

	message = "Status WiFi adapter="+wifiOnline.toString() + "\nPentair Bridge="+bridgeOnline.toString()
	message = message + "\nController="+controllerOnline.toString() + "\nPump="+pumpOnline.toString()
    reportAlarm.apply(houseId, mailTo, "Pool equippment alarm!", message, mailFooter)

end
1 Like

I’ve never thought about using Things’ state and rules, thanks I will sure look into it!