コード例 #1
0
ファイル: Sensorics.py プロジェクト: smok-serwis/smok1
    def execute(self):  # wykonaj odpyt
        self.signalUpdated()
        try:
            Get(sObj.read(self.id, self.dev, self.regtype, self.register))
        except:
            debugLog('ASK FAILED')

        if self.rt1expire != None:
            if datetime.now() > self.rt1expire:
                self.advanceToRunlevel(0)
                self.rt1expire = None
コード例 #2
0
 def run(self):
     try:
         self.xrun()
     except Exception, e:
         self.device.setStat('thread.reader', 0)
         self.device.setStat('online', 0)
         Get(afsObj.offline(self.id))
         try:
             del CONNECTIONS[self.id]
         except:
             pass
         debugLog('reader exception for ' + str(self.id) + ': ' + str(e))
コード例 #3
0
 def finish(self):
     self.device.setStat('thread.handler', 0)
     self.device.setStat('online', 0)
     self.device.setStat('disconnected.on', datetime.now())
     try:
         Get(afsObj.offline(self.id))
     except:
         pass
     debugLog('Finishing for ' + str(self.id))
     try:
         del CONNECTIONS[self.id]
     except:
         pass
コード例 #4
0
    def xhandle(self):
        # Przygotuj statystyki
        self.device.setStat('thread.handler', 1)
        self.device.setStat('transmission.errors', 0)
        self.device.setStat('transmission.successes', 0)
        self.device.setStat('queue.sent', 0)
        self.device.setStat('queue.pending', 0)
        self.device.setStat('connected.on', datetime.now())
        self.device.setStat('online', 1)
        self.device.setStat('last.tick', None)

        Get(afsObj.online(self.id))
        self.device.setStat('thread.handler.status', 'start')

        rant = ReaderThread(proxy(self))
        rant.start()
        mkCONFIRMATION(self.packet)
        self.packet.writeOut()
        debugLog('Passing onto main loop for ' + str(self.id))
        while True:
            self.device.setStat('thread.handler.status', 'WAIT')
            try:
                order = self.orders.get(True, 61)  # czekaj na następny rozkaz
            except:
                debugLog('Disconnected ' + str(self.id) +
                         ' because of no orders')
                raise Exception, 'no orders'

            if isinstance(order, ReadOrder):
                self.stall_incoming()
                rti = [
                    mkGET_HOLDING_RET_ERROR, mkGET_COIL_RET_ERROR,
                    mkGET_INPUT_RET_ERROR
                ]
                rti[order.regtype](self.packet, order.address, order.register)
                self.packet.writeOut()
                self.incoming.put(order.supplyId(self.id))
            elif isinstance(order, WriteOrder):
                self.stall_incoming()
                rti = [mkWRITE_HOLDING, mkWRITE_COIL]
                rti[order.regtype](self.packet, order.address, order.register,
                                   order.value)
                self.packet.writeOut()
                self.incoming.put(order.supplyId(self.id))
                debugLog('sent write')
            elif isinstance(order, NetinfoGetOrder):
                self.stall_incoming()
                mkGIVE_ME_SETTINGS(self.packet)
                self.packet.writeOut()
                self.incoming.put(order.supplyId(self.id))
            elif isinstance(order, NetinfoSetOrder):
                self.stall_incoming()
                mkCOMPLEX_SETTINGS_PRZEPIER(
                    self.packet,
                    (order.iptuple, order.subnettuple, order.routertuple,
                     order.dnstuple, order.target))
                self.packet.writeOut()
                self.incoming.put(order.supplyId(self.id))
            elif isinstance(order, KeepaliveOrder):
                self.stall_incoming()
                mkKEEPALIVE(self.packet)
                self.packet.writeOut()
                self.incoming.put(order.supplyId(self.id))
            elif isinstance(
                    order, RebootOrder
            ):  # Jak najprościej zrobić reboota? Rozłączyć urządzenie.
                return
            elif isinstance(order, SleepOrder):
                sleep(order.seconds)
            elif isinstance(order, VendorinfoGetOrder):
                self.stall_incoming()
                mkGETVENDORINFO(self.packet)
                self.packet.writeOut()
                self.incoming.put(order.supplyId(self.id))
            self.device.setStat('last.tick', datetime.now())
コード例 #5
0
ファイル: __init__.py プロジェクト: smok-serwis/smok1
 def orderRead(self):
     if not self.device.isOnline():
         raise Exceptions.DeviceOffline
     else:
         Get(sObj.read(self.device.devid, self.modbus_nr, self.reg_type, self.register))
コード例 #6
0
ファイル: __init__.py プロジェクト: smok-serwis/smok1
 def write(self, value):
     value = inttouint(value)
     if not self.device.isOnline():
         raise Exceptions.DeviceOffline
     else:
         Get(sObj.write(self.device.devid, self.modbus_nr, self.reg_type, self.register, value))
コード例 #7
0
ファイル: __init__.py プロジェクト: smok-serwis/smok1
 def reread_sensorics(self):
     try:
         Get(afsObj.reread(self.devid))
     except:
         raise Exceptions.DatabaseFailure
コード例 #8
0
ファイル: __init__.py プロジェクト: smok-serwis/smok1
 def reboot(self):
     try:
         Get(sObj.reboot(self.devid))
     except:
         raise Exceptions.DatabaseFailure
コード例 #9
0
ファイル: __init__.py プロジェクト: smok-serwis/smok1
 def sleep(self, amount):
     try:
         Get(sObj.sleep(self.devid, amount))
     except:
         raise Exceptions.DatabaseFailure
コード例 #10
0
ファイル: __init__.py プロジェクト: smok-serwis/smok1
 def signalFastreadRequired(self):
     try:
         Get(afsObj.fastRead(self.devid))
     except:
         raise Exceptions.DatabaseFailure