CurrentCostMQTT.py 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. #!/usr/bin/env python
  2. import gnomeapplet
  3. import gtk
  4. import mosquitto
  5. import sys
  6. class CurrentCostMQTT(gnomeapplet.Applet):
  7. def on_message(self, mosq, obj, msg):
  8. # Message format is "power"
  9. self.label.set_text(msg.payload+"W")
  10. def set_label(self, val):
  11. self.label.set_text(val)
  12. def on_change_background(self, applet, type, color, pixmap):
  13. applet.set_style(None)
  14. applet.modify_style(gtk.RcStyle())
  15. if type == gnomeapplet.COLOR_BACKGROUND:
  16. applet.modify_bg(gtk.STATE_NORMAL, color)
  17. elif type == gnomeapplet.PIXMAP_BACKGROUND:
  18. style = applet.get_style().copy()
  19. style.bg_pixmap[gtk.STATE_NORMAL] = pixmap
  20. applet.set_style(style)
  21. def show_menu(self, widget, event):
  22. print "menu"
  23. def __init__(self, applet, iid):
  24. self.applet = applet
  25. self.label = gtk.Label("0W")
  26. self.event_box = gtk.EventBox()
  27. self.event_box.add(self.label)
  28. self.event_box.set_events(gtk.gdk.BUTTON_PRESS_MASK)
  29. self.event_box.connect("button_press_event", self.show_menu)
  30. self.applet.add(self.event_box)
  31. self.applet.set_background_widget(applet)
  32. self.applet.show_all()
  33. self.mosq = mosquitto.Mosquitto()
  34. self.mosq.on_message = self.on_message
  35. self.mosq.connect("localhost")
  36. self.mosq.loop_start()
  37. self.mosq.subscribe("sensors/cc128/ch1", 0)
  38. self.applet.connect('change-background', self.on_change_background)
  39. def CurrentCostMQTT_factory(applet, iid):
  40. CurrentCostMQTT(applet, iid)
  41. return gtk.TRUE
  42. if len(sys.argv) == 2:
  43. if sys.argv[1] == "-d": #Debug mode
  44. main_window = gtk.Window(gtk.WINDOW_TOPLEVEL)
  45. main_window.set_title("Python Applet")
  46. main_window.connect("destroy", gtk.main_quit)
  47. app = gnomeapplet.Applet()
  48. CurrentCostMQTT_factory(app,None)
  49. app.reparent(main_window)
  50. main_window.show_all()
  51. gtk.main()
  52. sys.exit()
  53. if __name__ == '__main__':
  54. gnomeapplet.bonobo_factory("OAFIID:CurrentCostMQTT_Factory", gnomeapplet.Applet.__gtype__, "MQTT", "0", CurrentCostMQTT_factory)