def __start__(self): self.sysconfig = SystemConfig.fromFile(self['chimera_config']) self.localManager = Manager(self.sysconfig.chimera["host"], 9090) self.offsets = dict( zip(self["focus_filters"].split(), [int(x) for x in self["focus_difference"].split()])) @callback(self.localManager) def filterChange(newFilter, oldFilter): self.log.debug("Moved from %s to %s" % (oldFilter, newFilter)) diff = self.offsets[newFilter] - self.offsets[oldFilter] if diff < 0: diff = int(ceil(abs(diff))) self.log.debug("Moving focuser %i steps IN due filter change" % diff) self.focuser.moveIn(diff) elif diff > 0: diff = int(ceil(abs(diff))) self.log.debug( "Moving focuser %i steps OUT due filter change" % diff) self.focuser.moveOut(diff) self.filterwheel = self.getManager().getProxy(self["filterwheel"]) self.filterwheel.filterChange += filterChange self.focuser = self.getManager().getProxy(self["focuser"])
def setup (self): self.manager = Manager(port=8000) self.manager.addClass(Site, "lna", {"name": "LNA", "latitude": "-22 32 03", "longitude": "-45 34 57", "altitude": "1896", "utc_offset": "-3"}) self.manager.addClass(Meade, "meade", {"device": "/dev/ttyS0"}) @callback(self.manager) def slewBeginClbk(target): print time.time(), "Slew begin. target=%s" % str(target) @callback(self.manager) def slewCompleteClbk(position): print time.time(), "Slew complete. position=%s" % str(position) @callback(self.manager) def parkCompleteClbk(position): print time.time(), "Park complete. position=%s" % str(position) @callback(self.manager) def unparkCompleteClbk(position): print time.time(), "Unpark complete. position=%s" % str(position) self.m = self.manager.getProxy(Meade) self.m.slewBegin += slewBeginClbk self.m.slewComplete += slewCompleteClbk self.m.parkComplete += parkCompleteClbk self.m.unparkComplete += unparkCompleteClbk
def __start__(self): # Reset data self._data = dict() self.setHz(1. / self["query_delay"]) self.localManager = Manager(self["local_manager_ip"], self["local_manager_port"]) # Define callbacks for scheduler actions if self["schedulers"] is not None: self.CallBacks = [] for sched in self["schedulers"]: self.schedname = sched.split('/')[-1] self._data['scheduler_msg_%s' % self.schedname] = dict() self._data['scheduler_state_%s' % self.schedname] = dict() self.CallBacks.append( SchedCallbacks(self.localManager, self.schedname, self._data)) self.getManager().getProxy( sched ).actionBegin += self.CallBacks[-1].SchedActionBeginClbk self.getManager().getProxy( sched ).stateChanged += self.CallBacks[-1].SchedStateChangedClbk self.update_schedulers() self.control()
def setup (self): self.manager = Manager(port=8000) #self.manager.addClass(Site, "lna", {"name": "LNA", # "latitude": "-22 32 03", # "longitude": "-45 34 57", # "altitude": "1896", # "utc_offset": "-3"}) self.manager.addClass(Site, "lna", {"name": "UFSC", "latitude": "-27 36 13 ", "longitude": "-48 31 20", "altitude": "20", "utc_offset": "-3"}) #self.manager.addClass(Meade, "meade", {"device": "/dev/ttyS6"}) #self.manager.addClass(Telescope, "meade", {"driver": "/Meade/meade"}) self.manager.addClass(FakeTelescope, "fake") self.manager.addClass(Telescope, "fake", {"driver": "/FakeTelescope/fake"}) #self.manager.addClass(Telescope, "meade", # {"driver": "200.131.64.134:7666/TheSkyTelescope/0"}) self.tel = self.manager.getProxy(Telescope)
def startup(self): if self.options.daemon: # detach log.info("FIXME: Daemon...") # system config self.config = SystemConfig.fromFile(self.options.config_file, self.options.use_global) # manager if not self.options.dry: log.info("Starting system.") log.info("Chimera version: %s" % find_dev_version() or _chimera_version_) log.info("Chimera prefix: %s" % ChimeraPath.root()) try: self.manager = Manager(**self.config.chimera) except ChimeraException, e: log.error( "Chimera is already running on this machine. Use chimera-admin to manage it." ) sys.exit(1) log.info("Chimera: running on " + self.manager.getHostname() + ":" + str(self.manager.getPort())) if self.options.use_global: log.info("Chimera: reading configuration from %s" % SYSTEM_CONFIG_DEFAULT_GLOBAL) log.info("Chimera: reading configuration from %s" % os.path.realpath(self.options.config_file))
def setup(self): self.manager = Manager(port=8000) from chimera.instruments.fakecamera import FakeCamera self.manager.addClass(FakeCamera, "fake") self.CAMERA = "/FakeCamera/0" FiredEvents = {} self.setupEvents()
class ChimeraGUI: def __init__(self): self.setupGUI() self.setupChimera() self.setupViews() def setupGUI(self): self.builder = gtk.Builder() self.builder.add_from_file( os.path.join(os.path.dirname(__file__), "chimera.xml")) self.mainWindow = self.builder.get_object("mainWindow") self.builder.connect_signals({"window_destroy": self.chimera_quit, "chimera_connect_handler": self.chimera_connect_handler, "chimera_quit_handler": self.chimera_quit}) self.dock = gdl.Dock() self.dock_layout = gdl.DockLayout() if os.path.exists("chimera_gui_layout.xml"): self.dock_layout.load_from_file("chimera_gui_layout.xml") self.dock_layout.load_layout("_-default__") self.builder.get_object("main_area").pack_end(self.dock) self.mainWindow.set_default_size(640, 480) self.mainWindow.show_all() def chimera_quit(self, *arga, **kwargs): # self.dock_layout.save_to_file("chimera_gui_layout.xml") gtk.main_quit() def chimera_connect_handler(self, action): threading.Thread(target=self.showConnectDialog).start() def showConnectDialog(self): dialog = self.builder.get_object("chimera_connect_dialog") response = dialog.run() dialog.hide() dialog.destroy() def setupChimera(self): try: self.sysconfig = SystemConfig.fromFile( SYSTEM_CONFIG_DEFAULT_FILENAME) except IOError, e: logging.exception(e) logging.error( "There was a problem reading your configuration file. (%s)" % e) return False self.localManager = Manager( host=self.sysconfig.chimera["host"], port=9000) self.manager = ManagerLocator.locate( self.sysconfig.chimera["host"], self.sysconfig.chimera["port"])
def setup(self): self.manager = Manager(port=8000) self.manager.addClass(FakeFilterWheel, "fake", {"device": "/dev/ttyS0"}) self.manager.addClass(FilterWheel, "filter", { "driver": "/FakeFilterWheel/0", "filters": "U B V R I" })
def setup(self): self.manager = Manager() from chimera.instruments.sbig import SBIG self.manager.addClass(SBIG, "sbig", {"filters": "R G B LUNAR CLEAR"}) self.FILTER_WHEEL = "/SBIG/0" FiredEvents = {} self.setupEvents()
def setup(self): self.manager = Manager(port=8000) from chimera.instruments.sbig import SBIG self.manager.addClass(SBIG, "sbig") self.CAMERA = "/SBIG/0" FiredEvents = {} self.setupEvents()
def setup(self): self.manager = Manager(port=8000) # fake self.manager.addClass(FakeCamera, "fake") self.manager.addClass(Camera, "cam", {"driver": "/FakeCamera/fake"}) self.manager.addClass(FakeFocuser, "fake") self.manager.addClass(Focuser, "focus", {"driver": "/FakeFocuser/0"}) # real #self.manager.addClass(SBIG, "sbig", {"device": "USB"}) #self.manager.addClass(Camera, "cam", {"driver": "/SBIG/0"}) #self.manager.addClass(OptecTCFS, "optec", {"device": "/dev/ttyS0"}) #self.manager.addClass(Focuser, "focus", {"driver": "/OptecTCFS/0"}) #self.manager.addClass(Autofocus, "autofocus", {"camera" : "200.131.64.203:7666/Camera/0", # "focuser": "******"}) self.manager.addClass(Autofocus, "autofocus", { "camera": "/Camera/0", "focuser": "******" }) @callback(self.manager) def exposeBeginClbk(exp_time): print time.time(), "Expose begin for %.3f s." % exp_time @callback(self.manager) def exposeCompleteClbk(): print time.time(), "Expose complete." @callback(self.manager) def readoutBeginClbk(frame): print time.time(), "Readout begin for %s." % frame @callback(self.manager) def readoutCompleteClbk(frame): print time.time(), "Readout complete for %s." % frame @callback(self.manager) def abortCompleteClbk(): print time.time(), "Abort complete." cam = self.manager.getProxy(Camera) cam.exposeBegin += exposeBeginClbk cam.exposeComplete += exposeCompleteClbk cam.readoutBegin += readoutBeginClbk cam.readoutComplete += readoutCompleteClbk cam.abortComplete += abortCompleteClbk
def setup(self): self.manager = Manager(port=8000) self.manager.addClass( Site, "lna", { "name": "LNA", "latitude": "-22 32 03", "longitude": "-45 34 57", "altitude": "1896" }) from chimera.instruments.optectcfs import OptecTCFS self.manager.addClass(OptecTCFS, "optec", {"device": "/dev/ttyS4"}) self.FOCUSER = "******"
def setup (self): self.manager = Manager(port=8000) #self.manager.addClass(Site, "lna", {"name": "LNA", # "latitude": "-22 32 03", # "longitude": "-45 34 57", # "altitude": "1896"} self.manager.addClass(Site, "lna", {"name": "UFSC", "latitude": "-27 36 13 ", "longitude": "-48 31 20", "altitude": "20"})
def setup(self): self.manager = Manager(port=8000) from chimera.instruments.fakefilterwheel import FakeFilterWheel self.manager.addClass(FakeFilterWheel, "fake", { "device": "/dev/ttyS0", "filters": "U B V R I" }) self.FILTER_WHEEL = "/FakeFilterWheel/0" FiredEvents = {} self.setupEvents()
def setup(self): self.manager = Manager(port=8000) self.manager.addClass( Site, "lna", { "name": "LNA", "latitude": "-22 32 03", "longitude": "-45 34 57", "altitude": "1896" }) from chimera.instruments.fakefocuser import FakeFocuser self.manager.addClass(FakeFocuser, "fake", {"device": "/dev/ttyS0"}) self.FOCUSER = "******"
def test_locate(self): manager = Manager(host='localhost', port=9999) proxy = ManagerLocator.locate() assert proxy.ping() == True assert proxy.URI.address == gethostbyname("localhost") assert proxy.URI.port == 9999 manager.shutdown() # where are you assert_raises(ManagerNotFoundException, ManagerLocator.locate)
def setup(self): self.manager = Manager(port=8000) self.manager.addClass( Site, "lna", { "name": "LNA", "latitude": "-22 32 03", "longitude": "-45 34 57", "altitude": "1896", "utc_offset": "-3" }) self.manager.addClass(FakeFocuser, "fake", {"device": "/dev/ttyS0"}) self.manager.addClass(Focuser, "focus", {"driver": "/FakeFocuser/0"})
def _startSystem(self, options): try: self.sysconfig = SystemConfig.fromFile(options.config) self.localManager = Manager(self.sysconfig.chimera["host"], getattr(options, 'port', 9000)) self._remoteManager = ManagerLocator.locate( self.sysconfig.chimera["host"], self.sysconfig.chimera["port"]) except ManagerNotFoundException: # FIXME: better way to start Chimera site = SiteController(wait=False) site.startup() self._keepRemoteManager = False self._remoteManager = ManagerLocator.locate( self.sysconfig.chimera["host"], self.sysconfig.chimera["port"])
def setup(self): self.manager = Manager(port=8000) self.manager.addClass(Site, "lna", {"name": "UFSC", "latitude": "-27 36 13 ", "longitude": "-48 31 20", "altitude": "20"}) from chimera.instruments.faketelescope import FakeTelescope self.manager.addClass(FakeTelescope, "fake") self.TELESCOPE = "/FakeTelescope/0" self.tel = self.manager.getProxy(self.TELESCOPE) FiredEvents = {} self.setupEvents()
def setup (self): self.manager = Manager(port=8000) self.manager.addClass(Site, "lna", {"name": "UFSC", "latitude": "-27 36 13 ", "longitude": "-48 31 20", "altitude": "20"}) from chimera.instruments.meade import Meade self.manager.addClass(Meade, "meade", {"device": "/dev/ttyS6"}) self.TELESCOPE = "/Meade/0" #self.TELESCOPE = "150.162.110.3:7666/TheSkyTelescope/0" self.tel = self.manager.getProxy(self.TELESCOPE) FiredEvents = {} self.setupEvents()
def setup(self): self.manager = Manager(port=8000) # real self.manager.addClass(SBIG, "sbig", {"device": "USB"}) self.manager.addClass(Camera, "cam", {"driver": "/SBIG/0"}) self.manager.addClass( Site, "lna", { "name": "UFSC", "latitude": "-27 36 13 ", "longitude": "-48 31 20", "altitude": "20" }) self.manager.addClass(Meade, "meade", {"device": "/dev/ttyS6"}) self.manager.addClass(Telescope, "meade", {"driver": "/Meade/meade"}) self.manager.addClass(PointVerify, "Point")
def setup(self): self.manager = Manager(port=8000) #self.manager.addClass(SBIG, "sbig", {"device": Device.USB}) #self.manager.addClass(Camera, "cam", {"driver": "/SBIG/sbig"}) self.manager.addClass(FakeCamera, "fake", {"device": Device.USB}) self.manager.addClass(Camera, "cam", {"driver": "/FakeCamera/fake"}) @callback(self.manager) def exposeBeginClbk(request): print print time.time(), "Expose begin for request %s." % request @callback(self.manager) def exposeCompleteClbk(request): print time.time(), "Expose complete for request %s." % request @callback(self.manager) def readoutBeginClbk(request): print time.time( ), "Readout begin for request %s." % request["filename"] @callback(self.manager) def readoutCompleteClbk(request): print time.time( ), "Readout complete for request %s." % request["filename"] @callback(self.manager) def abortCompleteClbk(): print time.time(), "Abort complete." cam = self.manager.getProxy(Camera) cam.exposeBegin += exposeBeginClbk cam.exposeComplete += exposeCompleteClbk cam.readoutBegin += readoutBeginClbk cam.readoutComplete += readoutCompleteClbk cam.abortComplete += abortCompleteClbk
def test_log(self): class Simple(ChimeraObject): def __init__(self): ChimeraObject.__init__(self) def answer(self): try: raise ChimeraException("I'm an Exception, sorry.") except ChimeraException: self.log.exception("from except: wow, exception caught.") raise ChimeraException("I'm a new Exception, sorry again") manager = Manager() manager.addClass(Simple, "simple") simple = manager.getProxy(Simple) try: simple.answer() except ChimeraException, e: assert e.cause != None log.exception("wow, something wrong")
def _startSystem(self, options, needRemoteManager=True): self.localManager = Manager(getattr(options, 'host', 'localhost'), getattr(options, 'port', 9000), local=True) # if we need a remote Manager, check if it is up, if not, start it if needRemoteManager: try: self._remoteManager = ManagerLocator.locate() self._remoteManager.ping() except ManagerNotFoundException: # FIXME: better way to start Chimera site = SiteController(wait=False) site.startup() self._keepRemoteManager = False self._remoteManager = ManagerLocator.locate() self._remoteManager.ping()
def setup(self): self.manager = Manager(port=8000) self.manager.addClass( Site, "lna", { "name": "LNA", "latitude": "-22 32 03", "longitude": "-45 34 57", "altitude": "1896", "utc_offset": "-3" }) # fake self.manager.addClass(FakeTelescope, "fake", {"skip_init": False}) self.manager.addClass(Telescope, "fake", {"driver": "/FakeTelescope/0"}) self.manager.addClass(FakeCamera, "fake") self.manager.addClass(Camera, "cam", {"driver": "/FakeCamera/0"}) self.manager.addClass(FakeDome, "fake") self.manager.addClass(Dome, "dome", { "driver": "/FakeDome/0", "mode": "Track", "telescope": "/Telescope/0" }) # real #self.manager.addClass(Meade, "meade", {"device": "/dev/ttyS6", "skip_init": False}) #self.manager.addClass(Telescope, "meade", {"driver": "/Meade/meade"}) #self.manager.addClass(SBIG, "sbig", {"device": "USB"}) #self.manager.addClass(Camera, "cam", {"driver": "/SBIG/0"}) #self.manager.addClass(DomeLNA40cm, "lna40", {"device": "/dev/ttyS0"}) #self.manager.addClass(Dome, "dome", {"driver": "/DomeLNA40cm/0", # "mode": "Track", # "telescope": "/Telescope/0"}) @callback(self.manager) def exposeBeginClbk(exp_time): print time.time(), "[cam] Expose begin for %.3f s." % exp_time @callback(self.manager) def exposeCompleteClbk(): print time.time(), "[cam] Expose complete." @callback(self.manager) def readoutBeginClbk(frame): print time.time(), "[cam] Readout begin for %s." % frame @callback(self.manager) def readoutCompleteClbk(frame): print time.time(), "[cam] Readout complete for %s." % frame @callback(self.manager) def camAbortCompleteClbk(): print time.time(), "[cam] Abort complete." cam = self.manager.getProxy(Camera) cam.exposeBegin += exposeBeginClbk cam.exposeComplete += exposeCompleteClbk cam.readoutBegin += readoutBeginClbk cam.readoutComplete += readoutCompleteClbk cam.abortComplete += camAbortCompleteClbk @callback(self.manager) def slewBeginClbk(target): print time.time(), "[tel] Slew begin. target=%s" % str(target) @callback(self.manager) def slewCompleteClbk(position): print time.time( ), "[tel] Slew complete. position=%s" % str(position) @callback(self.manager) def telAbortCompleteClbk(position): print time.time( ), "[tel] Abort complete. position=%s" % str(position) self.tel = self.manager.getProxy(Telescope) self.tel.slewBegin += slewBeginClbk self.tel.slewComplete += slewCompleteClbk self.tel.abortComplete += telAbortCompleteClbk @callback(self.manager) def domeSlewBeginClbk(target): print print time.time(), "[dome] Slew begin. target=%s" % str(target) @callback(self.manager) def domeSlewCompleteClbk(position): print time.time( ), "[dome] Slew complete. position=%s" % str(position) @callback(self.manager) def domeAbortCompleteClbk(position): print time.time( ), "[dome] Abort slew at position=%s" % str(position) dome = self.manager.getProxy(Dome) dome.slewBegin += domeSlewBeginClbk dome.slewComplete += domeSlewCompleteClbk dome.abortComplete += domeAbortCompleteClbk
def setup(self): self.manager = Manager()
def setup(self): self.manager = Manager() self.manager.addClass( Site, "lna", { "name": "LNA", "latitude": "-22 32 03", "longitude": "-45 34 57", "altitude": "1896", "utc_offset": "-3" }) #self.manager.addClass(Meade, "meade", {"device": "/dev/ttyUSB0"}) #self.manager.addClass(Telescope, "tel", {"driver": "/Meade/meade"}) #self.manager.addClass(DomeLNA40cm, "lna40", {"device": "/dev/ttyS0"}) #self.manager.addClass(Dome, "dome", {"driver": "/DomeLNA40cm/0", # "telescope": "/Telescope/0"}) self.manager.addClass(FakeTelescope, "fake") self.manager.addClass(Telescope, "tel", {"driver": "/FakeTelescope/0"}) self.manager.addClass(FakeDome, "fake") self.manager.addClass(Dome, "dome", { "driver": "/FakeDome/0", "telescope": "/Telescope/0" }) @callback(self.manager) def slewBeginClbk(target): print print time.time(), "[dome] Slew begin. target=%s" % str(target) print @callback(self.manager) def slewCompleteClbk(position): print print time.time( ), "[dome] Slew complete. position=%s" % str(position) print @callback(self.manager) def abortCompleteClbk(position): print print time.time( ), "[dome] Abort slew at position=%s" % str(position) print @callback(self.manager) def slitOpenedClbk(position): print print time.time( ), "[dome] Slit opened with dome at at position=%s" % str(position) print @callback(self.manager) def slitClosedClbk(position): print print time.time( ), "[dome] Slit closed with dome at at position=%s" % str(position) print dome = self.manager.getProxy(Dome) dome.slewBegin += slewBeginClbk dome.slewComplete += slewCompleteClbk dome.abortComplete += abortCompleteClbk dome.slitOpened += slitOpenedClbk dome.slitClosed += slitClosedClbk
import logging logging.getLogger("chimera").setLevel(logging.INFO) from chimera.core.manager import Manager from minimo import Minimo manager = Manager(host='localhost', port=8000) manager.addClass(Minimo, "m", config={"option1": "blah blah"}, start=True) manager.wait()
import logging logging.getLogger("chimera").setLevel(logging.WARNING) from chimera.core.manager import Manager from chimera.core.callback import callback from chimera.core.exceptions import printException from minimo import Minimo, MinimoException manager = Manager() m = manager.getProxy(Minimo, "m", host='localhost', port=8000) # method print m.doMethod("bar") # event @callback(manager) def doEventClbk(result): print result m.eventDone += doEventClbk m.doEvent() # exception try: m.doRaise() except MinimoException, e:
def startup(self): if self.options.daemon: # detach log.info("FIXME: Daemon...") # system config try: self.config = SystemConfig.fromFile(self.options.config_file) except (InvalidLocationException, IOError) as e: log.exception(e) log.error( "There was a problem reading your configuration file. (%s)" % e) sys.exit(1) # manager if not self.options.dry: log.info("Starting system.") log.info("Chimera: %s" % _chimera_version_) log.info("Chimera prefix: %s" % ChimeraPath().root()) log.info("Python: %s" % platform.python_version()) log.info("System: %s" % ' '.join(platform.uname())) try: self.manager = Manager(**self.config.chimera) except ChimeraException as e: log.error( "Chimera is already running on this machine. Use chimera-admin to manage it." ) sys.exit(1) log.info("Chimera: running on " + self.manager.getHostname() + ":" + str(self.manager.getPort())) log.info("Chimera: reading configuration from %s" % os.path.realpath(self.options.config_file)) # add site object if not self.options.dry: for site in self.config.sites: self.manager.addClass(Site, site.name, site.config, True) # search paths log.info( "Setting objects include path from command line parameters...") for _dir in self.options.inst_dir: self.paths["instruments"].append(_dir) for _dir in self.options.ctrl_dir: self.paths["controllers"].append(_dir) # init from config log.info("Trying to start instruments...") for inst in self.config.instruments + self.options.instruments: if self.options.dry: print(inst) else: self._add(inst, path=self.paths["instruments"], start=True) log.info("Trying to start controllers...") for ctrl in self.config.controllers + self.options.controllers: if self.options.dry: print(ctrl) else: self._add(ctrl, path=self.paths["controllers"], start=True) log.info("System up and running.") # ok, let's wait manager work if self.wait and not self.options.dry: self.manager.wait()