original_docstring:  The panel information is in 4 & 5
             5=PanelType e.g. PowerMax, PowerMaster
             4=Sub model type of the panel - just informational, not used
             
docstring: The panel information is in 4 & 5
  5=PanelType e.g. PowerMax, PowerMaster
  4=Sub model type of the panel - just informational, not used
docstring_tokens: The panel information is in 4 & 5 5 = PanelType e . g . PowerMax PowerMaster 4 = Sub model type of the panel - just informational not used
code: def handle_msgtype3C(self, data): # Panel Info Messsage when start the download
          """ The panel information is in 4 & 5
             5=PanelType e.g. PowerMax, PowerMaster
             4=Sub model type of the panel - just informational, not used
             """
          self.ModelType = data[4]
          self.PanelType = data[5]
  
          self.PowerMaster = (self.PanelType >= 7)
          modelname = pmPanelType_t[self.PanelType] or "UNKNOWN"  # INTERFACE set this in the user interface
  
          PanelStatus["Model Type"] = self.ModelType
          PanelStatus["Power Master"] = 'Yes' if self.PowerMaster else 'No'
  
          log.debug("[handle_msgtype3C] PanelType={0} : {2} , Model={1}   Powermaster {3}".format(self.PanelType, self.ModelType, modelname, self.PowerMaster))
  
          if not self.doneAutoEnroll:
              # when here, the first download did not get denied 
              #     we did not get an 08 message back from the panel
              #     we did not get an AB 00 01 request from the panel to auto enroll
              # Remove anything else from the List, we need to restart
              self.pmExpectedResponse = []
              # Clear the list
              self.ClearList()
  
              if not self.ForceStandardMode:
                  self.doneAutoEnroll = False
                  log.info("[handle_msgtype3C] Attempt to auto-enroll")
                  self.DownloadMode = False
                  self.SendMsg_ENROLL()
              else:
                  self.SendCommand("MSG_STATUS")
          
          # We got a first response, now we can continue enrollment the PowerMax/Master PowerLink
          interval = self.getTimeFunction() - self.lastSendOfDownloadEprom
          td = timedelta(seconds=90)  # prevent multiple requests for the EPROM panel settings, at least 90 seconds 
          if interval > td:
              self.lastSendOfDownloadEprom = self.getTimeFunction()
              self.pmPowerlinkEnrolled()
  
              if PanelSettings["AutoSyncTime"]:  # should we sync time between the HA and the Alarm Panel
                  t = datetime.now()
                  if t.year > 2000:
                      year = t.year - 2000
                      values = [t.second, t.minute, t.hour, t.day, t.month, year]
                      timePdu = bytearray(values)
                      #self.pmSyncTimeCheck = t
                      self.SendCommand("MSG_SETTIME", options = [3, timePdu] )
                  else:
                      log.info("[Enrolling Powerlink] Please correct your local time.")
code_tokens: def handle_msgtype3C ( self , data ) : self . ModelType = data [ 4 ] self . PanelType = data [ 5 ] self . PowerMaster = ( self . PanelType >= 7 ) modelname = pmPanelType_t [ self . PanelType ] or "UNKNOWN" PanelStatus [ "Model Type" ] = self . ModelType PanelStatus [ "Power Master" ] = 'Yes' if self . PowerMaster else 'No' log . debug ( "[handle_msgtype3C] PanelType={0} : {2} , Model={1}   Powermaster {3}" . format ( self . PanelType , self . ModelType , modelname , self . PowerMaster ) ) if not self . doneAutoEnroll : self . pmExpectedResponse = [ ] self . ClearList ( ) if not self . ForceStandardMode : self . doneAutoEnroll = False log . info ( "[handle_msgtype3C] Attempt to auto-enroll" ) self . DownloadMode = False self . SendMsg_ENROLL ( ) else : self . SendCommand ( "MSG_STATUS" ) interval = self . getTimeFunction ( ) - self . lastSendOfDownloadEprom td = timedelta ( seconds = 90 ) if interval > td : self . lastSendOfDownloadEprom = self . getTimeFunction ( ) self . pmPowerlinkEnrolled ( ) if PanelSettings [ "AutoSyncTime" ] : t = datetime . now ( ) if t . year > 2000 : year = t . year - 2000 values = [ t . second , t . minute , t . hour , t . day , t . month , year ] timePdu = bytearray ( values ) self . SendCommand ( "MSG_SETTIME" , options = [ 3 , timePdu ] ) else : log . info ( "[Enrolling Powerlink] Please correct your local time." )
short_docstring: The panel information is in 4 & 5
  5=PanelType e.g.
short_docstring_tokens: The panel information is in 4 & 5 5 = PanelType e . g .
comment: # Panel Info Messsage when start the download$SEP$""" The panel information is in 4 & 5
             5=PanelType e.g. PowerMax, PowerMaster
             4=Sub model type of the panel - just informational, not used
             """$SEP$# INTERFACE set this in the user interface$SEP$# when here, the first download did not get denied $SEP$#     we did not get an 08 message back from the panel$SEP$#     we did not get an AB 00 01 request from the panel to auto enroll$SEP$# Remove anything else from the List, we need to restart$SEP$# Clear the list$SEP$# We got a first response, now we can continue enrollment the PowerMax/Master PowerLink$SEP$# prevent multiple requests for the EPROM panel settings, at least 90 seconds $SEP$# should we sync time between the HA and the Alarm Panel$SEP$#self.pmSyncTimeCheck = t