Пример #1
0
 private function ReceiveCMDData(TXB_Command_Data $ATData)
 {
     $ReplyATDataID = $this->GetIDForIdent('ReplyATData');
     $ReplyATData = $ATData->ToJSONString('');
     if (!$this->lock('ReplyATData')) {
         throw new Exception('ReplyATData is locked');
     }
     //         SendData('AT_Command_Responde('+XB_ATCommandToString(ATData.ATCommand)+')',ATData.data);
     SetValueString($ReplyATDataID, $ReplyATData);
     $this->unlock('ReplyATData');
     if ($ATData->Status != TXB_Command_Status::XB_Command_OK) {
         return;
     }
     switch ($ATData->ATCommand) {
         case TXB_AT_Command::XB_AT_D0:
         case TXB_AT_Command::XB_AT_D1:
         case TXB_AT_Command::XB_AT_D2:
         case TXB_AT_Command::XB_AT_D3:
         case TXB_AT_Command::XB_AT_D4:
         case TXB_AT_Command::XB_AT_D5:
         case TXB_AT_Command::XB_AT_D6:
         case TXB_AT_Command::XB_AT_D7:
         case TXB_AT_Command::XB_AT_P0:
         case TXB_AT_Command::XB_AT_P1:
         case TXB_AT_Command::XB_AT_P2:
             // Neuen Wert darstellen und Variable anlegen und Schaltbar machen wenn Value 4 oder 5 sonst nicht schaltbar
             if (strlen($ATData->Data) != 1) {
                 return;
             }
             switch (ord($ATData->Data)) {
                 case 0:
                 case 1:
                     $VarID = @$this->GetIDForIdent($ATData->ATCommand);
                     if ($VarID != 0) {
                         $this->DisableAction($ATData->ATCommand);
                         IPS_SetVariableCustomProfile($VarID, '');
                     }
                     break;
                 case 2:
                     $VarID = $this->RegisterVariableInteger('A' . $ATData->ATCommand, 'A' . $ATData->ATCommand);
                     if ($VarID != 0) {
                         $this->DisableAction($ATData->ATCommand);
                         IPS_SetVariableCustomProfile($VarID, '');
                     }
                     break;
                 case 3:
                     $VarID = $this->RegisterVariableBoolean($ATData->ATCommand, $ATData->ATCommand);
                     $this->DisableAction($ATData->ATCommand);
                     IPS_SetVariableCustomProfile($VarID, '');
                     break;
                 case 4:
                     $VarID = $this->RegisterVariableBoolean($ATData->ATCommand, $ATData->ATCommand);
                     IPS_SetVariableCustomProfile($VarID, '~Switch');
                     $this->EnableAction($ATData->ATCommand);
                     SetValueBoolean($VarID, false);
                     break;
                 case 5:
                     $VarID = $this->RegisterVariableBoolean($ATData->ATCommand, $ATData->ATCommand);
                     IPS_SetVariableCustomProfile($VarID, '~Switch');
                     $this->EnableAction($ATData->ATCommand);
                     SetValueBoolean($VarID, true);
                     break;
             }
             break;
         case TXB_AT_Command::XB_AT_IS:
             //                if not fDelayTimerActive then
             $IOSample = new TXB_API_IO_Sample();
             $IOSample->Status = TXB_Receive_Status::XB_Receive_Packet_Acknowledged;
             $IOSample->Sample = $ATData->Data;
             $this->DecodeIOSample($IOSample);
             break;
     }
 }
Пример #2
0
 private function SendDataToDevice(TXB_Command_Data $ATData)
 {
     //        IPS_LogMessage('SendDataToDevice:'.$this->InstanceID,  print_r($ATData,1));
     $Data = $ATData->ToJSONString('{A245A1A6-2618-47B2-AF49-0EDCAB93CCD0}');
     IPS_SendDataToChildren($this->InstanceID, $Data);
 }