Ejemplo n.º 1
0
import openhab

from java.lang.management import ManagementFactory

jmx_beans = {
    'Threads' : ManagementFactory.getThreadMXBean(),
    'Memory' : ManagementFactory.getMemoryMXBean(),
}

for bean in ManagementFactory.getMemoryPoolMXBeans():
    jmx_beans[bean.name] = bean

@openhab.rule
class JmxBinding(object):
  # Binding all items in one rule to avoid numerous timers. If some items
  # should be updated at a different frequencies, then multiple rules can be
  # instantiated.
  def __init__(self, item_specs, cronspec="0 * * * * ?"):
    self._item_specs = item_specs
    self._cronspec = cronspec

  def getEventTrigger(self):
    return [ 
        StartupTrigger(),
        TimerTrigger(self._cronspec) 
    ]

  def execute(self, event):
      for item_name, bean_name, attr_path, transform in self._item_specs:
          try:
              bean = jmx_beans.get(bean_name)