def projector(request, id): projector = get_object_or_404(Projector, pk=id) controller = PJLinkController(projector.pjlink_host, projector.pjlink_port, projector.pjlink_password) try: if request.method == 'POST': new_event_form = ProjectorEventForm(request.POST) if request.POST.get('power', None) == PJLinkProtocol.POWER_ON_STATUS: controller.power_on() new_event_form = ProjectorEventForm(initial={ 'device':projector.id }) elif request.POST.get('power', None) == PJLinkProtocol.POWER_OFF_STATUS: controller.power_off() new_event_form = ProjectorEventForm(initial={ 'device':projector.id }) elif request.POST.get('action', None) == 'delete' and request.POST.get('event_id', None): event = ProjectorEvent.objects.get(pk=int(request.POST.get('event_id', None))) event.delete() new_event_form = ProjectorEventForm(initial={ 'device':projector.id }) elif new_event_form.is_valid(): new_event_form.save() new_event_form = ProjectorEventForm(initial={ 'device':projector.id }) else: new_event_form = ProjectorEventForm(initial={ 'device':projector.id }) audio_mute, video_mute = controller.query_mute() info = ProjectorInfo(controller.query_power(), controller.query_name(), controller.query_manufacture_name(), controller.query_product_name(), controller.query_other_info(), audio_mute, video_mute) for lamp in controller.query_lamps(): info.lamps.append(LampInfo(lamp[0], lamp[1])) except: logging.exception('Could not communicate with the projector') info = None return render_to_response('lighting/projector.html', { 'events':ProjectorEvent.objects.filter(device=projector), 'new_event_form':new_event_form, 'projector':projector, 'projector_info':info }, context_instance=RequestContext(request))
def execute(self): print 'running ', self try: controller = PJLinkController(host=self.device.pjlink_host, port=self.device.pjlink_port, password=self.device.pjlink_password) if self.command == 'on': controller.power_on() elif self.command == 'off': controller.power_off() else: self.tries = self.tries + 1 self.save() return False print 'ran command', self.command except: traceback.print_exc() self.tries = self.tries + 1 self.save() return False self.last_run = datetime.datetime.now() self.tries = 1 self.save() return True
def projector_info(request, id): projector = get_object_or_404(Projector, pk=id) controller = PJLinkController(projector.pjlink_host, projector.pjlink_port, projector.pjlink_password) try: if request.REQUEST.get('power', None) == PJLinkProtocol.POWER_ON_STATUS: controller.power_on() elif request.REQUEST.get('power', None) == PJLinkProtocol.POWER_OFF_STATUS: controller.power_off() if request.REQUEST.get('mute', None) == PJLinkProtocol.ON: controller.set_mute(PJLinkProtocol.VIDEO_MUTE_ON) elif request.REQUEST.get('mute', None) == PJLinkProtocol.OFF: controller.set_mute(PJLinkProtocol.VIDEO_MUTE_OFF) except: logging.exception('Could not control the projector') audio_mute, video_mute = controller.query_mute() info = ProjectorInfo(controller.query_power(), controller.query_name(), controller.query_manufacture_name(), controller.query_product_name(), controller.query_other_info(), audio_mute, video_mute) for lamp in controller.query_lamps(): info.lamps.append(LampInfo(lamp[0], lamp[1])) return HttpResponse(dehydrate_to_xml(info), content_type="text/xml")
def projector(request, id): projector = get_object_or_404(Projector, pk=id) controller = PJLinkController(projector.pjlink_host, projector.pjlink_port, projector.pjlink_password) try: if request.method == 'POST': new_event_form = ProjectorEventForm(request.POST) if request.POST.get('power', None) == PJLinkProtocol.POWER_ON_STATUS: controller.power_on() new_event_form = ProjectorEventForm( initial={'device': projector.id}) elif request.POST.get('power', None) == PJLinkProtocol.POWER_OFF_STATUS: controller.power_off() new_event_form = ProjectorEventForm( initial={'device': projector.id}) elif request.POST.get('action', None) == 'delete' and request.POST.get( 'event_id', None): event = ProjectorEvent.objects.get( pk=int(request.POST.get('event_id', None))) event.delete() new_event_form = ProjectorEventForm( initial={'device': projector.id}) elif new_event_form.is_valid(): new_event_form.save() new_event_form = ProjectorEventForm( initial={'device': projector.id}) else: new_event_form = ProjectorEventForm( initial={'device': projector.id}) audio_mute, video_mute = controller.query_mute() info = ProjectorInfo(controller.query_power(), controller.query_name(), controller.query_manufacture_name(), controller.query_product_name(), controller.query_other_info(), audio_mute, video_mute) for lamp in controller.query_lamps(): info.lamps.append(LampInfo(lamp[0], lamp[1])) except: logging.exception('Could not communicate with the projector') info = None return render_to_response( 'lighting/projector.html', { 'events': ProjectorEvent.objects.filter(device=projector), 'new_event_form': new_event_form, 'projector': projector, 'projector_info': info }, context_instance=RequestContext(request))
def main(): try: action = sys.argv[1] except IndexError: print USAGE_MESSAGE return if action == 'name': controller = PJLinkController(host=sys.argv[2], password=sys.argv[3]) print controller.query_name() elif action == 'off': controller = PJLinkController(host=sys.argv[2], password=sys.argv[3]) controller.power_off() elif action == 'on': controller = PJLinkController(host=sys.argv[2], password=sys.argv[3]) controller.power_on() elif action == 'status': controller = PJLinkController(host=sys.argv[2], password=sys.argv[3]) print controller.query_power() elif action == 'mute': controller = PJLinkController(host=sys.argv[2], password=sys.argv[3]) print controller.set_mute(PJLinkProtocol.VIDEO_MUTE_ON) elif action == 'unmute': controller = PJLinkController(host=sys.argv[2], password=sys.argv[3]) print controller.set_mute(PJLinkProtocol.VIDEO_MUTE_OFF) elif action == 'mute-status': controller = PJLinkController(host=sys.argv[2], password=sys.argv[3]) print "(audio is muted, video is muted): (%s, %s)" % controller.query_mute() elif action == 'projector': projector = MockPJLinkProjector() projector.port = 4352 projector.start() seconds_to_wait = 5 while projector.running == False and seconds_to_wait > 0: time.sleep(1) seconds_to_wait -= 1 if not projector.running: print 'Could not start the projector' return print 'Projector running: %s:%s' % (projector.server.getsockname()[0], projector.server.getsockname()[1]) while True: time.sleep(100) else: print USAGE_MESSAGE return