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; } }
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); }