# coding=utf-8 from __future__ import absolute_import from sleekxmpp import ClientXMPP import octoprint.plugin class OctoXMPP(octoprint.plugin.EventHandlerPlugin, octoprint.plugin.SettingsPlugin): def initialize(self): jid = self._settings.get(["username"]) passwd = self._settings.get(["password"]) self._xmpp = ClientXMPP(jid, passwd) self._xmpp.add_event_handler("session_start", self._xmpp.send_presence) self._xmpp.connect() self._xmpp.process(block=False) def get_settings_defaults(self): return dict(username="rupert@derflob.de", password="KosselMini", receivers=["derflob@derflob.de", "jabber@dermeb.de"]) def _msg_receivers(self, msg): for r in self._settings.get(["receivers"]): self._xmpp.send_message(mto=r, mbody=msg) def on_event(self, event, data): if (event == "PrintDone"): self._msg_receivers("Zack, Feditsch!") elif (event == "PrintFailed"): self._msg_receivers("Da ging was schief!") elif (event == "PrintPaused"): self._msg_receivers("Druck pausiert.") elif (event == "PrintResumed"): self._msg_receivers("Druck resümiert.") elif (event == "PrintCancelled"): self._msg_receivers("Druck abgebrochen!") else: self._xmpp.send_message(mto="derflob@derflob.de", mbody=event) __plugin_name__ = "OctoXMPP" __plugin_version__ = "0.1.0" __plugin_description__ = "Notify about some Events over XMPP." __plugin_implementation__ = OctoXMPP()